Python Pandas数据分析案例分享

文章目录

  • 前言
  • 一、汽车销售数据可视化分析
  • 1. 各年度汽车总销量及环比,各车类、级别车辆销量及环比
  • 2.车辆销售规模及环比、不同价位车销量及环比
  • 3.各车系、厂商、品牌车销量及环比,市占率及变化趋势
  • 4.品牌、车类、车型、级别的各top销量
  • 二、地质灾害
  • 航空公司客户价值分析
  • 1.原始数据存在少量的缺失值和异常值
  • 前言

    一、汽车销售数据可视化分析

    1. 各年度汽车总销量及环比,各车类、级别车辆销量及环比

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    plt.rcParams['font.sans-serif']=['SimHei']#解决中文乱码
    plt.rcParams['axes.unicode_minus'] = False  #解决负号乱码
    
    sale_data=pd.read_csv('car_selling_fact.csv',encoding='gbk',
                         parse_dates=['时间'],
                         index_col=0)
    print(sale_data.head())
    
    #提取年
    sale_data['年份']=sale_data['时间'].dt.year
    #计算各年总销量
    sale_year=sale_data.groupby('年份')[['销量']].sum()
                销量
    年份            
    2015  	14594487
    2016  	16952990
    2017 	17576436
    2018  	17568751
    2019   	7464071
    #计算环比数
    sale_year['差分']=sale_year.diff()
                销量          差分
    年份                        
    2015 	 14594487         NaN
    2016  	 16952990   2358503.0
    2017  	 17576436    623446.0
    2018  	 17568751     -7685.0
    2019  	  7464071 -10104680.0
                销量          差分
    sale_year['环比']=[None]+list(sale_year['差分'].values[1:]/sale_year['销量'].values[:-1])
    print(sale_year)
            销量          差分        环比
    年份                                  
    2015  14594487         NaN       NaN
    2016  16952990   2358503.0  0.161602
    2017  17576436    623446.0  0.036775
    2018  17568751     -7685.0 -0.000437
    2019   7464071 -10104680.0 -0.575151
    #画一个柱状图
    fig=plt.figure(figsize=(6,4))
    ax1=fig.add_subplot(1,1,1)
    ax1.bar(sale_year.index,sale_year['销量'])
    ax1.set_ylabel('销量')
    ax1.set_xlabel('年份')
    ax2=ax1.twinx()
    ax2.plot(sale_year.index,sale_year['环比'],color='r')
    ax2.set_ylabel('环比')
    ax2.set_title('各年份汽车总销量及环比',fontsize=15)
    plt.show()
    
    

    2.车辆销售规模及环比、不同价位车销量及环比

    car_market_data=pd.pivot_table(sale_data,
                                index='车系',
                                columns='年份',
                                values='销售规模(亿)',
                                aggfunc='sum')
    cm_percent=car_market_data/car_market_data.sum()
    
    fig=plt.figure(figsize=(15,3),dpi=100)
    for i,item in enumerate(cm_percent.columns):
        ax=fig.add_subplot(1,5,i+1)# 行数,列数,第几个图
        ax.pie(cm_percent[item],labels=cm_percent.index,autopct='%.2f%%')
        ax.set_title('{}年各车系市场占有率'.format(item))
    plt.subplots_adjust(wspace=0.5)
    plt.show()
    

    3.各车系、厂商、品牌车销量及环比,市占率及变化趋势

    car_type_data=pd.pivot_table(sale_data,
                                index='年份',
                                columns='车类',
                                values='销量',
                                aggfunc='sum')
    
    fig=plt.figure()
    # 对每一类车进行绘图
    # 对列名进行循环
    cname=car_type_data.columns
    ax1=fig.add_subplot(1,1,1)
    ax2=ax1.twinx()
    colors=['r','g','b']
    colors1=['#ba2121','#808000','#026ffe']
    for i,item in enumerate(cname):
        # 计算一列环比数
        car_type_data['差分']=car_type_data[item].diff()
        car_type_data['环比']=[None]+list(car_type_data['差分'].values[1:]/car_type_data[item].values[:-1])
        # 画出一类的环比销量图
        ax1.bar(car_type_data.index-(0.3*(i-1)),car_type_data[item],width=0.3,color=colors[i])
        ax1.set_ylabel(item)
        ax1.set_xlabel('年份')
        # 设置两个y
        ax2.plot(car_type_data.index,car_type_data['环比'],color=colors1[i],marker='o')
        ax2.set_ylabel('环比')
    ax2.set_title('各年度各类汽车总销量及环比',fontsize=15)
    plt.show()
    
    sale_data.head()
    # 根据价格对车进行分箱处理
    # 低档车,中档车, 高档车,豪华,奢华
    np.sort(sale_data['价格'].unique())
    # 自定义范围,讲数据分成五个挡位
    bins=[0,10,20,30,40,100]
    sale_data['档位']=pd.cut(sale_data['价格'],bins=bins,labels=['低档','中档','高档','豪华','奢华'])
    
    
    car_market_data=pd.pivot_table(sale_data,
                                index='档位',
                                columns='年份',
                                values='销量',
                                aggfunc='sum')
    cm_percent=car_market_data/car_market_data.sum()
    
    fig=plt.figure(figsize=(15,3),dpi=100)
    for i,item in enumerate(cm_percent.columns):
        ax=fig.add_subplot(1,5,i+1)# 行数,列数,第几个图
        ax.pie(cm_percent[item],labels=cm_percent.index,autopct='%.2f%%')
        ax.set_title('{}年各挡位市场占有率'.format(item))
    plt.subplots_adjust(wspace=0.5)
    plt.show()
    
    sale_data.head()
    # 根据价格对车进行分箱处理
    # 低档车,中档车, 高档车,豪华,奢华
    np.sort(sale_data['价格'].unique())
    # 自定义范围,讲数据分成五个挡位
    bins=[0,10,20,30,40,100]
    sale_data['档位']=pd.cut(sale_data['价格'],bins=bins,labels=['低档','中档','高档','豪华','奢华'])
    
    
    car_market_data=pd.pivot_table(sale_data,
                                index='档位',
                                columns='年份',
                                values='销量',
                                aggfunc='sum')
    cm_percent=car_market_data/car_market_data.sum()
    
    fig=plt.figure(figsize=(15,3),dpi=100)
    for i,item in enumerate(cm_percent.columns):
        ax=fig.add_subplot(1,5,i+1)# 行数,列数,第几个图
        ax.pie(cm_percent[item],labels=cm_percent.index,autopct='%.2f%%')
        ax.set_title('{}年各挡位市场占有率'.format(item))
    plt.subplots_adjust(wspace=0.5)
    plt.show()
    

    4.品牌、车类、车型、级别的各top销量

    sale_type_data=pd.pivot_table(sale_data,
                                index='车型',
                                columns='年份',
                                values='销量',
                                aggfunc='sum')
    fig=plt.figure(figsize=(15,5))
    plt.suptitle('不同年份的热销车型')
    for i,item in enumerate(cm_percent.columns):
        ax=fig.add_subplot(1,5,i+1)
        top_5=sale_type_data[item].sort_values(ascending=False)[:5]
        plt.barh(top_5.index[::-1],top_5.values[::-1])
        ax.set_title('{}年的热销车型'.format(item))
    plt.subplots_adjust(wspace=0.5,top=0.9,bottom=0.1)
    
    car_market_data
    fig=plt.figure(figsize=(15,3),dpi=100)
    car_market_data.plot.pie(subplots=True, # 把子图分开
                            figsize=(15,3))
    plt.figure()
    top_5.plot.barh(color='r')
    plt.title('热销车型')                        
    

    二、地质灾害

    航空公司客户价值分析

    1.原始数据存在少量的缺失值和异常值

    通过对数据观察发现原始数据中存在票价为空值,票价最小值为0,折扣率最小值为0,总飞行公里数大于0的记录。
    ➢ 票价为空值的数据可能是客户不存在乘机记录造成。
    处理方法:丢弃票价为空的记录。
    ➢ 其他的数据可能是客户乘坐0折机票或者积分兑换造成。由于原始数据量大,这类数据所占比例较小,对于问题影响不大,因此对其进行丢弃处理。
    处理方法:丢弃票价为0,平均折扣率不为0,总飞行公里数大于0的记录。

    在这里插入代码片
    

    作者:木心心以向荣

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python Pandas数据分析案例分享

    发表回复