python学习之数据分析和图表的应用(第二部分)

文章提供了多个Python代码示例,涉及使用matplotlib和pandas库进行数据分析和可视化。示例包括预测退休后养老金金额的分析,通过柱状图展示不同缴费年限的影响;可视化日常记账数据,总结个人消费方向,使用环形图展示消费类别占比;以及分析月支出的环比变化和月平均消费金额。这些例子旨在帮助读者理解如何运用Python进行财务数据分析。

详细示例代码已上传,参见文末链接
内容包括柱状图表、环形图表、数据输出列对齐问题、解决中文乱码、图例的参数配置及应用等等,希望对看到的朋友有帮助。

1、Python分析预测退休后养老金金额

代码运行需要安装第三方模块numpy、matplotlib

代码示例:

import matplotlib.pyplot as plt
import numpy as np
# 为柱状图添加标注
def label(bars):
    for bar in bars:
        height = bar.get_height()
        plt.text(bar.get_x()+bar.get_width()/2.- 0.2, 1.03*height, '%s' % int(height))

plt.rcParams['font.sans-serif'] = ['SimHei']	# 显示中文
plt.rcParams['axes.unicode_minus'] = False	# 显示负号
# 生成画布
plt.figure()
# 横坐标缴费年份
name_list = ['15年','20年','25年','30年','35年','40年','45年','50年']
#养老金的钱分两部分:基础养老金、个人账户养老金
#基础养老金(当地):上年度在岗职工月平均工资和本人指数化月平均缴费工资的平均值为基数,缴费每满1年发给1%
#个人账户养老金=个人账户储存额/计发月数。65退休为101个月
# 预测领取养老金(保守算法,缴费工资4500、增长率3%)
myMoney_list=[]
#缴费年限
years=[15,20,25,30,35,40,45,50]
#月平均工资
pay=4500
local_pay=6000
#经济增长率,工资增长率
GDP_rate=0.07
#未来个人养老金账户余额利息(银行利率)
Bank_rate=0.03
for i in years:
  #个人养老金
  person=(pay*(1+GDP_rate+Bank_rate))*i*0.08*12/101
  #基础养老金(当地)
  basis=((local_pay+pay)/2)*i*0.01
  myMoney_list.append(person+basis)
print(myMoney_list)
y=myMoney_list
x=range(len(name_list))
print(x)
label(plt.bar(x,y,color='CornflowerBlue',tick_label=name_list))
list1=[]
#增长率计算(工资)
for i in range(len(y)-1):
    list1.append((y[i+1]-y[i])/y[i])
print(list1)
#设置图表标题
plt.title('养老金分析')
plt.show()

运行结果:
在这里插入图片描述

2、可视化分析日常记账数据总结个人消费方向

代码运行需要安装第三方模块pandas、matplotlib
代码示例:

import matplotlib.pyplot as plt
import pandas as pd
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
#获取数据
df=pd.read_excel('accounts.xlsx')
#设置索引,按月份显示数据
df=df.set_index('日期',drop=True)
df=df['2019-12'].to_period('M') # 获取2019年12月数据
#按支出类别分组统计
df_month=df.groupby(['支出类别','日期'])[['金额']].sum().reset_index()
#按金额排序
df_month_sort=df_month[['支出类别','金额']].sort_values(by='金额',ascending=False)
#添加行索引
df_month_sort.index=[1,2,3,4,5,6]
print('2019年12月总支出:',df_month['金额'].sum(),'元')
print('我最爱把钱花在')
print(df_month_sort.rename(columns={'支出类别':'','金额':''})) #设置列名空,输出
'''
环形图表
'''
plt.rcParams['font.sans-serif']=['SimHei'] #解决中文乱码
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
labels = df_month_sort['支出类别'].values.tolist()
data_percent = df_month_sort['金额'].values.tolist()
colors = ['c', 'r', 'y', 'g', 'gray','b']
wedges1, texts1, autotexts1 = plt.pie(data_percent,
    autopct = '%3.1f%%',
    radius = 1,
    pctdistance = 0.85,
    colors = colors,
    startangle = 180,
    textprops = {'color': 'w'},
    wedgeprops = {'width': 0.4, 'edgecolor': 'w'}
)
# 图例
plt.legend(wedges1,
          labels,
          fontsize = 12,
          loc = 'center right',
          borderaxespad=0., #borderaxespad将图例放外面
          frameon=False,     #去掉图例边框
          bbox_to_anchor = (1.3, 0.6))
# 设置文本样式
plt.setp(autotexts1, size=12, weight='bold')
plt.setp(texts1, size=10)
# 标题
plt.title('我最爱把钱花在', fontsize=20)
plt.show()

运行结果:
在这里插入图片描述

3、环比分析日常消费数据掌握月支出增减情况

代码运行需要安装第三方模块pandas
代码示例:

import pandas as pd
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
#获取数据
df=pd.read_excel('accounts.xlsx')
#设置索引,按月份显示数据
df=df.set_index('日期',drop=True)
df=df['2019'].to_period('M') # 获取2019年每个月的数据
#按月统计支出
df_month=df.groupby(['日期'])[['金额']].sum().reset_index()
#环比差值
df_month['差值']=df_month.金额-df_month.金额.shift()
print(df_month)

运行结果:
在这里插入图片描述

4、日常消费数据占比分析总结年消费方向

代码运行需要安装第三方模块pandas
代码示例:

import pandas as pd
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
#获取数据
df=pd.read_excel('accounts.xlsx')
#设置索引,按月份显示数据
df=df.set_index('日期',drop=True)
df=df['2019-12'].to_period('M') # 获取2019年12月数据
#按支出类别分组统计
df_month=df.groupby(['支出类别','日期'])[['金额']].sum().reset_index()
#按金额排序
df_month_sort=df_month[['支出类别','金额']].sort_values(by='金额',ascending=False)
df_month_sort['占比']=(df_month_sort['金额']/df['金额'].sum()).apply(lambda x: format(x, '.2%'))
#添加行索引
df_month_sort.index=[1,2,3,4,5,6]
print('2019年12月总支出:',df_month['金额'].sum(),'元')
print(df_month_sort)

运行结果:
在这里插入图片描述

5、Python分析月平均消费金额

代码运行需要安装第三方模块pandas
代码示例:

import pandas as pd
#解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
#获取数据
df=pd.read_excel('accounts.xlsx')
#设置索引,按月份显示数据
df=df.set_index('日期',drop=True)
df=df['2019'].to_period('M')       # 获取2019年每个月的数据
#月平均消费统计
df_month=df.groupby(['日期'])[['金额']].mean().applymap(lambda x: '%.2f'%x)
print(df_month)

运行结果:
在这里插入图片描述

最后

接上文:python学习之数据分析和图表的应用(第一部分)
上述代码示例链接:python学习之数据分析和图表的应用(第二部分)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逃逸的卡路里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值