美文网首页
[python][科学计算][pandas]简要使用教程5-增删

[python][科学计算][pandas]简要使用教程5-增删

作者: jiedawang | 来源:发表于2019-03-18 13:19 被阅读0次

    最后一次更新日期: 2019/3/21

    pandas是基于numpy的数据分析库,提供一些更易用的数据模型和大量高效的统计方法。

    使用前先导入模块:
    import pandas as pd
    按需导入以下模块:
    import numpy as np
    import matplotlib.pyplot as plt

    1. 更新

    In [259]: df=pd.DataFrame({'a':[1,2],'b':[3,4]})
    
    In [260]: df.iloc[0,0]=0
    
    In [261]: df[df>2]+=1
    
    In [262]: df
    Out[262]: 
       a  b
    0  0  4
    1  2  5
    
    In [265]: df['a']=[2,1]
    
    In [266]: df
    Out[266]: 
       a  b
    0  2  4
    1  1  5
    
    In [268]: df[:]=[1,2]
    
    In [269]: df
    Out[269]: 
       a  b
    0  1  2
    1  1  2
    

    更新数据的方式与numpy一样,索引筛选数据后直接赋值就行了,可以对所有元素赋值同一个标量,也可赋值同样形状的数据集,或是对DataFrame每行赋值同样的数据序列。

    2. 增加

    In [246]: df=pd.DataFrame({'a':[1,2],'b':[3,4]})
    
    In [247]: df['c']=[5,6]
    
    In [248]: df
    Out[248]: 
       a  b  c
    0  1  3  5
    1  2  4  6
    
    In [252]: df.loc[2]=-1
    
    In [253]: df
    Out[253]: 
       a  b  c
    0  1  3  5
    1  2  4  6
    2 -1 -1 -1
    
    In [254]: df.insert(0,'new',[0,0,0])
    
    In [255]: df
    Out[255]: 
       new  a  b  c
    0    0  1  3  5
    1    0  2  4  6
    2    0 -1 -1 -1
    

    借助索引器可直接为新行或是新列赋值。

    insert方法可以在指定位置插入新列,loc参数指定位置索引,column参数指定列名,value指定新列的数据。

    3. 删除

    In [276]: df=pd.DataFrame({'a':[1,2,3],'b':[4,5,6]})
    
    In [277]: df[df['a']>2]
    Out[277]: 
       a  b
    2  3  6
    
    In [281]: df.drop([0,2])
    Out[281]: 
       a  b
    1  2  5
    
    In [282]: df.drop('a',axis=1)
    Out[282]: 
       b
    0  4
    1  5
    2  6
    

    删除数据最灵活的方法就是通过索引筛去不需要的数据。
    也可通过drop删除指定索引标签的数据,labels指定要删除的标签,可以是标量或是列表,axis参数指定查找索引标签的轴,默认为0。该方法是根据索引标签而不是位置去删除的,所以如果指定标签存在重复,这些数据会一起被删除。

    4. 重构索引

    In [246]: df=pd.DataFrame({'a':[1,2],'b':[3,4]})
    
    In [256]: df.reindex(columns=['a','b','c','d'],fill_value=0)
    Out[256]: 
       a  b  c  d
    0  1  3  0  0
    1  2  4  0  0
    

    reindex方法用于重构索引,可以实现复杂的结构变更,包括行列的增加、删除、移位,index设置新的行索引,columns参数设置新的列索引,已存在的索引会和数据一起被移至新的位置,不存在的将被创建,fill_value参数可以指定新增行列的填充值。

    5. 行列转置

    In [133]: df=pd.DataFrame({'a':[1,2],'b':[3,4]})
    
    In [134]: df
    Out[134]: 
       a  b
    0  1  3
    1  2  4
    
    In [135]: df.T
    Out[135]: 
       0  1
    a  1  2
    b  3  4
    

    DataFrame.T用于实现行列转置,整个数据集将沿左上至右下的对角线翻转。
    Series调用转置方法是无效的,如果需要转置,先调用to_frame方法转为DataFrame

    6. 缺失值填充

    In [95]: df=pd.DataFrame({'a':[np.nan,1,3],'b':[2,np.nan,6]})
    
    In [96]: df
    Out[96]: 
         a    b
    0  NaN  2.0
    1  1.0  NaN
    2  3.0  6.0
    
    In [97]: df.fillna(0)
    Out[97]: 
         a    b
    0  0.0  2.0
    1  1.0  0.0
    2  3.0  6.0
    
    In [98]: df.fillna(df.mean())
    Out[98]: 
         a    b
    0  2.0  2.0
    1  1.0  4.0
    2  3.0  6.0
    
    In [120]: df.dropna()
    Out[120]: 
         a    b
    2  3.0  6.0
    
    In [121]: df[df.isna()]=0
    
    In [122]: df
    Out[122]: 
         a    b
    0  0.0  2.0
    1  1.0  0.0
    2  3.0  6.0
    

    fillna方法用于直接填充缺失值,可传入标量,对所有列填充同样的值,也可传入字典或系列,对不同列填充不同的值。

    dropna方法用于直接删除带却缺失值的行或列:axis参数指定删除行(0)或列(1);how参数指定删除的条件,'all'表示全部值为NaN时删除,'any'表示有一个为NaN时删除;thresh参数设置在出现几个NaN时执行删除。

    isna方法配合索引器也能对缺失值进行更新,可通过赋值标量对所有列填充同样的值,或是赋值序列对不同列填充不同的值。

    相关文章

      网友评论

          本文标题:[python][科学计算][pandas]简要使用教程5-增删

          本文链接:https://www.haomeiwen.com/subject/iryvmqtx.html