数据分析案例-二手车价格预测

简介: 数据分析案例-二手车价格预测

数据获取

我们利用scrapy爬虫框架对58同城上海二手车数据进行抓取,部分数据如下:

加载数据

#数据分析及可视化的包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
#通过pandas读取数据,以便进一步分析
dataset = pd.read_csv("data.csv")
dataset.head()

数据预处理

查看描述性数据

dataset.describe()


接着我们根据tag这一列提取特征值

tag_list = list()
dataset['tag'].apply(lambda x:tag_list.extend(x.split("_")))
tag_list = list(set(tag_list))
tag_list



接着我们将这一列与原数据进行合并,并将tag_list里的值用0填充

tag_df = pd.DataFrame(columns=tag_list)
df = pd.concat([dataset, tag_df], sort=False)
df[tag_list] = df[tag_list].fillna(0)
df.head()


接着我们将tag出现的记为1,并且删除原数据tag这一列数据

#将tag中的数据 处理为数字
def set_tag_status(series):
    tag = series['tag'].split("_")
    for t in tag:
        series[t] = 1
    return series
df[tag_list] = df[['tag',*tag_list]].apply(lambda x:set_tag_status(x),axis = 1).drop('tag',axis=1)
df = df.drop('tag',axis=1)
df.head()


标题没用,删除

#删除标题 
df = df.drop('title',axis=1)

数据分析

分析平均价格最高的前10个品牌并做可视化

#分析平均价格最高的前10个品牌
num_top = df.groupby('brand')['price'].mean().sort_values(ascending=False)[:10]
num_top
#可视化
sns.set(font="SimHei")
fig = plt.figure(figsize=(15,10))
sns.barplot(num_top.index,num_top)
plt.xticks(rotation=90)
fig.show()


销量分析   销量最多的前10个品牌

#销量分析   销量最多的前10个品牌
num_top = df['brand'].value_counts().sort_values(ascending=False)[:10]
fig = plt.figure()
sns.barplot(num_top.index,num_top)
plt.xticks(rotation=90)
fig.show()

各大品牌车系数量占有比重 前10

#各大品牌车系数量占有比重 前10
fig = plt.figure()
plt.pie(num_top,labels=num_top.index,autopct="%1.2f%%")
plt.title("各大品牌车系数量占有比重前10位")
plt.show()


对大众车价格进行分区并显示各分区的概率

#对大众车价格进行分区并显示各分区的概率
df_dazhong = df[df['brand']=='大众']
df_dazhong.head()
dazhong_mean = df_dazhong['price'].mean()
dazhong_std = df_dazhong['price'].std()
num_bins = 20 #条状图数量
n,bins,patches = plt.hist(df_dazhong['price'],num_bins,normed=1,facecolor='green',alpha=0.5)
import matplotlib.mlab as mlab
y = mlab.normpdf(bins,dazhong_mean,dazhong_std)
plt.plot(bins,y,'r--')
plt.xlabel("smarts")
plt.ylabel("probability")
plt.title(r"Histogram of IQ:mean={},std={}".format(dazhong_mean,dazhong_std))
plt.subplots_adjust(left=0.15)
plt.show()



特征工程



首先我们要讲start_time这一列数据剔除“年”,distance这一列数据剔除“万公里”,以及volumn这一列数据剔除“升”,并且将gear这一列中只有一两个电动的数据进行删除

#特征工程
df['start_time']=df['start_time'].apply(lambda x:int(x[:-1]))
df['distance']=df['distance'].apply(lambda x:float(x[:-3]))
df['volumn']=df['volumn'].apply(lambda x:float(x[:-1]))
f = df[~df['volumn'].str.contains('电动')]
df.head()


接着对brand和gear进行one-hot编码并与原数据进行合并,最后删除原brand和gear这两列

one_hot_df = pd.get_dummies(df[['brand','gear']])
df = pd.merge(df,one_hot_df,left_index=True,right_index=True)
df = df.drop('brand',axis=1).drop('gear',axis=1)
df.head()


建模

数据准备

#数据准备
X = df[df.columns.difference(['price'])].values
Y = df['price'].values

导包

#导包
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score

拆分数据集以及训练模型

#切分数据集
x_train,x_test,y_train,y_test = train_test_split(X,Y,test_size=0.3,random_state=6)
#模型
gbdt = GradientBoostingRegressor(n_estimators=70)
#训练模型
gbdt.fit(x_train,y_train)
pred = gbdt.predict(x_test)

将结果转换为DF对象打印

result_df = pd.DataFrame(np.concatenate((y_test.reshape(-1,1),pred.reshape(-1,1)),axis=1),columns=['y_pred','y_test'])
result_df.head()


我们可以看出预测值和真实值还是有一点点差距,于是我们进行模型评估

