清理后的数据如下图
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'))