数据运算与算术对齐
- add() 加法,相当于(+)
- sub() 减法,相当于(-)
- div() 除法,相当于(/)
- mul() 乘法,相当于(*)
df.add(df, fill_value=0)#相当于df中的nan值以0代替 然后*2
df.add(df).fillna(0)#df*2 然后将其中的nan值以0代替
DataFrame和Series之间的运算
两种类型运算是将Series的索引匹配到DataFrame的列,然后沿着行一直向下广播:
frame = DataFrame(np.arange(12).reshape(4, 3),
columns=list("bde"),
index=["Utah", "Ohio", "Texas", "Oregon"])
series = frame.iloc[0]
frame + series
输出:函数的应用和映射
- numpy的大部分元素操作方法都可以用来操作pandas对象:
frame.sum()#输出的是每列的元素之和
frame.sum(axis=1)#axis=1时求每行元素之和
输出分别是:- apply方法
传入一个函数,默认对各列进行操作,axis设为1时按行进行操作
该方法DataFrame和Series都可以使用
f = lambda x: x.max() - x.min()#l求极差
frame.apply(f, axis=1)#对行或列进行f操作
输出:- applymap和map
applymap是DataFrame的元素级操作,map是Series的元素级操作
frame1 = DataFrame(np.random.randn(12).reshape(4, 3))
f3 = lambda x: "%.2f" % x#保留小数后2位
frame1.applymap(f3)
输出:值排序
frame1.sort_values(by=0, axis=1, ascending=False)#根据行索引'0'降序排序
输出:判断索引是否重复
frame.index.is_unique DataFrame和Series通用, 输出值为Bool值
获取唯一值
unique(),该方法可以操作Series,从中抽取所有的唯一值并返回一个ndarray
计算Series各个值中出现的频率
value_counts()
frame["b"].value_counts(sort=True)#默认返回排好序的Series
输出:判断所有元素是否在某个集合里
frame.isin([]),返回一个元素为Bool类型的pandas对象
判断每个元素是否为None
frame.isnull(),返回一个元素为Bool类型的pandas对象
对缺失值进行操作总结
- dropna()
- fillna()
- isnull()
- notnull()
字符串操作
将Series当做list来看,字符串操作都大同小异,使用时要先调用str属性返回StringMethods对象进行操作
print(frame1[0].str)
frame1[0].str.find("5")
输出:字符串相关方法相信大家早已轻车熟路,在此就不多赘述了