Pandas数据分析实战02
Pandas数据分析实战02
任务目标
读取 guazi.csv 二手车数据
• 1.重命名列名(修改为中文或英文)
• 2.异常值处理
• 3.去除重复值
• 4.缺失值的处理
• 5.年份,里程,售价,原价所在列的数据进行转换(数值型数据)
• 6.查看各品牌品骏售价
数据准备
代码展示
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 设定文件名称
file_name = "guazi.csv"
# 设定文件路径
file_path = "D:\\Coding\\Python\\LogicCoding\\Data Analyze\\瓜子\\"
# 用pandas读取csv文件
df_gz = pd.read_csv(file_path + file_name)
df_gz.head()
df_gz.info()
通过观察,发现原数据的四个缺陷:
1,列名不规范;
2,有重复值;
3,有缺失值
4,行数据有异常数据。
# 重命名列名
df_gz.columns = ['Type', 'Year', 'Mileage', 'Site','Sale_Price','Original_Price']
df_gz.head()
# 去除异常数据
df_gz = df_gz[df_gz["Type"] != "leixing"]
df_gz.head()
# 数据去重
df_gz.drop_duplicates(inplace=True)
# 去除 原价 这一列的缺失值 (其实本人更喜欢用品牌的均值代替)
df_gz.dropna(axis=0, inplace=True)
df_gz.info()
到这里数据清洗完毕,下一步开始数据转换
# 年份,里程,售价,原价所在列的数据进行转换(数值型数据)
# 方法一:替换单位的字符为空字符串,再将剩下的数字转换为数值型
"""
columns = ["Year", "Mileage", "Sale_Price", "Original_Price"]
units = ["年", "万公里", "万", "万"]
for i in range(len(units)):
df_gz[columns[i]].str.replace(units[i], "").astype("float")
"""
# 方法一不推荐,因为遇到单位不统一的情况很难处理。
# 方法二:使用正则表达式匹配数字
columns = ["Year", "Mileage", "Sale_Price", "Original_Price"]
for i in range(len(columns)):
if i == 0:
df_gz[columns[i]] = df_gz[columns[i]].str.extract("(\d+)").astype("int")
else:
df_gz[columns[i]] = df_gz[columns[i]].str.extract("(\d+.\d+)").astype("float")
df_gz
# 求各品牌的平均售价
type_sale = df_gz.groupby("Type")["Sale_Price"].mean()
type_sale
# 保存文件
type_sale.to_excel(file_path + "车型平均售价.xlsx")