DuckDB 实战笔记 - 2026-09-05
💸 别再手动记账了!用 DuckDB 10 分钟搞定全年财务分析
周末翻账单,发现钱不知道花哪去了?别用 Excel 硬扛了。今天教你把支付宝/微信导出的 CSV 直接扔给 DuckDB,一条 SQL 算出「月度消费趋势 + 最大开销类别」,立刻看清你的钱去哪了。
🎯 真实场景
你导出了 2026 年 1-8 月的支付宝账单(alipay.csv),字段:date, category, amount。想知道每月总支出、最大支出类别,以及哪个月最烧钱。
🐍 代码:Python 一键分析
import duckdb
# 1. 直接从 CSV 建表(自动推断 schema)
con = duckdb.connect()
con.execute("""
CREATE TABLE bills AS
SELECT * FROM read_csv('alipay.csv',
header=true,
dateformat='%Y-%m-%d')
""")
# 2. 核心分析:月度汇总 + 最大类别
result = con.execute("""
SELECT
strftime(date, '%Y-%m') as month,
SUM(amount) as total_spend,
-- 找出每月消费最高的类别
(SELECT category FROM bills b2
WHERE strftime(b2.date, '%Y-%m') = month
ORDER BY b2.amount DESC LIMIT 1) as top_category
FROM bills
GROUP BY month
ORDER BY month
""").fetchdf()
print(result)
💡 核心价值:为什么是 DuckDB?
- 零配置:不用装数据库,Python 里一行
import duckdb就能跑 - CSV 当表查:
read_csv自动识别类型,省去 pandas 清洗步骤 - 子查询秒回:上面这种「找每月最大类别」的关联子查询,pandas 要写循环,DuckDB 一条 SQL 搞定
- 内存分析:处理几十万行账单不卡,比 Excel 快 10 倍
⚡ 进阶技巧 想加个「环比上月变化」?把上面 SQL 末尾加一句:
-- 用 LAG 窗口函数算环比
SELECT month, total_spend,
total_spend - LAG(total_spend) OVER (ORDER BY month) as diff
FROM (-- 上面的查询结果)
赶紧把账单导出来跑一下,今晚就知道该省哪笔钱了。💪