pandas用众数填充缺失值_数据缺失、混乱、重复怎么办?最全数据清洗指南让你所向披靡...

本文详细介绍了如何处理数据清洗中的常见问题,包括使用pandas查找和处理缺失值(通过热图、百分比列表、直方图),异常值的检测(直方图、箱形图、描述统计学、条形图)以及不必要和不一致数据的识别与处理。提供了多种方法,如丢弃、填充、替换,以及如何标准化类别值、地址等,确保数据质量。
摘要由CSDN通过智能技术生成

import matplotlib.pyplot as pltimport matplotlib.mlab as mlabimport matplotlibplt.style.use('ggplot')from matplotlib.pyplot import figure

%matplotlib inlinematplotlib.rcParams['figure.figsize'] = (12,8)

pd.options.mode.chained_assignment = None

# read the datadf = pd.read_csv('sberbank.csv')

# shape and data types of the dataprint(df.shape)print(df.dtypes)

# select numeric columnsdf_numeric = df.select_dtypes(include=[np.number])numeric_cols = df_numeric.columns.valuesprint(numeric_cols)

# select non numeric columnsdf_non_numeric = df.select_dtypes(exclude=[np.number])non_numeric_cols = df_non_numeric.columns.valuesprint(non_numeric_cols)

从以上结果中,我们可以看到该数据集共有 30,471 行、292 列,还可以辨别特征属于数值变量还是分类变量。这些都是有用的信息。

现在,我们可以浏览「脏」数据类型检查清单,并一一攻破。

开始吧!

缺失数据

处理缺失数据/缺失值是数据清洗中最棘手也最常见的部分。很多模型可以与其他数据问题和平共处,但大多数模型无法接受缺失数据问题。

如何找出缺失数据?

本文将介绍三种方法,帮助大家更多地了解数据集中的缺失数据。

方法 1:缺失数据热图

当特征数量较少时,我们可以通过热图对缺失数据进行可视化。

cols = df.columns[:30] # first 30 columnscolours = ['#000099', '#ffff00'] # specify the colours - yellow is missing. blue is not missing.sns.heatmap(df[cols].isnull, cmap=sns.color_palette(colours))

下表展示了前 30 个特征的缺失数据模式。横轴表示特征名,纵轴表示观察值/行数,黄色表示缺失数据,蓝色表示非缺失数据。

例如,下图中特征 life_sq 在多个行中存在缺失值。而特征 floor 只在第 7000 行左右出现零星缺失值。

9e21e96c7dec0b2d4fa1a89ed6908ca9.png

▲ 缺失数据热图

方法 2:缺失数据百分比列表

当数据集中存在很多特征时,我们可以为每个特征列出缺失数据的百分比。

# if it's a larger dataset and the visualization takes too long can do this.# % of missing.for col in df.columns:pct_missing = np.mean(df[col].isnull)print('{} - {}%'.format(col, round(pct_missing*100)))

得到如下列表,该表展示了每个特征的缺失值百分比。

具体而言,我们可以从下表中看到特征 life_sq 有 21% 的缺失数据,而特征 floor 仅有 1% 的缺失数据。该列表有效地总结了每个特征的缺失数据百分比情况,是对热图可视化的补充。

4b0f887b403c63824981c78e7c129c6d.png

▲ 前 30 个特征的缺失数据百分比列表

方法 3:缺失数据直方图

在存在很多特征时,缺失数据直方图也不失为一种有效方法。

要想更深入地了解观察值中的缺失值模式,我们可以用直方图的形式进行可视化。

# first create missing indicator for features with missing datafor col in df.columns:missing = df[col].isnullnum_missing = np.sum(missing)if num_missing > 0:print('created missing indicator for: {}'.format(col))df['{}_ismissing'.format(col)] = missing

# then based on the indicator, plot the histogram of missing valuesismissing_cols = [col for col in df.columns if 'ismissing' in col]df['num_missing'] = df[ismissing_cols].sum(axis=1)

df['num_missing'].value_counts.reset_index.sort_values(by='index').plot.bar(x='index', y='num_missing')

直方图可以帮助在 30,471 个观察值中识别缺失值状况。

例如,从下图中可以看到,超过 6000 个观察值不存在缺失值,接近 4000 个观察值具备一个缺失值。

e4a1c997963302248bcd2ba548f92cfb.png

▲ 缺失数据直方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值