pandas学习 (二) Series和DataFrame操作

数据运算与算术对齐

  • 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

输出:
DataFrame和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")

输出:

字符串相关方法相信大家早已轻车熟路,在此就不多赘述了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容