pandas数据缺失值处理
import pandas as pd
from numpy import NaN
import numpy as np
df = pd.DataFrame([[1,None,NaN],[1,1,NaN],[NaN,None,NaN],[0,None,NaN]])
print(df,"\n")
#判断是否是空值,缺失值(None空值,NaN缺失值),在是的位置上打上True,否则打上False
print(df.isnull(),"\n")
# axis默认值为0表示行,1为列,how参数值为any与all,all表示删除全部有NaN的行,
# thresh参数为整数类型表示删除条件,如3,表示一行(列)至少有三个非NaN值才会被保留
print(df.dropna(axis = 0, how = 'all'),"\n")
print(df.dropna(axis = 1, thresh = 2),"\n")
print(df.dropna(axis = 0, thresh = 2),"\n")
# fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
# method: {‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None。定义了填充空值的方法,
# pad / ffill表示用前面行/列的值,填充当前行/列的空值,
# backfill / bfill表示用后面行/列的值,填充当前行/列的空值。
# value表示值,axis表示行或列,inplace:是否原地替换。布尔值,默认为False,即是否更改原数据框数据
#用0填充所以的缺失值
b1 = df.fillna(0)
print(b1)
#用前一行数据填充缺失值
b2 = df.fillna(method="ffill")
print(b2)
#用后一行数据填充缺失值
b3 = df.fillna(method="bfill")
print(b3)
#用一列的均值, 最大值,最小值,众数等等替换数据填充缺失值
print(df.columns)
for _ in list(df.columns[df.isnull().sum() > 0]):
#mean_val = df[_].mean() # 计算缺失值这列的均值
# max_val = df[_].max() # 计算缺失值这列的最大值
# max_val = df[_].min() # 计算缺失值这列的最小值
# mode_val = df[_].mode() # 计算缺失值这列的众数
df[_].fillna(mean_val, inplace=True)
print(df)
# 指定列处理
# df.fillna(value = {"列名1":replace_values1,"列名2":replace_values2,.......
# "列名n":replace_valuesn})
关注公众号FF工作室,代做数据分析数学建模,爬虫,R语言与python,hadoop大数据系列软件安装等等,定期有Demo看哦