以2019年北京、上海、广州三城市在居民消费支出数据为例,利用Python分析了消费结构支出情况,包括食品烟酒、衣着、居住、生活用品及服务、交通通信、教育文化娱乐、医疗保健、其他用品及服务等几方面。使用的分析形式有并列柱状图、饼状图两种。
目录
一、原始数据
原始数据如表1所示,把该表转成csv格式,内容不变,文件名为“consumer.csv”。
指标 | 北京 | 上海 | 广州 |
食品烟酒 | 8951 | 11273 | 14402 |
衣着 | 2391 | 2162 | 2314 |
居住 | 17235 | 16253 | 10026 |
生活用品及服务 | 2569 | 2215 | 2843 |
交通通信 | 5229 | 5626 | 5701 |
教育文化娱乐 | 4738 | 5966 | 6149 |
医疗保健 | 3974 | 3332 | 2146 |
其他用品及服务 | 1271 | 1445 | 1468 |
二、统计分析
可以选择并列柱状图、饼状图二种图形进行居民消费支出分析。
1、并列柱状图
使用并列柱状图分析北京、上海、广州三城市消费支出情况。
2、饼状图
使用饼图分别分析三城市各消费支出占比情况。
三、实现代码
#导入扩展包
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
#声明变量
data = pd.read_csv('consumer.csv') # 载入分数数据文件
BJ = data['北京'] # 获得北京数据集
SH = data['上海'] # 获得上海数据集
GZ = data['广州'] # 获得广州数据集
Item = data['指标'] # 获得广州数据集
x = np.arange(len(BJ))
#设置柱状图的宽度
width = 0.3
#绘并列直方图
#plt.subplot(131)
#plt.figure(figsize=(8,4))
#plt.bar(x=x,height=BJ,width=width,label='北京')
#plt.bar(x=x+width,height=SH,width=width,label='上海',tick_label=Item)
#plt.bar(x=x+2*width,height=GZ,width=width,label='广州')
#添加数据标签
#for x_value,y_value in zip(x,BJ):
# plt.text(x=x_value-width/2,y=y_value,s=y_value)
#for x_value,y_value in zip(x,SH):
# plt.text(x=x_value+width/2,y=y_value,s=y_value)
#for x_value,y_value in zip(x,GZ):
# plt.text(x=x_value+3*width/2,y=y_value,s=y_value)
#添加图标题和图例
#plt.rcParams["font.sans-serif"] = ["SimHei"]
#plt.rcParams["axes.unicode_minus"] = False
#plt.title('2019年北上广城镇人均消费支出(万元)')
# 绘制饼图
plt.subplot(131)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title('北京城镇居民人均消费结构')
plt.pie(BJ,labels=Item)
# 绘制饼图
plt.subplot(132)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title('上海城镇居民人均消费结构')
plt.pie(SH,labels=Item)
# 绘制饼状图
plt.subplot(133)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title('广州城镇居民人均消费结构')
plt.pie(GZ,labels=Item)
#plt.legend()
plt.show()
注意,因为图较大,不容易在一张图表示,所以绘制并列直方图和绘制饼图分两次运行。
四、实现效果
![](https://img-blog.csdnimg.cn/028beee3b4a1421b8d65a716e41b6c1e.png)
![](https://img-blog.csdnimg.cn/17dfc94d24774d229a9c9e2bf7c451fc.png)
(全文结束)