当我们从各种数据源中获取数据时,常常会发现数据质量较差、存在缺失、异常值等,这会给后续的数据分析和建模带来困难和错误。因此,数据清洗是数据分析的一个非常重要的环节。在这里,我们会简单介绍pandas进行数据清洗的方法。
1. 数据预处理
数据预处理是数据清洗的第一步。在这个过程中我们需要对数据进行初步的清洗,包括查看数据的基本信息、检查数据的缺失情况、异常值处理等。
- 查看数据基本信息:
我们可以通过pandas的head、tail、info等方法获得数据的基本信息,如数据的行列数、列名、数据类型、非空值等情况。比如:
import pandas as pd
data = pd.read_csv('data.csv')
print(data.head())
print(data.tail())
print(data.info())
- 检查数据缺失情况:
用isnull()方法对数据进行检查,如果值为True则表示对应的数据缺失。我们可以利用sum, mean, any, all等方法对缺失值进行统计和处理。比如:
import pandas as pd
data = pd.read_csv('data.csv')
print(data.isnull().sum()) # 统计每列的缺失值数量
data = data.dropna() # 删除有缺失值的行
- 异常值处理:
异常值一般是指数据中极端偏离常规的数值,这些值可能是数据采集或输入错误所致,也可能是真实存在的极端情况。我们可以通过观察数据分布、修改或删除异常值等方式进行处理。比如:
import pandas as pd
data = pd.read_csv('data.csv')
q1 = data['col'].quantile(0.25) # 计算下四分位数
q3 = data['col'].quantile(0.75) # 计算上四分位数
iqr = q3 - q1 # 计算四分位间距
mask1 = (data['col'] < (q1 - 1.5 * iqr))
mask2 = (data['col'] > (q3 + 1.5 * iqr))
data = data[~mask1 & ~mask2] # 删除异常值所在的行
2. 数据转换
数据清洗的第二步是数据转换。数据转换是指对清洗后的数据进行结构整理、属性合并、列分类等操作,使其成为我们能够进行后续分析的格式。
- 结构整理:
结构整理是将数据按照我们想要的格式进行整理的过程。我们可以通过重塑、合并、轴转换等操作来实现。比如:
import pandas as pd
data1 = pd.read_csv('data1.csv')
data2 = pd.read_csv('data2.csv')
merged_data = pd.concat([data1, data2], axis=1) # 将两个数据按列合并
- 属性合并:
属性合并一般是指在一个数据集中添加外部属性,使用pd.merge方法可以基于某一列或索引进行属性合并。比如:
import pandas as pd
data = pd.read_csv('data.csv')
extra_data = pd.read_csv('extra_data.csv')
merged_data = pd.merge(data, extra_data, on='ID')
示例1
如下是一个包含了学生的一些信息的数据集(student.csv),包括姓名、性别、年级、数学成绩等信息。现在我们要进行数据清洗,删除有缺失值的行,并删除数学成绩小于60分的学生成绩记录。
# 读入数据
import pandas as pd
data = pd.read_csv('student.csv')
data = data.dropna() # 删除有缺失值的行
data = data[data['Math'] >= 60] # 删除数学成绩小于60的学生成绩记录
示例2
我们有两个数据集(data1.csv和data2.csv),其中一个包含了单个学生的信息,包括ID、姓名、年龄等,而另一个数据集则包含了每个学生的成绩。现在我们要将这两个数据集按照ID进行合并,形成一个新的数据集。
# 读入数据
import pandas as pd
data1 = pd.read_csv('data1.csv')
data2 = pd.read_csv('data2.csv')
merged_data = pd.merge(data1, data2, on='ID') # 按照ID进行合并
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用pandas进行数据清洗的方法 - Python技术站