Python 数据处理技巧
本篇笔记记录使用 Python 进行数据处理的相关技巧:
- Pandas 缺失数据处理
- 数据类型转换
1. Pandas 处理缺失数据
Pandas 常用的处理缺失数据处理为特定数据值、特定字段指定数据值填充。当处理到两个表数据更新缺失值时,就需要使用其他方法。
1.1 combine_first 填充
不同数据源中均有一些缺失值,那么如何让他们相互“弥补”这些缺失值呢?可以考虑使用 combine_first
1 | In [43]: df1 = pd.DataFrame([[np.nan, 3., 5.], [-4.6, np.nan, np.nan], |
例如上图中根据行列对应的值,df2
的值填充到得了 df1
缺失部分。
1.2 update 更新
上述方法仅仅填充了缺失值,如果需要把所有的值进行更新替换,可以考虑使用 update,这次替换的不仅仅是NaN值,还有其他所有能在右表中找到的相同位置的值。
1 | In [46]: df1.update(df2) |
2. 数据类型
Pandas 读取数据之后不一定能够符合需要或者数据字典说明,因此需要通过相应的方法将数据类型进行转化。
2.1 astype 转换
Pandas
可以使用 astype
进行强制类型转换,转换需要具有几个常用条件:1)数据整洁性,这样可以容易被转换;2)数值类型转换字符串类型比较容易。但是需要注意 ValueError
报错类型:
1 | # 报错:因为对于某些字符串类型或者逗号分隔无法顺利进行数值类型转换 |
这个是说强之类型转换失败,上面两个错误:第一个是因为第一个有逗号及单位符号;第二个错误是因为 cloed
是字符串。
⚠️另外需要注意的是,当使用 astype('bool')
转换为逻辑类型的时候,非空字符串都会被转换为 True
2.2 apply 调用函数
该方法比较 elegent,因为它解决了 astype
对数据不整洁的转化报错的问题。其 核心逻辑 是利用利用函数(同样可以使用 lambda
匿名函数来解决问题)将数据直接解析转换为另一个数据类型。
1 | def convert_currency(val): |
2.3 读取数据参数使用
在明确某些字段是什么类型的情况下,可以在读取阶段通过参数调整。核心逻辑 是 pandas
的 read
方法中的 converters
参数,下面是 read_csv
示例
1 | # convert_currency 是一个函数 |
2.4 特定功能性接口
功能性方法是 pandas 自带方法,它们可以针对某些类型的数据进行转换,例如:pd.to_datetime()
、pd.to_numerical