二手车分析之初步数据分析

清理后的数据如下图
清理后的数据

1、读取数据

import matplotlib.pyplot as plt
import pandas as pd
from pylab import mpl


mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题

car = pd.read_csv('afterclean_ershoucheshuju.csv', encoding='utf-8', sep=',')

name = car['carname']
month = car['carmonth']
mile = car['carmile']
price = car['price']
newprice = car['newprice'] 

2、总的开始分析

(1)首先得到各变量的基本的描述性统计量

#基本常用的描述性统计量
name_describe = name.describe()
month_describe = month.describe()
mile_describe = mile.describe()
price_describe = price.describe()
newprice_describe = newprice.describe()

#类似的表达方式
(maxmonth, minmonth, meanmonth, medianmonth) = (month.max(), month.min(), month.mean(), month.median())
(maxmile, minmile, meanmile, medianmile) = (mile.max(), mile.min(), mile.mean(), mile.median())
(maxprice, minprice, meanprice, medianprice) = (price.max(), price.min(), price.mean(), price.median())
(maxnewprice, minnewprice, meannewprice, mediannewprice) = (newprice.max(), newprice.min(), newprice.mean(), newprice.median())

描述性统计量
然后就是作出四个变量的条形图

#车龄柱状图
#plt.xlim(0,125)
#plt.ylim(0,50)
plt.title('二手车年龄分析')
plt.xlabel('二手车年龄')
plt.ylabel('二手车数量')
plt.hist(month, histtype='bar', rwidth=0.8, bins=40)     #默认形状是bar,rwidth表示两个柱子之间的距离,bins表示柱子的数量
plt.vlines(month_describe['mean'], 0, 20, color='red', label='平均年龄', linewidth=1.5, linestyle='--') 
plt.vlines(medianmonth, 0, 20, color='red',label='中位数年龄', linewidth=1.5)
plt.legend()
plt.show()


#车里程数直方图
plt.title("二手车里程数分析")
plt.xlabel("二手车里程 ")
plt.ylabel("二手车数量")
plt.hist(mile, bins=40)
plt.vlines(mile_describe['mean'], 0, 25, color='red', label='平均里程', linewidth=1.5, linestyle='--')
plt.vlines(medianmile, 0, 25, color='red',label='中位数里程', linewidth=1.5)
plt.legend()
plt.show()


#车价格直方图
plt.title("二手车价格分析")
plt.xlabel("二手车价格 ")
plt.ylabel("二手车数量")
plt.hist(price, bins=40)
plt.vlines(price_describe['mean'], 0, 20, color='red', label='平均价格', linewidth=1.5, linestyle='--')
plt.vlines(medianprice, 0, 30, color='red',label='中位数价格', linewidth=1.5)
plt.legend()
plt.show()


#绘制车原价分布直方图
#plt.xlim(0,500000)
#plt.ylim(0,30)
plt.title("二手车原价格分析")
plt.xlabel("二手车原价格 ")
plt.ylabel("二手车数量")
plt.hist(newprice, bins=60)
plt.vlines(newprice_describe['mean'], 0, 30, color='red', label='平均原价格', linewidth=1.5, linestyle='--')
plt.vlines(mediannewprice, 0, 30, color='red',label='中位数原价格', linewidth=1.5)
plt.legend()
plt.show()



由后面两张图可以看得出来,二手车价格与二手车价格由于两端异常值的存在,对均值的结果影响较大,因此,用中位数来代替均值会更有效。
由图一图二,二手车的使用年限和行驶里程大致呈正态分布。
由图三,二手车卖出的价格大多数在3-10万的价格之间。
由图四,二手车原价大多数在10-20万之间。
图三图四大致呈卡方分布。

(2)接下来生成一个新变量——残值率(price/newprice),画出残值率与行驶月份的散点图。

#残值率
plt.title('二手车残值率分析')
plt.xlabel('二手车年龄')
plt.ylabel('二手车残值率')
canzhilv = price / newprice
plt.scatter(month, canzhilv, c='red', marker='.', linewidths=0.8)      #散点图,marker表示点的形状, linewidths表示点的大小
#plt.plot(month, canzhilv)     #线图
plt.show()


由上图可以看到,二手车的行驶月份与残值率大致呈负相关,即行驶的月份越长,残值率越低,也就是车辆的价值越低,这与我们平时的认知相符合。当车子行驶了大概在50-60个月的时候,二手车的卖出价格大约就是新车原价的一般。
(3)二手车月份与里程数的关系

plt.title('二手车月份与里程数的关系')
plt.xlabel('二手车月份')
plt.ylabel('二手车里程数')
plt.scatter(month, mile, c='red', marker='.', linewidths=0.8)      #散点图,marker表示点的形状, linewidths表示点的大小
plt.show()


可以看到,月份与里程数的散点图大概呈正相关(具体有没有相关关系,后面用统计的方法来检测一下),但是在月份较大时,数据及其离散,因为行驶的路程与个人的习惯与喜好有很大关系,而个体存在差异,因此在后期数据相差较大。但是,在前期,以及大体趋势上看,每十个月行驶十万公里。(这里后期可以看看怎么作出拟合曲线
(4)词云图

#车名出现的数量
a = car.carname.value_counts() 
a[:10]


这就是出现次数前十的车辆。

#读取txt文件中的文字
with open('test.txt', 'r') as f:
    words = f.read()

from wordcloud import WordCloud
word_cloud = WordCloud(font_path = 'C:/Windows/Fonts/simfang.ttf', background_color='white').generate(words)
image = word_cloud.to_image()
image.show()  

#保存图片   
import os.path
image.save(os.path.join('car.jpg'))  

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值