元进Python(5)---个人收入来源饼图实现

【最终效果图】

【源表形式】

【代码实现】

import pandas as pd
import time
import matplotlib.pyplot as plt

ti = time.strftime('%Y_%m_%d_%H%M%S',time.localtime())
day= time.strftime('%Y-%m-%d',time.localtime())
OriData=r'I:\Mest Inc\1202\terminal_1202.xlsx'
SheetList = []
for x in pd.read_excel(OriData,sheet_name=None).keys():
     SheetList.append(x)

j = 0
TerBd=[]
TerMd=[]
TerMdCt=[]
TerBdOri= pd.read_excel(OriData, sheet_name=SheetList[j], usecols=[0], names=None).values.tolist()
TerMdCtOrigin=pd.read_excel(OriData, sheet_name=SheetList[j], usecols=[1], names=None).values.tolist()

for x in TerBdOri:
    TerBd.append(x[0])
for x in TerMdCtOrigin:
    TerMdCt.append(x[0])
TerMdE = [str(x).strip() for x in TerMd if str(x).strip() != '']
TerBdE = [str(x).strip() for x in TerBd if str(x).strip() != '']

dupli=[]
for x in TerBdE:
    dupli.append(TerBdE.index(x))

BrdCt = {}
for Brd_index, BrdCt_index in enumerate(dupli):
    if BrdCt_index not in BrdCt.keys():
        BrdCt[BrdCt_index] = [TerMdCt[Brd_index]]
    else:
        BrdCt.get(BrdCt_index).append(TerMdCt[Brd_index])
BrdCtE = sorted(BrdCt.items(),key=lambda x:sum(x[1]),reverse=True)

PieSr=[]
PieLb=[]
for x in BrdCtE:
    if sum(x[1])>90000:
        PieLb.append(TerBdE[x[0]])
        PieSr.append(sum(x[1]))
OTHERS=sum(TerMdCt)-sum(PieSr)
PieSr.append(OTHERS)
PieLb.append('OTHERS')
print(PieSr)

plt.rcParams['font.sans-serif']=['SimHei'] #显示中文
plt.rcParams['axes.unicode_minus']=False   #显示负号
plt.xticks(rotation=25)
plt.pie(PieSr,labels=PieLb,autopct='%.2f%%',explode=(0,0,0.2,0,0,0,0,0),shadow=True)
plt.title('个人收入来源分布'+day)
plt.show()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值