汽车数据之可视化分析
作者:Irain
GitHub项目链接:https://github.com/Irain-LUO/Resume_Projects.
二手车之家数据之可视化分析
- 1 引用库、数据文件、清洗函数:
- 2 数据簇状分布图
- 2.1 汽车售价簇状分布图
- 2.2 汽车原价簇状分布图
- 2.3 售/原--汽车数量簇状分布图
- 2.4 ln【售价/(原价-售价)】--汽车数量簇状分布图
- 2.5 汽车所在地--汽车数量簇状分布图
- 2.6 车身级别--汽车数量簇状分布图
- 3 线性回归模型与评估模型相关性
- 3.1 驾驶行程与售/原百分比%的线性回归模型
- 3.2 驾驶行程与售/原百分比%的评估模型相关性
- 3.3 上牌时间与售/原百分比%的评估模型相关性
- 3.4 马力与售/原百分比%的线性回归模型
- 3.5 马力与售/原百分比%的评估模型相关性
- 3.6 排量与售/原百分比%的线性回归模型
- 3.6 排量与售/原百分比%的评估模型相关性
- 4 数据分布箱型图
- 4.1 售价与车身级别箱型图
- 4.2 售价与颜色箱型图
- 5 问题:ValueError: Pandas data cast to numpy dtype of object. Check input data with np.asarray(data).
1 引用库、数据文件、清洗函数:
# 作者:Irain
# QQ联系方式:2573396010
# 日期:2020年4月8日%matplotlib inline
import pandas
import xlrd #读取Excel文件的包
import xlsxwriter #将文件写入Excel的包
import os
import sys
import matplotlib as mpl
import matplotlib.pyplot as plt
#解决绘图中的中文字体显示问题
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
#seaborn下的直方图
import seaborn as sns
import warnings
import statsmodels.api as sm # 拟合数据
warnings.filterwarnings('ignore')
data = pandas.read_excel('D:/Information/Working/pycharm/jike/venv/Try/ErShouCheZhiJia/ErSC_Thread/所有汽车清理数据/二手车之家的所有汽车原始数据.xlsx')
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 = data.drop(index=(data.loc[(data['售/原'] / 100)].index)) # 清洗异常数据'[]'
data = data.drop(index=(data.loc[(data['颜色']=='[]')].index)) # 清洗异常数据'[]'
data = data.drop(index=(data.loc[(data['上牌时间'] =='未上牌')].index)) # 清洗异常数据'[]'
data1 = data
data
数据源:
2 数据簇状分布图
2.1 汽车售价簇状分布图
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 = 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轴刻度值之家的差
2.2 汽车原价簇状分布图
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 = 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轴刻度值之家的差
# 给条形图添加数据标注
# for b in plt.bar:
# highth = b.get_height()
# ax.text(b.get_x() + b.get_width()/2 , highth, '%d'&int(highth), ha= 'center',va= 'bottom' )
2.3 售/原–汽车数量簇状分布图
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 = 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轴刻度值之家的差
# 给条形图添加数据标注
# for b in plt.bar:
# highth = b.get_height()
# ax.text(b.get_x() + b.get_width()/2 , highth, '%d'&int(highth), ha= 'center',va= 'bottom' )
2.4 ln【售价/(原价-售价)】–汽车数量簇状分布图
这个图粗糙,情况表示不准确。有待精细化,精确化。
fig, ax = plt.subplots(1,1, figsize=(16, 8))
# fig.suptitle("原价与售价对比",fontsize=20,x=0.5,y=0.95) # 总图标题
ax.set_title("ln【售价/(原价-售价)】--汽车数量图", fontsize=25, color = 'red') # 子图标题
ax.hist(ln,bins = 20)
plt.ylabel("汽车数量", fontsize=20, color = 'blue') #设置X轴Y轴名称 ,字体大小,颜色
plt.xlabel("ln【售价/(原价-售价)】", fontsize=20, color = 'blue')
# plt.ylim(0,6500) #设置Y轴上下限
plt.xlim(-3.5,5.5) #设置X轴上下限
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(0.3)) # x轴刻度值之家的差
ax.yaxis.set_major_locator(MultipleLocator(500)) # y轴刻度值之家的差
# 给条形图添加数据标注
# for b in plt.bar:
# highth = b.get_height()
# ax.text(b.get_x() + b.get_width()/2 , highth, '%d'&int(highth), ha= 'center',va= 'bottom' )
2.5 汽车所在地–汽车数量簇状分布图
# 汽车所在地数量情况
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 = 22)
plt.ylabel("汽车数量", fontsize=20, color = 'blue') #设置X轴Y轴名称 ,字体大小,颜色
plt.xlabel("汽车所在地", fontsize=20, color = 'blue')
# plt.ylim(0,6500) #设置Y轴上下限
# plt.tick_params(labelsize=20)
# plt.tick_params(labelsize=20, fontproperties='SimHei') # 刻度字体大小
# ax.xaxis.set_major_locator(MultipleLocator(10)) # x轴刻度值之家的差.
ax.yaxis.set_major_locator(MultipleLocator(200)) # y轴刻度值之家的差
# labels = ax.get_xticklabels() + ax.get_yticklabels()
# [label.set_fontname('Times New Roman') for label in labels]
# 给条形图添加数据标注
# for b in plt.bar:
# highth = b.get_height()
# ax.text(b.get_x() + b.get_width()/2 , highth, '%d'&int(highth), ha= 'center',va= 'bottom' )
2.6 车身级别–汽车数量簇状分布图
# 车身级别数量图
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')
# plt.ylim(0,6500) #设置Y轴上下限
# plt.tick_params(labelsize=13) # 刻度字体大小
# labels = ax.get_xticklabels() + ax.get_yticklabels()
# [label.set_fontname('Times New Roman', fontproperties='SimHei') for label in labels]
# ax.xaxis.set_major_locator(MultipleLocator(10)) # x轴刻度值之家的差.
# ax.yaxis.set_major_locator(MultipleLocator(500)) # y轴刻度值之家的差
# 给条形图添加数据标注
# for b in plt.bar:
# highth = b.get_height()
# ax.text(b.get_x() + b.get_width()/2 , highth, '%d'&int(highth), ha= 'center',va= 'bottom' )
3 线性回归模型与评估模型相关性
3.1 驾驶行程与售/原百分比%的线性回归模型
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()
3.2 驾驶行程与售/原百分比%的评估模型相关性
# 评估模型相关性
# 接下来是检验一个模型表现是否良好,需要查看它的R值和每个系数的p值。
import statsmodels.api as sm
X = data['驾驶行程/万公里']
y = data['售/原']
X2 = sm.add_constant(X)
est = sm.OLS(y, X2)
est2 = est.fit()
print(est2.summary())
3.3 上牌时间与售/原百分比%的评估模型相关性
# 评估模型相关性
# 接下来是检验一个模型表现是否良好,需要查看它的R值和每个系数的p值。
import statsmodels.api as sm
X = data['month_data']
y = data['售/原']
X2 = sm.add_constant(X)
est = sm.OLS(y, X2)
est2 = est.fit()
print(est2.summary())
est2.pvalues # p值
第一次发布:
作者:Irain
QQ联系方式:2573396010
日期:2020年4月9日
3.4 马力与售/原百分比%的线性回归模型
from sklearn.linear_model import LinearRegression
# data['month_data'] = month
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.xlim(0,300)
plt.scatter(data['马力'], data['售/原'], c='black')
plt.plot( data['马力'], predictions, c='blue', linewidth=2)
# plt.xaxis.set_major_locator(MultipleLocator(1))
plt.xlabel("马力", fontsize= 20, c='blue')
plt.ylabel("售/原比值%", fontsize= 20, c='blue')
plt.show()
3.5 马力与售/原百分比%的评估模型相关性
# 评估模型相关性
# 接下来是检验一个模型表现是否良好,需要查看它的R值和每个系数的p值。
import statsmodels.api as sm
X = data['马力'].astype(float)
y = data['售/原']
X2 = sm.add_constant(X)
est = sm.OLS(y, X2)
est2 = est.fit()
print(est2.summary())
est2.pvalues
3.6 排量与售/原百分比%的线性回归模型
from sklearn.linear_model import LinearRegression
# data['month_data'] = month
X = data['排量/L'].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['排量/L'], data['售/原'], c='black')
plt.plot( data['排量/L'], predictions, c='blue', linewidth=2)
plt.xlabel("排量/L", fontsize= 20, c='blue')
plt.ylabel("售/原比值%", fontsize= 20, c='blue')
plt.show()
3.6 排量与售/原百分比%的评估模型相关性
# 评估模型相关性
# 接下来是检验一个模型表现是否良好,需要查看它的R值和每个系数的p值。
import statsmodels.api as sm
X = data['排量/L']
y = data['售/原']
X2 = sm.add_constant(X)
est = sm.OLS(y, X2.astype(float))
est2 = est.fit()
print(est2.summary())
est2.pvalues
4 数据分布箱型图
4.1 售价与车身级别箱型图
#售价与车身级别箱型图
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['车身级别'])
4.2 售价与颜色箱型图
# cols = ['紧凑型车','中型车','中大型车','紧凑型SUV','中型SUV','mpv','小型车','大型车','小型SUV','跑车']
color = ['紫色','绿色','橙色','黄色',]
for i in color:data['颜色'] = data['颜色'].replace(i,'其他') # 修改series值
data['颜色'].value_counts()
#售价与颜色箱型图
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['颜色'])
5 问题:ValueError: Pandas data cast to numpy dtype of object. Check input data with np.asarray(data).
出错图片展示:
解决方案:
# 评估模型相关性
# 接下来是检验一个模型表现是否良好,需要查看它的R值和每个系数的p值。
import statsmodels.api as sm
X = data['马力']
y = data['售/原']
X2 = sm.add_constant(X)
est = sm.OLS(y, X2.astype(float))
est2 = est.fit()
print(est2.summary())
est2.pvalues
奇怪地方:先把类型转换成float,再检验模型,结果是同一个出错。不解。
第二次发布:
作者:Irain
QQ联系方式:2573396010
日期:2020年4月11日
汽车数据之可视化分析相关推荐
- 【Python】 利用汽车数据进行可视化分析
准备分析汽车油耗 - 从http://fueleconomy.gov/geg/epadata/vehicles.csv.zip(这里请使用科学上网咯~亲测!)下载汽车油耗数据集并解压 - 进入ju ...
- Python爬取天气数据及可视化分析!
来源丨Python之王 Python爬取天气数据及可视化分析 说在前面 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向.相对湿度.空气质量等成为关注的焦点.本 ...
- Python爬取天气数据及可视化分析
Python爬取天气数据及可视化分析 文章目录 Python爬取天气数据及可视化分析 说在前面 1.数据获取 请求网站链接 提取有用信息 保存csv文件 2.可视化分析 当天温度变化曲线图 当天相对湿 ...
- 开源开放 | 图数据交互可视化分析框架 InteractiveGraph v0.3 版本发布
图数据交互可视化分析框架 InteractiveGraph 日前发布 v0.3 版本,下载地址:https://github.com/grapheco/InteractiveGraph/release ...
- python3对拉勾数据进行可视化分析的方法详解
这篇文章主要给大家介绍了关于python3对拉勾数据进行可视化分析的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python3具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 ...
- 图数据交互可视化分析框架InteractiveGraph v0.3版本发布
图数据交互可视化分析框架 InteractiveGraph日前发布v0.3版本,下载地址:https://github.com/grapheco/InteractiveGraph/releases/t ...
- 【计算机专业毕设之基于python爬虫的汽车销量预测可视化分析系统-哔哩哔哩】 https://b23.tv/2gOjMVB
[计算机专业毕设之基于python爬虫的汽车销量预测可视化分析系统-哔哩哔哩] https://b23.tv/2gOjMVB https://b23.tv/2gOjMVB
- 【手把手教你】Python获取财经数据和可视化分析
内容来自:微信公众号:python金融量化 关注可了解更多的金融与Python干货. "巧妇难为无米之炊",找不到数据,量化分析也就无从谈起.对于金融分析者来说,获取数据是量化分析 ...
- Python爬虫-猫眼电影《冰雪奇缘2》评论数据的可视化分析
[TPython爬虫-猫眼电影<冰雪奇缘2>评论数据的可视化分析 项目简介 爬虫,称为网页蜘蛛或网络机器人,用于自动获取互联网上的信息.我通过python爬虫来爬取猫眼电影的评论,对最新热 ...
最新文章
- 细说Debug和Release区别
- 使用ant进行junit测试
- 2021年春季学期-信号与系统-第二次作业参考答案-第六小题
- Too many connections解决方法
- matlab cuda的.cu文件应该放在那里_App Store限免推荐|日历和文件管理、无尽狂奔、Scalak等,共5款...
- 【目标检测】RCNN算法详解
- linux-arm下如何开启tftp传输,arm linux 下移植busybox 的tftp
- linux 15秒 搭建VSFTPD文件服务器
- Java面试题一:字符串的字符分类器
- 关于spring注入
- php 字符串偏移量,注意:PHP中未初始化的字符串偏移量
- Oracle下载 OPatch
- 对分类型变量,进行编码处理——pd.get_dummies()、LabelEncoder()、oneHotEncoder()
- 真的有这么丝滑吗?近日国外一小哥深入研究了KMP算法……
- linux谷歌浏览器无法登陆,使用chrome/chrominum浏览器无法正常登陆deepin论坛的解决...
- mdf2iso linux,MDF to ISO下载
- 博士读一半决定放弃了,丢人吗?
- 内连接、左外连接与右外连接的区别及作用介绍
- Java基础关于接口的案例及多态的引用类型转换练习题
- jpress-项目升级
热门文章
- 嵌入式技术学习分享如何系统提升技能
- ZeroMemory
- 勤哲服务器未能加载文件,Excel插件(ESClient10)加载失败
- 宋飞飞 博客启用 www.songfeifei.com.cn
- 计算机等级考试奖励方案,淮南师范学院学生奖励办法(修订)
- [转载] 中国彩电业的危机、机遇和出路
- 一种叶片叶绿素含量(Leaf chlorophyll content, LCC)测定方法
- LeetCode 729. 我的日程安排表 I 02
- WEB前端攻城小师傅修炼之道
- QQ空间营销策略:寻找用户的痛点