日常生活中很多朋友都有爱记账的习惯,一方面可以了解日常花销,一方面可能需要单位报销,所以会及时记录。那么,这些数据如果保存在Excel中,通过Python就可以实现日常消费数据的分析,消费数据一目了然、消费趋势了如指掌,效果如图12所示。
图12 日期记账数据分析
核心技术
● Pandas获取Excel数据。
● 日期数据处理利器DataFrame对象to_period()方法。
● 数据分组统计groupby()函数用法。
● 数据排序与索引设置。
● 环形可视化数据分析图表的实现。
实现步骤
1 导入相关模块,代码如下
import matplotlib.pyplot as plt
import pandas as pd
2 DataFrame输出数据对齐,代码如下
# 解决数据输出时列名不对齐的问题
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
3 获取Excel数据,代码如下
# 获取数据
df=pd.read_excel('accounts.xlsx')
# 设置索引,按月份显示数据
df=df.set_index('日期',drop=True)
df=df['2019-12'].to_period('M') # 获取2019年12月数据
4 按支出类别和日期分组统计数据,代码如下
# 按支出类别分组统计
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={'支出类别':'','金额':''})) # 设置列名为空,输出
5 绘制环形图表,代码如下
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()
Powered by 小羊羔外链网 8.3.11
©2015 - 2024 小羊羔外链网
您的IP:3.144.172.115,2024-04-19 06:00:35,Processed in 0.05402 second(s).