pydbgen:一个数据库随机生成器
创始人
2024-03-02 00:59:59
0

用这个简单的工具生成带有多表的大型数据库,让你更好地用 SQL 研究数据科学。

在研究数据科学的过程中,最麻烦的往往不是算法或者技术,而是如何获取到一批原始数据。尽管网上有很多真实优质的数据集可以用于机器学习,然而在学习 SQL 时却不是如此。

对于数据科学来说,熟悉 SQL 的重要性不亚于了解 Python 或 R 编程。如果想收集诸如姓名、年龄、信用卡信息、地址这些信息用于机器学习任务,在 Kaggle 上查找专门的数据集比使用足够大的真实数据库要容易得多。

如果有一个简单的工具或库来帮助你生成一个大型数据库,表里还存放着大量你需要的数据,岂不美哉?

不仅仅是数据科学的入门者,即使是经验丰富的软件测试人员也会需要这样一个简单的工具,只需编写几行代码,就可以通过随机(但是是假随机)生成任意数量但有意义的数据集。

因此,我要推荐这个名为 pydbgen 的轻量级 Python 库。在后文中,我会简要说明这个库的相关内容,你也可以阅读它的文档详细了解更多信息。

pydbgen 是什么

pydbgen 是一个轻量的纯 Python 库,它可以用于生成随机但有意义的数据记录(包括姓名、地址、信用卡号、日期、时间、公司名称、职位、车牌号等等),存放在 Pandas Dataframe 对象中,并保存到 SQLite 数据库或 Excel 文件。

如何安装 pydbgen

目前 1.0.5 版本的 pydbgen 托管在 PyPI( Python 包索引存储库 Python Package Index repository )上,并且对 Faker 有依赖关系。安装 pydbgen 只需要执行命令:

pip install pydbgen

已经在 Python 3.6 环境下测试安装成功,但在 Python 2 环境下无法正常安装。

如何使用 pydbgen

在使用 pydbgen 之前,首先要初始化 pydb 对象。

import pydbgen
from pydbgen import pydbgen
myDB=pydbgen.pydb()

随后就可以调用 pydb 对象公开的各种内部函数了。可以按照下面的例子,输出随机的美国城市和车牌号码:

myDB.city_real()
>> 'Otterville'
for _ in range(10):
    print(myDB.license_plate())
>> 8NVX937
   6YZH485
   XBY-564
   SCG-2185
   XMR-158
   6OZZ231
   CJN-850
   SBL-4272
   TPY-658
   SZL-0934

另外,如果你输入的是 city() 而不是 city_real(),返回的将会是虚构的城市名。

print(myDB.gen_data_series(num=8,data_type='city'))
>>
New Michelle
Robinborough
Leebury
Kaylatown
Hamiltonfort
Lake Christopher
Hannahstad
West Adamborough

生成随机的 Pandas Dataframe

你可以指定生成数据的数量和种类,但需要注意的是,返回结果均为字符串或文本类型。

testdf=myDB.gen_dataframe(5,['name','city','phone','date'])
testdf

最终产生的 Dataframe 类似下图所示。

生成数据库表

你也可以指定生成数据的数量和种类,而返回结果是数据库中的文本或者变长字符串类型。在生成过程中,你可以指定对应的数据库文件名和表名。

myDB.gen_table(db_file='Testdb.DB',table_name='People',

fields=['name','city','street_address','email'])

上面的例子种生成了一个能被 MySQL 和 SQLite 支持的 .db 文件。下图则显示了这个文件中的数据表在 SQLite 可视化客户端中打开的画面。

生成 Excel 文件

和上面的其它示例类似,下面的代码可以生成一个具有随机数据的 Excel 文件。值得一提的是,通过将 phone_simple 参数设为 False ,可以生成较长较复杂的电话号码。如果你想要提高自己在数据提取方面的能力,不妨尝试一下这个功能。

myDB.gen_excel(num=20,fields=['name','phone','time','country'],
phone_simple=False,filename='TestExcel.xlsx')

最终的结果类似下图所示:

生成随机电子邮箱地址

pydbgen 内置了一个 realistic_email 方法,它基于种子来生成随机的电子邮箱地址。如果你不想在网络上使用真实的电子邮箱地址时,这个功能可以派上用场。

for _ in range(10):
    print(myDB.realistic_email('Tirtha Sarkar'))
>>
Tirtha_Sarkar@gmail.com
Sarkar.Tirtha@outlook.com
Tirtha_S48@verizon.com
Tirtha_Sarkar62@yahoo.com
Tirtha.S46@yandex.com
Tirtha.S@att.com
Sarkar.Tirtha60@gmail.com
TirthaSarkar@zoho.com
Sarkar.Tirtha@protonmail.com
Tirtha.S@comcast.net

未来的改进和用户贡献

目前的版本中并不完美。如果你发现了 pydbgen 的 bug 导致它在运行期间发生崩溃,请向我反馈。如果你打算对这个项目贡献代码,也随时欢迎你。当然现在也还有很多改进的方向:

  • pydbgen 作为随机数据生成器,可以集成一些机器学习或统计建模的功能吗?
  • pydbgen 是否会添加可视化功能?

一切皆有可能!

如果你有任何问题或想法想要分享,都可以通过 tirthajyoti@gmail.com 与我联系。如果你像我一样对机器学习和数据科学感兴趣,也可以添加我的 LinkedIn 或在 Twitter 上关注我。另外,还可以在我的 GitHub 上找到更多 Python、R 或 MATLAB 的有趣代码和机器学习资源。

本文以 CC BY-SA 4.0 许可在 Towards Data Science 首发。


via: https://opensource.com/article/18/11/pydbgen-random-database-table-generator

作者:Tirthajyoti Sarkar 选题:lujun9972 译者:HankChow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

下一代数据库技术展现大幅减...
钛媒体App 6月25日消息,为破解人工智能(AI)智能体常见的“...
2026-06-25 09:29:24
当AI学会了“删库跑路”,...
“一场Agent删库事故,意外揭开数据库体系的AI重构进程 202...
2026-05-09 19:47:42
AI大模型入场,重写职教生...
□ 本报记者 叶 真 生成式人工智能浪潮澎湃发展,如何让人工智能尤...
2026-03-24 12:39:34
AI“养龙虾”刷屏!券商出...
AI“养龙虾”太火了,最近不管打开哪个平台,大家都在聊怎么养龙虾。...
2026-03-09 09:46:17
“落地”为王,南京掀AI应...
□ 本报记者 李 凯 马年春节“AI红包大战”打响之前,南京优通科...
2026-02-02 07:18:53
AI拿走HBM,手机与PC...
“数据库最早发展的时候,关键挑战就是内存墙,到今天,这个‘幽灵’又...
2026-01-31 17:49:06

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...