当你开始学习数据科学时,通常你最大的担忧不是算法或技术,而是获取原始数据。虽然网络上有许多高质量的真实数据集可用于尝试酷炫的机器学习技术,但我发现学习 SQL 时情况并非如此。
对于数据科学来说,对 SQL 的基本熟悉程度几乎与知道如何用 Python 或 R 编写代码一样重要。但是,在 Kaggle 上找到玩具数据集要比访问足够大的、包含真实数据(例如姓名、年龄、信用卡、社会安全号码、地址、生日等)的数据库容易得多,这些数据是专门为机器学习任务设计或策划的。
如果有一个简单的工具或库来生成一个包含多张表的大型数据库,其中填充了您自己选择的数据,那岂不是很棒吗?
除了数据科学初学者之外,即使是经验丰富的软件测试人员也可能会发现拥有一个简单的工具很有用,只需几行代码,他们就可以生成任意大的数据集,其中包含随机(虚假)但有意义的条目。
因此,我很高兴介绍一个名为 pydbgen 的轻量级 Python 库。在本文中,我将简要分享一些关于该软件包的信息,您可以通过阅读文档了解更多信息。
什么是 pydbgen?
Pydbgen 是一个轻量级的纯 Python 库,用于生成随机有用的条目(例如,姓名、地址、信用卡号、日期、时间、公司名称、职位、车牌号等),并将它们保存为 Pandas dataframe 对象、数据库文件中的 SQLite 表或 Microsoft Excel 文件。
如何安装 pydbgen
当前版本 (1.0.5) 托管在 PyPI(Python 包索引存储库)上。您需要安装 Faker 才能使其工作。要安装 Pydbgen,请输入
pip install pydbgen
它已在 Python 3.6 上测试过,并且不适用于 Python 2 安装。
如何使用它
要开始使用 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 如下所示。

生成数据库表
您可以选择将生成多少种数据类型以及生成哪些数据类型。所有内容都以数据库的 text/VARCHAR 数据类型返回。您可以指定数据库文件名和表名。
myDB.gen_table(db_file='Testdb.DB',table_name='People',
fields=['name','city','street_address','email'])
这将生成一个 .db 文件,该文件可以与 MySQL 或 SQLite 数据库服务器一起使用。下图显示了在 DB Browser for SQLite 中打开的数据库表。

生成 Excel 文件
与上面的示例类似,以下代码将生成一个包含随机数据的 Excel 文件。请注意,phone_simple 设置为 False,因此它可以生成复杂的长格式电话号码。当您想尝试更复杂的数据提取代码时,这会派上用场。
myDB.gen_excel(num=20,fields=['name','phone','time','country'],
phone_simple=False,filename='TestExcel.xlsx')
生成的文件如下所示

生成用于废弃用途的随机电子邮件 ID
pydbgen 中的内置方法是 realistic_email,它从种子名称生成随机电子邮件 ID。当您不想在网络上使用您的真实电子邮件地址时,这很有帮助——但又很接近真实地址。
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
未来的改进和用户贡献
当前版本可能存在许多错误——如果您发现任何错误并且您的程序在执行期间崩溃(除了由于您的不正确条目而导致的崩溃),请告诉我。此外,如果您有很酷的想法要贡献给源代码,GitHub 仓库是开放的。一些问题很容易想到
- 我们可以将一些机器学习/统计建模与这个随机数据生成器集成吗?
- 是否应该向生成器添加可视化功能?
可能性是无限且令人兴奋的!
如果您有任何问题或想法要分享,请通过 tirthajyoti[AT]gmail.com 联系我。如果您像我一样对机器学习和数据科学充满热情,请在 LinkedIn 上添加我 或在 Twitter 上关注我。另外,请查看我的 GitHub 仓库,了解 Python、R 或 MATLAB 中的其他有趣代码片段以及一些机器学习资源。
最初发布于 Towards Data Science。根据 CC BY-SA 4.0 许可。
评论已关闭。