pandas DataFrame 缺失值处理(数据预处理)
pandas DataFrame 缺失值处理
·
pandas DataFrame 缺失值处理 (数据预处理)
创建DataFrame数据样例
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(3,3),index=[1,3,4,7,9],columns=['a','b','c'])
df = df.reindex(index = range(5))
df
输出结果如下:
查看各字段是否存在缺失值的几种方法
#查看df中各字段是否存在缺失值
print(df.isna().any())
print("------------")
print(df.isnull().any())
print("------------")
print(np.isnan(df).any())
三种方法输出结果都一样如下:
还有一种我更喜欢的方法: DataFrame 的 info() 方法:
#用info()方法查看非空值情况 (推荐)
df.info()
输出结果如下:
输出结果主要看框出来的两部分,从结果可以看出,DataFrame共有5条数据,a、b、c三个字段中的非空数据都只有三个,因此可以判断出每个字段都存在缺失值。
缺失值的处理方法
- 方法一,用dropna() 方法直接丢弃含有缺失值的数据:
test = df.dropna()
test
可以看到缺失值含有缺失值的数据被直接丢弃了,在真实的处理任务中,如果缺失值较少,整体数据量又很大时,直接丢弃缺失值对整体的影响不大。
- 方法二,填充法。可以用某些数值来填充缺失值,如指定用数值0填充,或者是更常用的用前后值填充、均值填充、众数填充等。
用前后值填充:
print(df.fillna(method='ffill'))#用前一个值填充
print(df.fillna(method='backfill'))#用后一个值填充
用均值填充:
d = pd.DataFrame(np.arange(9).reshape(3,3),index = [0,1,3])
d = d.reindex(index = range(5))
print(d)
print(d.fillna(d.mean()))#每列的均值填充
填充前:
填充后:
更多推荐
已为社区贡献1条内容
所有评论(0)