Python 清洗原始数据使用方法攻略
在实际数据处理过程中,原始数据往往包括许多无效、缺失的数据,这些数据需要进行清洗,才能进一步进行数据分析和建模。Python作为一门强大的编程语言,在数据清洗方面有着很出色的表现。下面介绍Python清洗原始数据的使用攻略。
1. 导入原始数据
首先,我们需要将原始数据导入到Python中。导入原始数据通常有很多种方法,可以使用Pandas、CSV等库。这里以Pandas为例来导入数据,假设我们有一个名为”example.csv”的数据文件,以下是代码示例:
import pandas as pd
# 导入数据
df = pd.read_csv("example.csv")
2. 查看原始数据
导入数据后,我们需要查看原始数据,对数据特征有一个基本了解,判断可以进行哪些清洗操作。以下是展示数据前5行的代码示例:
# 展示数据前5行
print(df.head())
3. 缺失值处理
在数据清洗过程中,缺失值处理是关键,处理好缺失值对后续数据分析与建模较为重要。以下是缺失值处理的一些示例代码:
删除缺失值
# 删除缺失值
df.dropna(inplace=True)
填充缺失值
# 使用均值填充缺失值
mean_age = df['age'].mean()
df['age'].fillna(mean_age, inplace=True)
# 使用中位数填充缺失值
median_income = df['income'].median()
df['income'].fillna(median_income, inplace=True)
# 使用最常见值填充缺失值
most_common_value = df['gender'].value_counts().idxmax()
df['gender'].fillna(most_common_value, inplace=True)
4. 异常值处理
异常值经常会影响到数据的准确性,因此需要进行处理。以下是异常值处理的一些示例代码:
利用3倍标准方差原则处理异常值
# 利用3倍标准方差原则处理异常值
df = df[np.abs(df["income"]-df["income"].mean())<=(3*df["income"].std())]
利用箱线图法处理异常值
# 利用箱线图法处理异常值
import seaborn as sns
sns.boxplot(x=df['age'])
Q1 = df['age'].quantile(0.25)
Q3 = df['age'].quantile(0.75)
IQR = Q3-Q1
df = df[(df['age'] > Q1-1.5*IQR) & (df['age'] < Q3+1.5*IQR)]
5. 数据类型转换
在清洗数据时,数据类型转换也是常常需要进行的操作。以下是数据类型转换的一些示例代码:
时间类型转换
# 时间类型转换
df["date"] = pd.to_datetime(df["date"], format="%Y-%m-%d %H:%M:%S")
类别类型转换
# 类别类型转换
df['gender'] = df['gender'].astype('category')
6. 存储清洗后结果
清洗好原始数据后,我们需要将清洗处理后的数据保存到一个新的文件中,以便进行后续的数据分析与建模。以下是保存清洗后的结果的代码示例:
# 存储清洗后结果
df.to_csv("cleaned_example.csv",index=False)
至此,Python清洗原始数据使用方法的攻略就介绍完毕了。下面将通过两个具体的示例来展示使用过程。
示例1:处理缺失值
在处理缺失值时,假如我们要删除缺失值,示例代码如下:
# 导入数据
import pandas as pd
df = pd.read_csv("example.csv")
# 展示数据前5行
print(df.head())
# 删除缺失值
df.dropna(inplace=True)
# 存储清洗后结果
df.to_csv("cleaned_example.csv",index=False)
在清洗示例数据后,我们可以发现,清洗前数据总数为100,清洗后数据总数为94,删除了6个包含缺失值的行,数据质量也有明显提高。
示例2:处理异常值
在处理异常值时,假如我们想要利用3倍标准方差原则处理异常值,示例代码如下:
# 导入数据
import pandas as pd
df = pd.read_csv("example.csv")
# 利用3倍标准方差原则处理异常值
df = df[np.abs(df["income"]-df["income"].mean())<=(3*df["income"].std())]
# 存储清洗后结果
df.to_csv("cleaned_example.csv",index=False)
在清洗示例数据后,我们可以发现,清洗前数据总数为100,清洗后数据总数为96,删除了4个异常值,数据整体更加准确。