Synthetic Banking Dataset
收藏资源简介:
生成100%合成但真实的零售银行数据集,用于AI训练、个性化银行建议、评分、行为检测和销售演示。数据集包含流式交易数据,涵盖工资、租金、订阅、贷款、日常消费、ATM取款等生活事件,并根据国家(如美国、英国、法国)进行本地化,包括名称、银行、账户类型、商户、货币、IBAN/账户号码格式和交易标签。输出格式为Parquet/CSV,支持多国数据生成。
100% synthetic yet realistic retail banking dataset tailored for AI training, personalized banking advisory, scoring, behavior detection and sales demonstrations. The dataset contains streaming transaction data covering typical life events including salary deposits, rent payments, subscription fees, loan transactions, daily expenditures and ATM withdrawals. It is localized based on target countries such as the United States, the United Kingdom and France, with full details covering personal names, banking institutions, account types, merchants, currencies, IBAN/account number formats and transaction tags. The supported output formats are Parquet and CSV, and the dataset enables multi-country data generation.
数据集概述
该数据集是一个完全合成的零售银行交易数据集,专为AI训练、个性化银行建议、评分、行为检测和销售演示而设计。所有数据均在本地生成,不依赖任何云服务。
核心特性
- 合成数据生成: 所有数据均为虚构,包括姓名、IBAN、卡号、商户、地址、电子邮件和电话号码,不涉及任何真实个人或机构信息。
- 多国本地化: 支持
us(美国,默认)、uk(英国)、fr(法国)和mix(混合)四种模式。不同国家/地区使用本地化的银行名称、账户类型、商户、货币、IBAN/账号格式和交易标签。 - 数据真实性: 模拟了现实中的银行交易模式,包括工资发放、房租、订阅、贷款、日常消费、ATM取款、透支费用、内部转账和生活事件。
- 确定性生成: 通过
--seed N参数可实现完全可复现的生成过程。
数据内容
数据集包含两类输出格式:
-
原始业务格式 (
output/): 包含丰富的字段,如客户姓名、月收入、风险偏好、当前余额等。用于销售演示、内部分析和模型训练。文件包括:customers.csv: 客户信息accounts.csv: 账户信息cards.csv: 银行卡信息subscriptions.csv: 订阅信息loans.csv: 贷款信息merchants.csv: 商户目录transactions.csv/transactions.parquet: 交易数据categories.json: 分类体系generation_report.json: 运行元数据
-
合约v1格式 (
delivery/<bank-id>/): 规范化后的格式,包含稳定整数ID,用于下游分析管道。包括:customers.csv: 11列(id, first_name, last_name, email, phone, iban, address, postal_code, city, dob, annual_income_eur)accounts.csv: 5个必填列 + 2个可选列transactions.csv: 7个必填列 + 6个可选列- 支持全量/增量分区(
full/<cutoff>/+delta/<date>/)
生成规模与交易量
- 客户数量可通过
--customers参数调整(默认500)。 - 交易密度基于个人资料类型:学生约18笔/月,高收入者约122笔/月。
- 示例规模(3年窗口期):
- 500名客户:约116万笔交易
- 2,000名客户:约450万笔交易
- 60,000名客户:约1.4亿笔交易
生成方式
- Docker(推荐): 主机无需安装Python/pip。
- 本地venv + Makefile: 适用于有Python环境的系统。
- 直接Python运行: 使用
python -m bank_gen.main。
默认日期窗口为自动更新:从当前日期前推约3年至今。需要注意Makefile有固定的默认日期,可能需要覆盖。
真实性与一致性保障
- 加权的个人资料分布: 学生10%,家庭22%,经理13%,退休人员14%等10种类型。
- 基于个人资料的收入和财富: 使用截断正态分布,高收入/投资者分布呈长尾。
- 有效的账户标识符: 支持FR/GB IBAN mod-97校验、US ABA路由校验和Luhn有效PAN。
- 交易模式模拟: 包括工资支付时间、租金与收入比例、订阅偏好、季节性消费(如7-8月旅行)、周末消费提升、时段分布、标签噪声、透支和费用、ATM取款模式、内部储蓄转账、生活事件影响等。
- 严格一致性: 交易日期不早于客户起始日期,账户开立日期,余额不超过透支限额的1.3倍。
技术架构
项目代码组织清晰,核心模块包括:
config.py: 共享配置locales/: 国家/地区本地化包banking_utils.py: 银行工具函数(IBAN、路由、卡号校验)profiles.py: 10种个人资料模型merchants.py: 商户目录customers.py,accounts.py,cards.py,subscriptions.py,loans.py,life_events.py: 各实体生成逻辑transactions.py: 核心交易流引擎io_writers.py: CSV/Parquet写入器(内存受限)main.py: 命令行界面
性能
- 流式生成: 交易逐条产出,每10万行批量写入磁盘。
- 内存占用恒定: 不随交易总量增长。
- 现代笔记本上500名客户3年数据生成约需1-2分钟。
兼容性
- 支持CSV和Snappy压缩的Parquet格式。
- 通用UTF-8编码,ISO 8601日期格式,负数表示借方交易。
- 可方便导入PostgreSQL、Spark、Polars、DuckDB、Pandas等。
许可证
Apache 2.0 许可证。




