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

2019-03-18  本文已影响0人  jiedawang

最后一次更新日期: 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方法配合索引器也能对缺失值进行更新,可通过赋值标量对所有列填充同样的值,或是赋值序列对不同列填充不同的值。

上一篇下一篇

猜你喜欢

热点阅读