Pandas数据清洗

数据清洗

目录

  1. 缺失值处理
  2. 重复值处理
  3. 异常值检测与处理
1
2
import pandas as pd 
pd.set_option('display.unicode.east_asian_width',True)

1. 缺失值处理

1.1 导入文件

1
2
df = pd.read_excel('F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/37/TB2018.xls')
df.head()

1.2. 查看索引,数据类型和内存信息,初步查看是否有缺失值

1
2
3
4
5
6
print(df.info())
"""
通过查看表格内存与数据信息,可以得知:
1. 有6列,10行数据;
2. 宝贝数量和类别各有2个缺失值。
"""

1.3. 通过空值判断是否具有缺失值(只适用于数据量较小的情况)

1
2
print(df.isnull())
print(df.notnull())

1.4. 缺失值删除与填充

通过分析缺失值重要性以及缺失值数量,来判断删除还是填充缺失值。

比如,通过上述缺失值分析,宝贝数量为重要索引,缺少该值,则该记录将在很大程度上无法发挥分析作用,且缺失值较少,若将其删除,不影响整体分析,则可以将其所在记录删除。

但是,类别不属于重要分析项目,可以有缺失值,也可以根据表格对齐填充。

1
2
3
4
5
6
7
8
9
10
11
# 删除所有包含缺失值的记录
df1 = df.dropna()

# 删除特定索引列中缺失值所在的记录
df2 = df[df['宝贝总数量'].notnull()]

# 缺失值填充(将类别列中的缺失值填充为‘图书’)
df2['类别'] = df2['类别'].fillna('图书')

print(df1)
print(df2)

2. 重复值处理

2.1. 导入文件

1
2
3
df = pd.read_excel(
'F:/project2_pandas/Python数据分析从入门到精通/MR/Code/03/40/1月.xlsx')
df.head()

2.2. 判断每一行数据是否重复(完全相同)

1
df.duplicated()

2.3. 去除全部的重复数据(默认保留重复数据的第一行)

1
df1 = df.drop_duplicates()

2.4. 去除指定列的重复数据(默认保留重复数据的第一行)

1
df2 = df.drop_duplicates(['买家会员名'])

2.5. 去除制定列的重复数据,保留重复行的最后一行

1
df3 = df.drop_duplicates(['买家会员名'],keep='last')

2.6. 去除指定列的重复数据,不保留所有重复行

1
df4 = df.drop_duplicates(['买家会员名'],keep=False)

2.7. 删除重复行后,保留副本

1
df5 = df.drop_duplicates(['买家会员名','买家支付宝账号'], inplace=False)

2.8. 各步骤执行结果打印

1
2
3
4
5
6
print(df)
print(df1)
print(df2)
print(df3)
print(df4)
print(df5)

3. 异常值的检测与处理

在数据分析中异常值是指超出或者低于正常范围的值,检测方法如下:

(1) 根据给定的范围进行判断,不在范围内即为异常值。

(2) 均方差。

在统计学中,如果一个数据分布近似正态分布,
那么大约68%的数据会在均值的一个标准差范围内,
大约95%会在两个标准差范围内,
大约99.7%会在3个标准差范围内。

(3) 箱形图。
箱形图是显示一组数据分散情况资料的统计图。
它可以将数据通过四分位数的形式进行图形化描述。
箱形图通过上限和下限作为数据分布的边界。
任何高于上限或者低于下限的数据都可以认为是异常值。

但是,具体如何操作目前还没给出,大概要过几章才有

处理异常值的方法:
(1) 删除

(2) 填充

(3) 当特殊情况处理,研究为何出现异常值。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!