← 返回首页
Python3基础教程(九十二)
发表时间:2023-03-27 22:37:26
数据清洗

数据清洗是对一些没有用的数据进行处理的过程。

1.什么是数据清洗

数据清洗:Data Cleaning;数据清洗实际上也是数据质量分析,检查原始数据中是否存在脏数据(不符合要求,或者不能直接进行分析的数据),并且处理脏数据。

常见情况如下: - 缺失值 - 异常值 - 重复数据

2.pandas数据清洗实例

我们以一个电影数据集为例,这个数据集包含了很多信息,例如:演员、导演、预算、总输入,以及 IMDB 评分和上映时间。实际上,可以使用上百万或者更大的数据库。

该测试数据集的百度网盘地址如下:

电影数据集

# -*- coding: utf-8 -*-
# @Time : 2023/3/27 21:18
# @File : datacleaning_demo1.py
# @Software : PyCharm
import numpy as np
import pandas as pd

df = pd.read_csv('movie_metadata.csv')

#显示前十行
print(df.head(10).to_string())

#获取记录的行数和列数
print("记录行数:",df.shape[0])
print("记录列数:",df.shape[1])
#选取某一列
print(df['movie_title'].head(10).to_string())

#删除包含空数据的行
print("-------删除包含空数据的行------")
new_df = df.dropna()
print("清洗前数据条数:",str(len(df)))
print("清洗后记录条数:",str(len(new_df)))
#print(new_df.to_string())

#把国家使用'unknown'空字符串替换
new_df = df['country'].fillna('unknown')

#或者
#new_df = df.country.fillna('unknown');
print("-------将空的county字段替换为unknown-------------")
print(new_df.head(10).to_string())


#subset是可以指定我们想通过哪些属性来进行删除
new_df = df.drop_duplicates(subset=['country'])
print("-------去除country字段的重复值-------------")
print(new_df.head(10).to_string())

print("-------将空的duration字段替换为平均时长-------------")
#mean()方法计算电影的平均时长
avg_duration = df["duration"].mean()

print("电影平均时长:",avg_duration)
new_df = df["duration"].fillna(avg_duration)
print(new_df.head(10).to_string())

print("--------清洗错误的电影评分值----------")
for x in df.index:
  if df.loc[x, "imdb_score"] > 10:
    df.loc[x, "imdb_score"] = 6.0

print(df.head(10).to_string())