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

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

数据获取

我们利用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))


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


目录
相关文章
|
1月前
|
数据可视化 数据挖掘
R语言生存分析数据分析可视化案例(下)
R语言生存分析数据分析可视化案例
|
13天前
|
数据采集 机器学习/深度学习 数据可视化
数据挖掘实战:Python在金融数据分析中的应用案例
Python在金融数据分析中扮演关键角色,用于预测市场趋势和风险管理。本文通过案例展示了使用Python库(如pandas、numpy、matplotlib等)进行数据获取、清洗、分析和建立预测模型,例如计算苹果公司(AAPL)股票的简单移动平均线,以展示基本流程。此示例为更复杂的金融建模奠定了基础。【6月更文挑战第13天】
48 3
|
1月前
|
数据采集 数据可视化 数据挖掘
利用 DataFrame 进行数据分析:实战案例解析
【5月更文挑战第19天】DataFrame是数据分析利器,本文通过一个销售数据案例展示其使用:读取数据创建DataFrame,计算产品总销量,分析月销售趋势,找出最畅销产品,并进行数据可视化。此外,还提及数据清洗和异常处理。DataFrame为数据处理、分组计算和可视化提供便利,助力高效数据分析。
55 3
|
1月前
|
JSON 搜索推荐 数据挖掘
电商数据分析的利器:电商关键词搜索API接口(标题丨图片丨价格丨链接)
淘宝关键词搜索接口为电商领域的数据分析提供了丰富的数据源。通过有效利用这一接口,企业和研究人员可以更深入地洞察市场动态,优化营销策略,并提升用户体验。随着电商平台技术的不断进步,未来的API将更加智能和个性化,为电商行业带来更多的可能性。
|
1月前
|
数据可视化 数据挖掘 C++
数据分析综合案例讲解,一文搞懂Numpy,pandas,matplotlib,seaborn技巧方法
数据分析综合案例讲解,一文搞懂Numpy,pandas,matplotlib,seaborn技巧方法
|
1月前
|
数据可视化 前端开发 数据挖掘
数据分析可视化神器---streamlit框架,各种图表绘制,布局以及生产综合案例剖析
数据分析可视化神器---streamlit框架,各种图表绘制,布局以及生产综合案例剖析
175 0
|
1月前
|
数据处理 Python
Pandas在数据分析中的应用案例
使用Pandas分析销售数据,通过`read_csv`读取CSV,`groupby`按产品类别分组并应用`agg`计算类别总销售额、平均价和销售量。之后,利用`sort_values`按销售额降序排列,`head`获取前5高销售额类别。示例代码展示了Pandas在数据处理和分析中的高效性。
41 0
|
1月前
|
数据可视化 数据挖掘
R语言生存分析数据分析可视化案例(上)
R语言生存分析数据分析可视化案例
|
1月前
|
数据采集 数据可视化 数据挖掘
Seaborn在数据分析中的应用:案例分析与实践
【4月更文挑战第17天】本文介绍了Seaborn在数据分析中的应用,它是一个基于Python的可视化库,简化了复杂数据的图表创建。通过一个销售数据分析的案例,展示了数据加载、描述性统计、相关性分析、多变量分析及高级可视化步骤。实践技巧包括数据清洗、图表选择、颜色使用、注释标签和交互性。Seaborn助力高效数据探索和理解,提升分析效率。注意,实际使用需根据数据集和目标调整,并参考最新文档。
|
1月前
|
数据可视化 数据挖掘
R语言分段回归数据数据分析案例报告
R语言分段回归数据数据分析案例报告

热门文章

最新文章