1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > pandas数据清洗(缺失值 异常值和重复值处理)

pandas数据清洗(缺失值 异常值和重复值处理)

时间:2020-10-03 01:48:21

相关推荐

pandas数据清洗(缺失值 异常值和重复值处理)

1. 缺失值处理

处理方式:

直接删除填充缺失值真值转换法不处理 ( 数据分析和建模应用中很多模型对于缺失值有容忍度或灵活的处理方法,因此在预处理阶段可以不做处理。常见的能够自动处理缺失值的模型包括:KNN、决策树和随机森林、神经网络和朴素贝叶斯 )

pandas中用到的的api:

dataframe.isnull() #判断是否有缺失值dataframe.dropna() #删除缺失值dataframe.fillna()#填充缺失值

示例代码:

import numpy as npimport pandas as pdfrom sklearn.impute import SimpleImputer

# 生成一份缺失数据# 生成一份数据df = pd.DataFrame(np.random.randn(6, 4), columns=['col1', 'col2', 'col3', 'col4'])# 增加缺失值df.iloc[1:2, 1] = np.NANdf.iloc[4, 3] = np.nan # 上面两种写法都行df

# 查看是否有缺失值df.isnull()

# 获取含有NAN的列nan_col1 = df.isnull().any()# 获取全部为NAN的列nan_col2 = df.isnull().all()print(nan_col1)print(nan_col2)

# 直接删除含有NaN的行的记录df2 = df.dropna()df2

#使用sklearn填充缺失值nan_model = SimpleImputer(missing_values=np.nan, strategy='mean') # 建立替换规则:将值为NaN的缺失值以均值做替换nan_result = nan_model.fit_transform(df) # 应用模型规则nan_result

# 使用pandas填充缺失值nan_result_pd1 = df.fillna(method='backfill') # 用后面的值替换缺失值nan_result_pd1

# 使用pandas填充缺失值nan_result_pd2 = df.fillna(method='bfill', limit=1) # 用后面的值替代缺失值,限制每列只能替代一个缺失值nan_result_pd2

# 使用pandas填充缺失值nan_result_pd3 = df.fillna(method='pad') # 用前面的值替换缺失值nan_result_pd3

# 使用pandas填充缺失值nan_result_pd4 = df.fillna(0) # 用0替换缺失值nan_result_pd4

# 使用pandas填充缺失值nan_result_pd5 = df.fillna({'col2': 1.1, 'col4': 1.2}) # 用不同值替换不同列的缺失值nan_result_pd5

# 使用pandas填充缺失值nan_result_pd6 = df.fillna(df.mean()['col2':'col4']) # 用平均数代替,选择各自列的均值替换缺失值nan_result_pd6

nan_result_pd6 = df.fillna(df.mean()) # 用平均数代替,选择各自列的均值替换缺失值nan_result_pd6

2. 异常值处理

处理方式:

保留删除用统计量或预测量进行替换d

pandas中用到的api:

dataframe.mean() #计算平局值dataframe.std() #计算标准差

示例代码:

import pandas as pd# 生成异常数据df = pd.DataFrame({'col1': [1, 120, 3, 5, 2, 12, 13],'col2': [12, 17, 31, 53, 22, 32, 43]})df

# 通过Z-Score方法判断异常值df_zscore = df.copy() # 复制一个用来存储Z-score得分的数据框cols = df.columns # 获得列表框的列名for col in cols:df_col = df[col] # 得到每一列的值z_score = (df_col - df_col.mean()) / df_col.std() # 计算每一列的Z-score得分df_zscore[col] = z_score.abs() > 2.2 # 判断Z-score得分是否大于2.2,如果是则是True,否则为Falsedf_zscore

# 删除异常值所在的行df_drop_outlier = df[df_zscore['col1'] == False]df_drop_outlier

3. 数据去重

pandas中用到的api:

dataframe.duplicated() # 判断重复数据记录dataframe.drop_duplicates() # 删除数据记录中所有列值相同的记录

示例代码:

import pandas as pd # 导入pandas库# 生成重复数据data1, data2, data3, data4 = ['a', 3], ['b', 2], ['a', 3], ['c', 2]df = pd.DataFrame([data1, data2, data3, data4], columns=['col1', 'col2'])df

# 判断重复数据isDuplicated = df.duplicated() # 判断重复数据记录 isDuplicated

# 删除重复值# 删除数据记录中所有列值相同的记录df1 = df.drop_duplicates()df1

# 删除数据记录中col1值相同的记录df2 = df.drop_duplicates(['col1'])df2

# 删除数据记录中col2值相同的记录df3 = df.drop_duplicates(['col2'])df3

# 除数据记录中指定列(col1/col2)值相同的记录df4 = df.drop_duplicates(['col1', 'col2'])df4

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。