#评估
print("MSE",mean_squared_error(pred,y_test))
print("MAE",mean_absolute_error(pred,y_test))
print("RMSE",np.sqrt(mean_squared_error(pred,y_test)))
print("R2",r2_score(pred,y_test))


结果还是有一点不理想,大家可以进行参数优化来提高模型准确率


目录
相关文章
|
4月前
|
数据采集 存储 数据挖掘
【优秀python数据分析案例】基于Python书旗网小说网站数据采集与分析的设计与实现
本文介绍了一个基于Python的书旗网小说网站数据采集与分析系统,通过自动化爬虫收集小说数据,利用Pandas进行数据处理,并通过Matplotlib和Seaborn等库进行数据可视化,旨在揭示用户喜好和市场趋势,为图书出版行业提供决策支持。
373 6
【优秀python数据分析案例】基于Python书旗网小说网站数据采集与分析的设计与实现
|
4月前
|
数据采集 数据可视化 关系型数据库
【优秀python 数据分析案例】基于python的穷游网酒店数据采集与可视化分析的设计与实现
本文介绍了一个基于Python的穷游网酒店数据采集与可视化分析系统,通过爬虫技术自动抓取酒店信息,并利用数据分析算法和可视化工具,提供了全国主要城市酒店的数量、星级、价格、评分等多维度的深入洞察,旨在为旅行者和酒店经营者提供决策支持。
138 4
【优秀python 数据分析案例】基于python的穷游网酒店数据采集与可视化分析的设计与实现
|
4月前
|
JSON 数据挖掘 API
案例 | 用pdpipe搭建pandas数据分析流水线
案例 | 用pdpipe搭建pandas数据分析流水线
|
4月前
|
数据可视化 数据挖掘 索引
【python】Python马铃薯批发市场交易价格数据分析可视化(源码+数据集)【独一无二】
【python】Python马铃薯批发市场交易价格数据分析可视化(源码+数据集)【独一无二】
123 0
|
4月前
|
数据采集 存储 数据可视化
【优秀python数据分析案例】基于python的中国天气网数据采集与可视化分析的设计与实现
本文介绍了一个基于Python的中国天气网数据采集与可视化分析系统,通过requests和BeautifulSoup库实现数据爬取,利用matplotlib、numpy和pandas进行数据可视化,提供了温湿度变化曲线、空气质量图、风向雷达图等分析结果,有效预测和展示了未来天气信息。
1396 3
|
4月前
|
数据采集 数据可视化 数据挖掘
【优秀python案例】基于python爬虫的深圳房价数据分析与可视化实现
本文通过Python爬虫技术从链家网站爬取深圳二手房房价数据,并进行数据清洗、分析和可视化,提供了房价走势、区域房价比较及房屋特征等信息,旨在帮助购房者更清晰地了解市场并做出明智决策。
175 2
|
4月前
|
数据采集 数据可视化 算法
基于Python flask的boss直聘数据分析与可视化系统案例,能预测boss直聘某个岗位某个城市的薪资
本文介绍了一个基于Python Flask框架的Boss直聘数据分析与可视化系统,系统使用selenium爬虫、MySQL和csv进行数据存储,通过Pandas和Numpy进行数据处理分析,并采用模糊匹配算法进行薪资预测。
116 0
基于Python flask的boss直聘数据分析与可视化系统案例,能预测boss直聘某个岗位某个城市的薪资
|
5月前
|
数据采集 机器学习/深度学习 数据可视化
完整的Python数据分析流程案例解析-数据科学项目实战
【7月更文挑战第5天】这是一个Python数据分析项目的概览,涵盖了从CSV数据加载到模型评估的步骤:获取数据、预处理(处理缺失值和异常值、转换数据)、数据探索(可视化和统计分析)、模型选择(线性回归)、训练与评估、优化,以及结果的可视化和解释。此流程展示了理论与实践的结合在解决实际问题中的应用。
118 1
|
6月前
|
数据采集 机器学习/深度学习 数据可视化
数据挖掘实战:Python在金融数据分析中的应用案例
Python在金融数据分析中扮演关键角色,用于预测市场趋势和风险管理。本文通过案例展示了使用Python库(如pandas、numpy、matplotlib等)进行数据获取、清洗、分析和建立预测模型,例如计算苹果公司(AAPL)股票的简单移动平均线,以展示基本流程。此示例为更复杂的金融建模奠定了基础。【6月更文挑战第13天】
1615 3
|
7月前
|
数据采集 数据可视化 数据挖掘
利用 DataFrame 进行数据分析:实战案例解析
【5月更文挑战第19天】DataFrame是数据分析利器,本文通过一个销售数据案例展示其使用:读取数据创建DataFrame,计算产品总销量,分析月销售趋势,找出最畅销产品,并进行数据可视化。此外,还提及数据清洗和异常处理。DataFrame为数据处理、分组计算和可视化提供便利,助力高效数据分析。
141 3