python-pandas数据分析+案例分析

前言

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

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的记录。

在这里插入代码片
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我了解了。对于你的问题,我可以给你一个简单的数据分析与可视化案例,使用PythonPandas和Matplotlib库。 首先,我们需要准备一个数据集。这里我选用了一个名为“tips”的数据集,它记录了一家餐厅的不同顾客在用餐时的消费金额、小费、性别、是否吸烟、用餐时间等信息。你可以在Seaborn库中找到这个数据集。 接下来,我们可以使用Pandas库将数据集导入到Python中,并进行一些简单的数据处理。例如,我们可以计算不同性别的平均小费金额: ```python import pandas as pd # 导入数据集 tips = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv") # 计算不同性别的平均小费金额 tips.groupby("sex")["tip"].mean() ``` 结果如下: ``` sex Female 2.833448 Male 3.089618 Name: tip, dtype: float64 ``` 接下来,我们可以使用Matplotlib库将这些数据可视化。例如,我们可以绘制不同性别的平均小费金额柱状图: ```python import matplotlib.pyplot as plt # 绘制不同性别的平均小费金额柱状图 tips.groupby("sex")["tip"].mean().plot(kind="bar") # 设置图形标题和坐标轴标签 plt.title("Average Tip by Gender") plt.xlabel("Gender") plt.ylabel("Tip") # 显示图形 plt.show() ``` 结果如下: ![Average Tip by Gender](https://i.imgur.com/5XjVwUH.png) 这只是一个简单的数据分析与可视化案例,你可以根据自己的需求和数据集进行更复杂的数据分析和可视化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值