Python 代码之 养老保险 个人缴费指数计算工具,3秒计算。
演示代码不做最终输出效果。
import pandas as pd import matplotlib.pyplot as plt from tkinter import messagebox # 假设社会平均工资数据如下: social_avg_wages = { '2012': 4700, '2013': 5000, '2014': 5370, '2015': 5738, '2016': 6122, '2023': 7500, '2024': 8000, } } # 读取Excel文件 try: df = pd.read_excel('个人缴费信息查询.xlsx') except FileNotFoundError: messagebox.showerror("文件未找到", "请先保存好文件,再运行软件进行数据分析。") exit() # 输出原始数据帧的信息 print(df.info()) # 提取个人缴费数据 personal_contributions = df[['对应费款所属期', '缴费基数']].copy() # 提取年份 personal_contributions['年份'] = personal_contributions['对应费款所属期'].astype(str).str[:4] # 计算每年的缴费指数 personal_contributions['缴费指数'] = personal_contributions.apply( lambda row: row['缴费基数'] / social_avg_wages[row['年份']] if row['年份'] in social_avg_wages else None, axis=1 ) # 过滤掉无效的行(即没有缴费指数的行) personal_contributions = personal_contributions.dropna(subset=['缴费指数']) # 输出处理后的数据帧的信息 print(personal_contributions.info()) # 按年份分组求和 yearly_contributions = personal_contributions.groupby('年份')['缴费指数'].sum().reset_index() # 输出按年份分组后的数据帧的信息 print(yearly_contributions.info()) # 计算总的缴费年限 total_years = len(yearly_contributions) # 如果总缴费年限为0,则打印错误信息 if total_years == 0: messagebox.showerror("数据问题", "没有有效的缴费记录,请检查数据。") else: # 计算个人缴费指数 personal_contribution_index = yearly_contributions['缴费指数'].sum() / total_years personal_contribution_index_rounded = round(personal_contribution_index, 2) print(f"个人缴费指数: {personal_contribution_index_rounded}") # 设置字体 plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] plt.rcParams['axes.unicode_minus'] = False # 可视化 fig = plt.figure(figsize=(10, 5)) plt.bar(yearly_contributions['年份'], yearly_contributions['缴费指数']) plt.axhline(y=personal_contribution_index_rounded, color='r', linestyle='-', label=f'个人缴费指数={personal_contribution_index_rounded}') plt.title('指数计算器') plt.xlabel('年份') plt.ylabel('缴费指数') plt.legend() # 显示图表 plt.show()
前提条件,个人登录社保账户导出个人全部缴费明细,表格名为:“个人缴费信息查询.xlsx”,保存在桌面即可。使用原始表格不需要任何改动。
复制代码保存文件名随意放置到桌面,我这里使用的“指数计算.py”。运行Py,F5热键,即可。