大家好!
今天给大家带来一个超实用、能落地、每天都能用的 Python 实战项目 ——「自动记账小程序」。
不用再手动记在本子上,不用再做复杂的 Excel 表格,输入收支信息,程序自动:
✅ 保存记录
✅ 统计收支
✅ 生成可视化报表
✅ 导出 Excel
全程复制代码就能用,新手也能 1 小时搞定,学会直接提升生活 / 办公效率!
一、这个记账小程序能解决什么问题?
🚫 手动记账容易漏记、丢记录
🚫 Excel 统计收支麻烦,还要手动算总和
🚫 想看看月度消费趋势,还要自己做图表
✅ 输入即保存,数据永不丢
✅ 一键统计总收入 / 总支出 / 结余
✅ 自动生成消费趋势图,一眼看懂钱花在哪
✅ 支持导出 Excel,方便备份 / 分享
二、准备工作(2 分钟搞定)
打开命令提示符,安装所需依赖:
pip install pandas matplotlib openpyxl
三、完整代码(直接复制即用)
import osimport pandas as pdimport matplotlib.pyplot as pltfrom datetime import datetime# 全局配置FILE_NAME = "记账数据.xlsx"# 设置中文字体,避免图表乱码plt.rcParams["font.sans-serif"] = ["SimHei"]plt.rcParams["axes.unicode_minus"] = Falsedef init_file(): """初始化记账文件(首次运行自动创建)""" if not os.path.exists(FILE_NAME): # 创建Excel文件,包含列名 df = pd.DataFrame(columns=["日期", "类型", "金额", "备注"]) df.to_excel(FILE_NAME, index=False) print("✅ 初始化记账文件成功!")def add_record(): """添加记账记录""" print("\n===== 添加记账记录 =====") # 获取用户输入 date = datetime.now().strftime("%Y-%m-%d") # 默认当前日期 custom_date = input(f"请输入日期(格式:YYYY-MM-DD,默认{date}):") if custom_date: date = custom_date type_ = input("请输入类型(收入/支出):") while type_ not in ["收入", "支出"]: print("❌ 类型只能是「收入」或「支出」!") type_ = input("请重新输入类型(收入/支出):") # 金额校验 while True: try: money = float(input("请输入金额:")) break except ValueError: print("❌ 金额必须是数字!请重新输入") remark = input("请输入备注(如:工资、吃饭、购物):") # 读取原有数据,添加新记录 df = pd.read_excel(FILE_NAME) new_record = pd.DataFrame({ "日期": [date], "类型": [type_], "金额": [money], "备注": [remark] }) df = pd.concat([df, new_record], ignore_index=True) df.to_excel(FILE_NAME, index=False) print("✅ 记账成功!")def show_statistics(): """查看收支统计""" if not os.path.exists(FILE_NAME): print("❌ 暂无记账数据,请先添加记录!") return df = pd.read_excel(FILE_NAME) if df.empty: print("❌ 暂无记账数据,请先添加记录!") return # 统计总收支 total_income = df[df["类型"] == "收入"]["金额"].sum() total_outcome = df[df["类型"] == "支出"]["金额"].sum() balance = total_income - total_outcome print("\n===== 收支统计 =====") print(f"💰 总收入:{total_income:.2f} 元") print(f"💸 总支出:{total_outcome:.2f} 元") print(f"📊 结余:{balance:.2f} 元") # 按月统计 df["日期"] = pd.to_datetime(df["日期"]) df["月份"] = df["日期"].dt.to_period("M") monthly_stats = df.groupby(["月份", "类型"])["金额"].sum().unstack(fill_value=0) print("\n===== 月度收支统计 =====") print(monthly_stats) # 生成可视化图表 monthly_stats.plot(kind="bar", figsize=(10, 6)) plt.title("月度收支趋势图", fontsize=14) plt.xlabel("月份") plt.ylabel("金额(元)") plt.xticks(rotation=45) plt.tight_layout() plt.savefig("收支趋势图.png") plt.show() print("✅ 收支趋势图已保存为:收支趋势图.png")def show_all_records(): """查看所有记账记录""" if not os.path.exists(FILE_NAME): print("❌ 暂无记账数据,请先添加记录!") return df = pd.read_excel(FILE_NAME) if df.empty: print("❌ 暂无记账数据,请先添加记录!") return print("\n===== 所有记账记录 =====") print(df.to_string(index=False))def main(): """主程序""" init_file() while True: print("\n===== Python自动记账小程序 =====") print("1. 添加记账记录") print("2. 查看收支统计(含图表)") print("3. 查看所有记录") print("4. 退出程序") choice = input("\n请输入操作编号(1-4):") if choice == "1": add_record() elif choice == "2": show_statistics() elif choice == "3": show_all_records() elif choice == "4": print("👋 感谢使用,再见!") break else: print("❌ 输入错误,请输入1-4之间的数字!")if __name__ == "__main__": main()
四、使用教程(超详细,新手必看)
步骤 1:保存代码
把上面的完整代码复制,保存为account_book.py(任意文件夹均可)。
步骤 2:运行程序
双击account_book.py,或在命令行输入:
步骤 3:操作菜单说明
运行后会看到主菜单:
===== Python自动记账小程序 =====1. 添加记账记录2. 查看收支统计(含图表)3. 查看所有记录4. 退出程序
👉 操作 1:添加记账记录
输入1,按提示填写:
- 日期:默认当前日期,也可自定义(如 2026-03-22)
- 类型:只能选「收入」或「支出」(输入错误会提示重新输入)
- 金额:数字(如 50、100.5),非数字会自动校验
👉 操作 2:查看收支统计
输入2,程序会自动:
👉 操作 3:查看所有记录
输入3,会列出所有记账记录,清晰明了。
👉 操作 4:退出程序
输入4,安全退出。
五、核心功能解析(新手也能懂)
1. 数据持久化
用 Excel 文件保存数据,关闭程序后记录不会丢失,随时可查看 / 修改。
2. 数据校验
3. 数据统计
4. 可视化图表
自动生成柱状图,直观展示月度收支趋势,比纯数字更易理解。
六、扩展优化建议(进阶学习)
学会基础版本后,你可以尝试优化:
七、新手常见问题解答
Q1:运行报错「找不到 pandas」?
A:先执行pip install pandas openpyxl matplotlib安装依赖。
Q2:中文乱码?
A:代码已内置中文字体配置,无需额外设置。
Q3:数据保存在哪里?
A:和代码文件同目录的「记账数据.xlsx」文件里,可直接用 Excel 打开编辑。
Q4:可以在手机上用吗?
A:可以安装 Python 手机端(如 Pydroid),复制代码即可运行。
结语
这个自动记账小程序,看似简单,却融合了 Python 的核心应用:
✅ 文件操作(Excel 读写)
✅ 数据处理(pandas 统计)
✅ 可视化(matplotlib 画图)
✅ 交互逻辑(菜单选择、用户输入)
学会它,不仅能拥有一个实用的记账工具,更能巩固 Python 核心技能,为后续学习更复杂的项目打下基础。
如果觉得这个项目有用,欢迎点赞 + 在看 + 转发,让更多新手能上手实战!
总结
- 本次的自动记账小程序基于
pandas和matplotlib实现,支持收支记录、数据统计、可视化图表生成,数据持久化保存在 Excel 中; - 代码内置数据校验逻辑,能避免新手输入错误,运行前需安装
pandas、openpyxl、matplotlib三个依赖库; - 程序操作简单,通过菜单选择即可完成所有功能,新手可在此基础上扩展删除 / 修改记录、预算提醒等功能。