• Python——全国瓜子二手车数据分析


    继瓜子二手车数据爬去之后,在此进行处理分析

    Pycharm代码

    # coding:utf8
    # author:Jery
    # datetime:2019/5/3 17:35
    # software:PyCharm
    # function:对爬取的瓜子二手车信息进行分析
    
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    """ 原始数据 """
    data = pd.read_csv(r'C:UsersJeryDesktopguazi1.csv')
    # print(data.head(3))
    
    def init():
        """准备"""
    
    
        # 解决中文问题
        plt.rcParams['font.sans-serif'] = ['SimHei']
        # 解决负号显示
        plt.rcParams['axes.unicode_minus'] = False
    
    
    def data_handle():
        """数据清洗"""
    
    
        # 删除奇数行,不包括表头
        global data
        nums = [i for i in range(4659) if i%2 != 0]
        data.drop(nums,inplace=True)
        # data.dropna(subset=['城市','车型','上牌时间','上牌地','表显里程','排量','变速箱','价格'],inplace=True)
        # 去表显里程单位——万公里
        data['表显里程']=data.表显里程.map(lambda x:float(x.replace('万公里','')))
        # 时间处理
        data['上牌时间']=data.上牌时间.map(lambda x:x.split('/')[0])
        # 转换成车龄
        data['上牌时间']=data.上牌时间.map(lambda x:int(x))
        data['车龄'] = (2019-data.上牌时间)
        # 里程从大到小排序
        data.sort_values('表显里程',ascending=False)
        # 重新排序index,并删除原索引
        data = data.reset_index(drop=True)
        return data
    
    def paint(data):
        """数据分析"""
    
    
        # 描述性数据
        # print(data.describe())
    
        # 行驶距离分析
        sub = [0,3,6,9,12,20]
        # pd.cut(data.表显里程,sub).value_counts().plot.bar(rot=0,title='行驶距离分析')
        # rot是X轴进行旋转
        data['表显里程'].plot(kind='hist', bins=60, figsize=(8,6),xlim=[0,20],title='行驶里程直方图')
        plt.show()
    
        # 行驶里程箱线图
        plt.figure(figsize=(5,7))
        plt.boxplot(x=data['表显里程'], showmeans=True, meanline=True)
        plt.title('行驶里程箱线图')
        plt.ylabel('行驶里程/万公里')
        plt.show()
        # 箱线图上,均值和中位数比较靠近在5万公里附近。还有1辆开了15万公里以上的老车。上外栏 1.5*IQR 约等于13万公里
    
        # 价格分析图一
        sub = [0,3,6,9,12,15,18,21,24,27,30,33,36]
        pd.cut(data.价格,sub).value_counts().plot.bar(rot=30,title='价格分析')
        plt.show()
    
        # 价格分析图二
        data['价格'].plot(kind='hist', bins=60, figsize=(5,8),subplots=True,sharex=False, xlim=[0,20],title='二手车各价格区间在销数量图')
        plt.show()
    
        # 品牌分析
        data['品牌'] = data.车型.map(lambda x:x.split(' ')[0])
        # 品牌排名前20
        data.品牌.value_counts()[:20].plot.barh(title='品牌排名分析')
        plt.show()
    
        # 按品牌聚合分析 平均里程,最大里程,中位数,数量
        d = data['表显里程'].groupby(data['品牌']).agg(['mean', 'max','median','count']).loc[['大众','福特','别克']]
        print("品牌聚合分析 
            平均里程,最大里程,中位数,数量
    {}".format(d))
    
    
        data['表显里程'].groupby(data['品牌']).agg(['mean','median']).loc[['大众','福特','别克']].plot(kind='bar',rot=30)
        plt.show()
    
        # 地区 品牌 数量
        # print(data.groupby(['城市','品牌'])['品牌'].count())
    
        top10 = ['大众','福特','别克','雪佛兰','吉利','现代','日产','丰田','哈弗H6','本田']
        data_top10 = data[data['品牌'].isin(top10)]
        print("
    
    
    排名前十品牌汽车总数:".format(data_top10.shape))
        print('Top10二手汽车占总二手车比例:%.2f %%' % ((data_top10.shape[0]/data.shape[0])*100))
    
        # 饼图
        # 横纵轴标准化处理,保证饼图是正圆,默认为椭圆
        plt.axes(aspect='equal')
        plt.pie(data_top10['品牌'].value_counts(),explode=[0.2,0.2,0.2,0,0,0,0,0,0,0],startangle=30,labels=top10,autopct='%.2f%%',radius=2)
        plt.show()
    
        # 车龄分析
        data['品牌'].groupby(data['车龄']).count().plot(kind='bar',rot=0,title='二手车已使用年数')
        plt.show()
    
    
    def main():
        init()
        data = data_handle()
        paint(data)
    
    if __name__ == '__main__':
        main()
  • 相关阅读:
    jQuery入门和DOM对象
    jQuery事件
    基础,层次,选择器
    MarkDown快速入门(typora)
    source是读入环境配置文件的命令,不能读入vimrc
    vi中将tab键转化为空格
    django-rest-framework学习之Quickstart和Serializer--2017年4月10日至12日
    Flask-RESTful插件介绍--2017年4月7日
    python restful api 编程--2017年4月6日
    一个验证登录的程序:python编写flask架构restful风格--2017年4月6日
  • 原文地址:https://www.cnblogs.com/Jery-9527/p/10805736.html
Copyright © 2020-2023  润新知