随着社会经济快速发展和人民生活水平的不断提高,汽车消费需求增长旺盛,汽车保有量呈现快速上升趋势,与购买新车对比,二手车的高性价比和低门槛成为许多人的首选,这种需求推动了二手车市场的发展。为了更好的适应二手车市场的变化需求,需要通过大量的数据分析客户的需求与喜好,从而获取市场上的竞争优势。本文主要针对瓜子二手车数据进行分析与可视化。
学习目标
(1)了解我国二手车市场的背景与发展前景。
(2)掌握pandas库对数据进行预处理。
(3)掌握Python数据分析、数据可视化等技术。
6.4.1了解二手车数据分析流程
任务描述
基于二手汽车交易网站上二手汽车交易数据,分析本案例的流程。
任务分析
(1)了解我国二手车市场的背景与发展前景。
(2)熟悉案例分析流程。
背景分析
二手汽车之家报价二手车是指在公安交通管理机关登记注册,在达到国家规定的报废标准之前或在经济实用寿命期内服役,并仍可继续使用的机动车辆。二手车英文译为“Second Hand Vehicle”或"Used Car",意为“第二手的汽车”或“使用过的汽车”,在中国称为 “旧机动车”。
随着全国二手车限迁政策的解除,我国二手车流通壁垒逐渐消除,二手车转籍比例逐渐提高,促进了二手车市场的快速发展。据中国汽车流通协会统计数据显示,至2019年全国二手车转籍比例高达27.87%。因2020年受疫情影响,这个比例有所降低。
通常来说,二手车交易可以分为4个模块:选车、检验评估、交易、过户。其中最重要的就是选车,选一辆心仪的车是非常重要的,这对于进行交易的时候,对二手车信息的掌握、车辆价格的估值大概在心里有一个底。
本案例的主要分析的目标为根据二手汽车之家对二手车交易数据进行处理、可视化的操作。
6.4.2分析流程
本项目二手车交易数据分析流程,大致可分为主要步骤如下。
(1)利用Python对二手车数据进行预处理。
(2)对预处理后的数据进行相关性分析,提取出关系较大的指标。
(3)绘制关系图,例如柱状图。
(4)分析指标间存在的关系。
6.4.2.1数据预处理
任务描述
将原始数据导入python中进行数据预处理,去掉缺失值、重复值、异常值等。预处理后将数据进行简单的数据处理,不同的指标针对所需的类型分别处理,并将结果放置在文件output_data文件,后对指标之间进行相关性分析,相关性较大的指标分别绘制散点图,并做分析。
任务分析
对python数据分析分为以下步骤:
(1)数据预处理,去除重复值、缺失值、异常值等。
(2)简单的数据处理,指标提取。
(3)相关性分析。
(4)绘制图形。
了解二手车采集数据基本情况
原始数据总共有38220行71列,具体的字段名称以及数据示例如下表所示。
数据预处理
针对原始数据进行数据预处理,去除重复值、缺失值、异常值等。代码如下所示: import pandas as pd
df = pd.read_csv('二手车数据.csv',low_memory=False)
print('原始数据长度:',len(df)) # 原始数据长度
df.drop_duplicates(inplace=True) # 去除重复值
print('去重后数据长度:', len(df)) # 去重后数据长度
df.dtypes # 查看数据类型
运行错误!未到引用源。,可得结论如下:
数据去重:根据项目要求,在二手车之家网站上针对不同的省份的原始数据38220条,整体筛选去除重复值后剩余34719条,去除重复值3501条。
查看数据的数据类型。
根据上图结果,需要对部分字段进行数据类型转换。
数据类型转换
根据所原始数据,存在异常值,例如:上牌时间有个别为“未上牌”,在厂商指导价中,小部分数据为价
格范围,没有实际给出,针对整体数据来看,存在个别数据没有内容,只有‘-’,对于这部分,我们通过函数replace()函数进行处理。并对后续需要用到的字段进行数据类型转换,例如将上牌时间转为时间戳格式类型,二手价、表显里程、厂商指导价(院)转为数值型数据。
df['二手价'] = df['二手价'].place('¥','') # 去除¥
df['表显里程'] = df['表显里程'].place('万公里','') # 去除万公里
df['厂商指导价(元)'] = df['厂商指导价(元)'].place('万','').replace('16.80-19.80','0')
df[df['上牌时间'].isin(['未上牌'])]
df['上牌时间'] = [str(i).replace('未上牌','2020.10').replace('-','.')for i in df['上牌时间']]
df['上牌时间'] = pd.to_datetime(df['上牌时间'],format='%Y-%m')
df['上市时间'] = [str(i).replace('-','2020.10') for i in df['上市时间']]
df['上市时间'] = pd.to_datetime(df['上市时间'],format='%Y-%m')
df['上牌天数'] = [(pd.to_datetime('2020.10',format='%Y-%m')-i).days for i in df['上牌时间']]
df['上市天数'] = [(pd.to_datetime('2020.10',format='%Y-%m')-i).days for i in df['上市时间']]
df['排量(L)'] = pd.to_numeric(df['排量(L)'].place('-','0'))
df['最大马力(Ps)'] = pd.to_numeric(df['最大马力(Ps)'].place('-','0'))
df['厂商指导价(元)'] = df['厂商指导价(元)'].place(r'暂无报价|-|万|.*?~','0',regex=True)
# 转换数据类型为数值型
df['二手价'] = pd.to_numeric(df['二手价'])
发布评论