一,数据描述
1,数据解释
- 汽车款式:车辆的品牌,型号
- 汽车售价:车辆实际的成交价
- 汽车原价: 车辆官方指导价
- 行驶里程:车辆目前行驶的里程数
- 保险到期:车辆所购买的保险到期时间
- 上牌时间:车辆上牌的时间
- 车身级别:车辆所处的车辆类型,大致分为轿车,SUV,细分有多种
- 颜色:汽车发动机使用的燃油标号,分为95号,92号,98号
- 汽车所在地:汽车上牌时登记的地区
- 差价:汽车原价-汽车售价
- 售价/原价:汽车售价/汽车原价
2,导入数据
import pandas as pd data = pd.read_csv(‘D:/二手车之家的所有汽车原始数据.csv‘)
二,数据清洗
data = data.drop(‘Unnamed: 0‘, axis=1) data = data[data[‘汽车售价/万‘] < 100] # 清洗少数售价 > 100 data = data[data[‘汽车原价/万‘] < 200] # 清洗少数原价 > 200 data = data[(data[‘售/原‘] * 0.01).index()] data = data.drop(index=(data.loc[(data[‘售/原‘] / 100)].index)) # 清洗异常数据‘[]‘ data = data.drop(index=(data.loc[(data[‘颜色‘]==‘[]‘)].index)) # 清洗异常数据‘[]‘ data = data.drop(index=(data.loc[(data[‘上牌时间‘] ==‘未上牌‘)].index)) # 清洗异常数据‘[]‘
三,数据分析及可视化
3.1 汽车售价簇状分布图
fig , ax = plt.subplots(1,1, figsize=(16, 8)) ax.set_title("汽车售价/万", fontsize=25, color = ‘red‘) # 子图标题 ax.hist(data[‘汽车售价/万‘],bins = 20) plt.ylabel("汽车数量", fontsize=20, color = ‘blue‘) #设置X轴Y轴名称 ,字体大小,颜色 plt.xlabel("汽车售价", fontsize=20, color = ‘blue‘) plt.tick_params(labelsize=20) # 刻度字体大小 labels = ax.get_xticklabels() + ax.get_yticklabels() [label.set_fontname(‘Times New Roman‘) for label in labels] ax.xaxis.set_major_locator(MultipleLocator(5)) # x轴刻度值之家的差 ax.yaxis.set_major_locator(MultipleLocator(500)) # y轴刻度值之家的差
从上图可以看出:
汽车销量最高的可以达到6000万,5万到10万的车辆数目占比最大,基本上越便宜的车数量越多。
3.2 汽车原价簇状分布图
fig , ax = plt.subplots(1,1, figsize=(16, 8)) ax.set_title("汽车原价/万", fontsize=25, color = ‘red‘) # 子图标题 ax.hist(data[‘汽车原价/万‘],bins = 20) plt.ylabel("汽车数量", fontsize=20, color = ‘blue‘) #设置X轴Y轴名称 ,字体大小,颜色 plt.xlabel("汽车原价", fontsize=20, color = ‘blue‘) plt.ylim(0,6500) #设置Y轴上下限 plt.tick_params(labelsize=13) # 刻度字体大小 labels = ax.get_xticklabels() + ax.get_yticklabels() [label.set_fontname(‘Times New Roman‘) for label in labels] ax.xaxis.set_major_locator(MultipleLocator(5)) # x轴刻度值之家的差 ax.yaxis.set_major_locator(MultipleLocator(500)) # y轴刻度值之家的差
3.3 汽车所在地–汽车数量簇状分布图
fig , ax = plt.subplots(1,1, figsize=(16, 8)) ax.set_title("汽车所在地", fontsize=25, color = ‘red‘) # 子图标题 ax.hist(data[‘汽车所在地‘],bins = 22) plt.ylabel("汽车数量", fontsize=20, color = ‘blue‘) #设置X轴Y轴名称 ,字体大小,颜色 plt.xlabel("汽车所在地", fontsize=20, color = ‘blue‘) ax.yaxis.set_major_locator(MultipleLocator(200)) # y轴刻度值之家的差
从上图可以看出:
汽车销量最多的城市是东莞和深圳,汽车销量最少的城市是中山和揭阳。
3.4 车身级别–汽车数量簇状分布图
# 车身级别数量图 fig , ax = plt.subplots(1,1, figsize=(16, 8)) # fig.suptitle("原价与售价对比",fontsize=20,x=0.5,y=0.95) # 总图标题 ax.set_title("车身级别", fontsize=25, color = ‘red‘) # 子图标题 ax.hist(data[‘车身级别‘],bins = 24) plt.ylabel("汽车数量", fontsize=20, color = ‘blue‘) #设置X轴Y轴名称 ,字体大小,颜色 plt.xlabel("车身级别", fontsize=20, color = ‘blue‘)
从上图分析可知:
最受欢迎的车辆是紧凑型车和中型车,最不受欢迎的是跑车和小型SUV
4,线性回归模型与评估模型相关性
from sklearn.linear_model import LinearRegression X = data[‘驾驶行程/万公里‘].values.reshape(-1,1) y = data[‘售/原‘].values.reshape(-1,1) reg = LinearRegression() reg.fit(X, y) print("The linear model is: Y = {:.5} + {:.5}X".format(reg.intercept_[0], reg.coef_[0][0])) #线性回归 predictions = reg.predict(X) plt.figure(figsize=(16, 8)) plt.scatter(data[‘驾驶行程/万公里‘], data[‘售/原‘], c=‘black‘) plt.plot( data[‘驾驶行程/万公里‘], predictions, c=‘blue‘, linewidth=2) plt.xlabel("驾驶里程/万公里", fontsize= 20, c=‘blue‘) plt.ylabel("售/原百分比%", fontsize= 20, c=‘blue‘) plt.show()
从上图分析可知:
售价与原价的比例越低,行驶理程越高。
5,数据分布箱型图
#售价与车身级别箱型图 plt.figure( figsize=(16, 8)) plt.title(‘售价与车身级别箱型图‘, fontsize = 25 ,c = ‘green‘) # 主图主题名、大小、颜色 plt.ylabel("", fontsize=20, color = ‘blue‘) #设置X轴Y轴名称(无效) ,字体大小,颜色 plt.xlabel("", fontsize=20, color = ‘blue‘) plt.tick_params(labelsize=16) # 刻度字体大小 sns.boxplot(y = data[‘售/原‘], x = data[‘车身级别‘])
从上图分析可知:
大型车的售价与原价比例较低,小型SUV的售价与原价比例较高。
6,总结
在中国,人们购买最多的车辆价格在5-10万之间,越发达的城市,它的汽车销量越高。在一众车型中,最欢迎的是紧凑型车和中型车。行驶里程最多的是折扣力度比较大的车辆,大型车的折扣力度最大,小型SUV的折扣力度最小。