作者: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日

汽车数据之可视化分析相关推荐

  1. 【Python】 利用汽车数据进行可视化分析

    准备分析汽车油耗 -  从http://fueleconomy.gov/geg/epadata/vehicles.csv.zip(这里请使用科学上网咯~亲测!)下载汽车油耗数据集并解压 -  进入ju ...

  2. Python爬取天气数据及可视化分析!

    来源丨Python之王 Python爬取天气数据及可视化分析 说在前面 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向.相对湿度.空气质量等成为关注的焦点.本 ...

  3. Python爬取天气数据及可视化分析

    Python爬取天气数据及可视化分析 文章目录 Python爬取天气数据及可视化分析 说在前面 1.数据获取 请求网站链接 提取有用信息 保存csv文件 2.可视化分析 当天温度变化曲线图 当天相对湿 ...

  4. 开源开放 | 图数据交互可视化分析框架 InteractiveGraph v0.3 版本发布

    图数据交互可视化分析框架 InteractiveGraph 日前发布 v0.3 版本,下载地址:https://github.com/grapheco/InteractiveGraph/release ...

  5. python3对拉勾数据进行可视化分析的方法详解

    这篇文章主要给大家介绍了关于python3对拉勾数据进行可视化分析的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python3具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 ...

  6. 图数据交互可视化分析框架InteractiveGraph v0.3版本发布

    图数据交互可视化分析框架 InteractiveGraph日前发布v0.3版本,下载地址:https://github.com/grapheco/InteractiveGraph/releases/t ...

  7. 【计算机专业毕设之基于python爬虫的汽车销量预测可视化分析系统-哔哩哔哩】 https://b23.tv/2gOjMVB

    [计算机专业毕设之基于python爬虫的汽车销量预测可视化分析系统-哔哩哔哩] https://b23.tv/2gOjMVB https://b23.tv/2gOjMVB

  8. 【手把手教你】Python获取财经数据和可视化分析

    内容来自:微信公众号:python金融量化 关注可了解更多的金融与Python干货. "巧妇难为无米之炊",找不到数据,量化分析也就无从谈起.对于金融分析者来说,获取数据是量化分析 ...

  9. Python爬虫-猫眼电影《冰雪奇缘2》评论数据的可视化分析

    [TPython爬虫-猫眼电影<冰雪奇缘2>评论数据的可视化分析 项目简介 爬虫,称为网页蜘蛛或网络机器人,用于自动获取互联网上的信息.我通过python爬虫来爬取猫眼电影的评论,对最新热 ...

最新文章

  1. 细说Debug和Release区别
  2. 使用ant进行junit测试
  3. 2021年春季学期-信号与系统-第二次作业参考答案-第六小题
  4. Too many connections解决方法
  5. matlab cuda的.cu文件应该放在那里_App Store限免推荐|日历和文件管理、无尽狂奔、Scalak等,共5款...
  6. 【目标检测】RCNN算法详解
  7. linux-arm下如何开启tftp传输,arm linux 下移植busybox 的tftp
  8. linux 15秒 搭建VSFTPD文件服务器
  9. Java面试题一:字符串的字符分类器
  10. 关于spring注入
  11. php 字符串偏移量,注意:PHP中未初始化的字符串偏移量
  12. Oracle下载 OPatch
  13. 对分类型变量,进行编码处理——pd.get_dummies()、LabelEncoder()、oneHotEncoder()
  14. 真的有这么丝滑吗?近日国外一小哥深入研究了KMP算法……
  15. linux谷歌浏览器无法登陆,使用chrome/chrominum浏览器无法正常登陆deepin论坛的解决...
  16. mdf2iso linux,MDF to ISO下载
  17. 博士读一半决定放弃了,丢人吗?
  18. 内连接、左外连接与右外连接的区别及作用介绍
  19. Java基础关于接口的案例及多态的引用类型转换练习题
  20. jpress-项目升级

热门文章

  1. 嵌入式技术学习分享如何系统提升技能
  2. ZeroMemory
  3. 勤哲服务器未能加载文件,Excel插件(ESClient10)加载失败
  4. 宋飞飞 博客启用 www.songfeifei.com.cn
  5. 计算机等级考试奖励方案,淮南师范学院学生奖励办法(修订)
  6. [转载] 中国彩电业的危机、机遇和出路
  7. 一种叶片叶绿素含量(Leaf chlorophyll content, LCC)测定方法
  8. LeetCode 729. 我的日程安排表 I 02
  9. WEB前端攻城小师傅修炼之道
  10. QQ空间营销策略:寻找用户的痛点