用Python统计居民消费支出情况

以2019年北京、上海、广州三城市在居民消费支出数据为例,利用Python分析了消费结构支出情况,包括食品烟酒、衣着、居住、生活用品及服务、交通通信、教育文化娱乐、医疗保健、其他用品及服务等几方面。使用的分析形式有并列柱状图、饼状图两种。

目录

一、原始数据

二、统计分析

1、并列柱状图

2、饼状图

三、实现代码

四、实现效果


一、原始数据

原始数据如表1所示,把该表转成csv格式,内容不变,文件名为“consumer.csv”。

表1 原始数据
指标北京上海广州
食品烟酒89511127314402
衣着239121622314
居住172351625310026
生活用品及服务256922152843
交通通信522956265701
教育文化娱乐473859666149
医疗保健397433322146
其他用品及服务127114451468

二、统计分析

可以选择并列柱状图、饼状图二种图形进行居民消费支出分析。

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()

注意,因为图较大,不容易在一张图表示,所以绘制并列直方图和绘制饼图分两次运行。

四、实现效果

图1 并列直方图
图2 饼状图

 

 (全文结束)

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值