搜索
您的当前位置:首页正文

pandas数据分析(6)

来源:好走旅游网

算数运算

和Numpy数组一样,DataFrame和Series也利用了向量化技术。例如:

不过pandas真正强大之初在于自动对齐机制:当对多个DataFrame使用算数运算符时,pandas会自动将它们按照列或行索引对齐。

结果DataFrame的索引和列是两个DataFrame的并集:两个DataFrame中都有的字段会被相加,而其他的部分会显示NaN。如果只想要两个DataFrame都没有的字段显示NaN,可以使用add方法,并将fill_value参数设置为0来代替原本默认的NaN:

 其他运算符也有对应的方法,也是同样的原理:

运算符方法
*mul
+add
-sub
/div
**pow

当算式的操作数是一个DataFrame和一个Series时,默认情况会按索引进行广播。这里index=0的列和index=1的列都加上了Series中对应的值:

如果要按列加上一个Series,则需要在调用add方法时显式地提供axis参数:

处理文本列

        要在含有文本字符串的列上执行相关操作,需要使用str属性。str属性可以访问Python的字符串方法。例如:strip方法移除字符串首位空白,capitalize方法将首字母大写等。 

视图和副本

        对Numpy数组进行切片时,返回的是视图。但是DataFrame情况比较复杂,loc和iloc返回的是视图还是副本难以预测。因此pandas认为你在无意中修改数据时会发出警告:SettingWithCopyWarning。下面是规避这个警告的一些建议:

  • 在原本的DataFrame中设置值,而不是在切片生成的DataFrame中操作
  • 如果想要切片后获得一个单独的DataFrame,应该显式的调用copy:
selection = df.loc[:, ["country", "continent"]].copy()

虽然loc和iloc情况比较复杂,但是诸如df.dropna()或df.sort_value("column_name")这样的DataFrame方法 总是返回副本。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top