WHCSRL 技术网

【散点图绘制】二手车年份、距离与保值率(二手车价/新车价格)分析

【散点图绘制】二手车年份、距离与保值率(二手车价/新车价格)分析

散点图绘制入门

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
  • 1
  • 2
  • 3
athletes = pd.read_csv('new_athlete.csv').dropna()
athletes.head()
  • 1
  • 2
Unnamed: 0NameSexAgeHeightWeight
00A DijiangM24.0180.080.0
11A LamusiM23.0170.060.0
44Christine Jacoba AaftinkF21.0185.082.0
510Per Knut AalandM31.0188.075.0
618John AalbergM31.0183.072.0
plt.figure(figsize=(15,5))
male_athletes = athletes[athletes['Sex'] == 'M']
male_heights = male_athletes['Height']
male_weights = male_athletes['Weight']
male_height_mean = male_heights.mean()
male_weight_mean = male_weights.mean()

female_athletes = athletes[athletes['Sex'] == 'F']
female_heights = female_athletes['Height']
female_weights = female_athletes['Weight']
female_height_mean = female_heights.mean()
female_weight_mean = female_weights.mean()

plt.scatter(male_heights,male_weights,s=male_athletes['Age'],marker='^')
plt.scatter(female_heights,female_weights,s=female_athletes['Age'],alpha=0.5)
plt.axvline(male_height_mean,linewidth=1,c='r')
plt.axhline(male_weight_mean,linewidth=1,c='y')

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(male_heights.values[:,np.newaxis],male_weights)
predict_male_weight = model.predict(male_heights.values[:,np.newaxis])
plt.plot(male_heights,predict_male_weight)
# male_heights.values.reshape(male_heights.shape[0],1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

在这里插入图片描述

二手车数据散点图

作业要求

  1. 把guazi_bj(北京)、guazi_gz(广州)、guazi_sh(上海)、guazi_sz(深圳)二手车的数据归类在一个DataFrame中。
  2. 新增车辆使用年份(use_year)与保值率(hedge_rate)两个字段。其中使用年份的计算是把当前的时间减去购买的时间,然后再转换成年;保值率的计算是将二手车的价格/新车的价格。
  3. 把二手车使用年份与保值率(二手车价/新车价格)绘制成散点图,观察他们的分布情况。
  4. 把二手车的行驶距离与保值率(二手车价/新车价格)绘制成散点图,观察他们的分布情况。
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from datetime import datetime
  • 1
  • 2
  • 3
  • 4
guazi_bj = pd.read_csv("guazi_bj.csv")
guazi_gz = pd.read_csv("guazi_gz.csv")
guazi_sh = pd.read_csv("guazi_sh.csv")
guazi_sz = pd.read_csv("guazi_sz.csv")

guazi = pd.concat([guazi_bj,guazi_gz,guazi_sh,guazi_sz],axis=0)
def get_use_year(value):
    if isinstance(value,str):
        datetime_value = datetime.strptime(value,"%%%%Y-%%%%m")
        now = datetime.now()
        yeardelay = (now - datetime_value).total_seconds()/60/60/24/30/12
        return yeardelay
    return np.NAN
guazi['use_year'] = guazi['buy_time'].apply(get_use_year)
guazi['hedge_rate'] = guazi['es_price'] / guazi['new_price']
guazi[['use_year','km','hedge_rate']].head()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
use_yearkmhedge_rate
04.8907453.820.615385
13.5379672.350.600000
27.1740786.670.426829
36.49352311.830.356295
45.6490788.950.469314
plt.figure(figsize=(15,5))
plt.scatter(guazi['km'],guazi['hedge_rate'],s=guazi['km'])
  • 1
  • 2

在这里插入图片描述

plt.figure(figsize=(15,5))
plt.scatter(guazi['use_year'],guazi['hedge_rate'],s=guazi['km'])
plt.xlabel("use year")
plt.ylabel("hedge rate")
  • 1
  • 2
  • 3
  • 4
Text(0, 0.5, 'ledge rate')
  • 1

在这里插入图片描述

guazi[(guazi['hedge_rate'] > 0.9) & (guazi['use_year'] > 3)][['new_price','es_price','use_year','km']].head()
  • 1
new_pricees_priceuse_yearkm
2110.1910.035.3935237.21
245.305.195.3157453.42
303.303.157.51019011.26
3410.109.704.0463017.21
3910.2410.006.1601906.86
guazi[(guazi['hedge_rate'] > 0.9) & (guazi['use_year'] > 6)][['new_price','es_price','use_year','use_year']].head()
  • 1
new_pricees_priceuse_yearuse_year
303.303.157.5101907.510190
3910.2410.006.1601906.160190
809.118.927.6796347.679634
907.577.326.7490786.749078
1247.987.617.9351907.935190

观察结果

  1. 通过以上分析,我们可以看到汽车的保值率是随着使用年份和行驶公里数的增加呈现线性下降的。
  2. 有一部分数据引起我们的注意,就是保值率大于0.9,并且使用年份和行驶公里数都比较大的数据,我们可以看出这类数据基本上可以算是异常数据了,因此以后在分析的时候就可以处理掉这部分数据了。

加油!

感谢!

努力!

推荐阅读