暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

pydbgen:一个数据库随机生成器 | Linux 中国

Linux中国 2018-11-18
864
用这个简单的工具生成带有多表的大型数据库,让你更好地用 SQL 研究数据科学。
-- Tirthajyoti Sarkar



致谢
编译自 | 
https://opensource.com/article/18/11/pydbgen-random-database-table-generator
 
 作者 | Tirthajyoti Sarkar
 译者 | Hank Chow (HankChow) 🌟🌟🌟🌟共计翻译:28.0 篇 贡献时间:353 天

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

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

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

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

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

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

pydbgen 是什么

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

如何安装 pydbgen

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

  1. pip install pydbgen

复制

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

如何使用 pydbgen

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

  1. import pydbgen

  2. from pydbgen import pydbgen

  3. myDB=pydbgen.pydb()

复制

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

  1. myDB.city_real()

  2. >> 'Otterville'

  3. for _ in range(10):

  4.    print(myDB.license_plate())

  5. >> 8NVX937

  6.   6YZH485

  7.   XBY-564

  8.   SCG-2185

  9.   XMR-158

  10.   6OZZ231

  11.   CJN-850

  12.   SBL-4272

  13.   TPY-658

  14.   SZL-0934

复制

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

  1. print(myDB.gen_data_series(num=8,data_type='city'))

  2. >>

  3. New Michelle

  4. Robinborough

  5. Leebury

  6. Kaylatown

  7. Hamiltonfort

  8. Lake Christopher

  9. Hannahstad

  10. West Adamborough

复制

生成随机的 Pandas Dataframe

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

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

  2. testdf

复制

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

生成数据库表

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

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


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

复制

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

生成 Excel 文件

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

  1. myDB.gen_excel(num=20,fields=['name','phone','time','country'],

  2. phone_simple=False,filename='TestExcel.xlsx')

复制

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

生成随机电子邮箱地址

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

  1. for _ in range(10):

  2.    print(myDB.realistic_email('Tirtha Sarkar'))

  3. >>

  4. Tirtha_Sarkar@gmail.com

  5. Sarkar.Tirtha@outlook.com

  6. Tirtha_S48@verizon.com

  7. Tirtha_Sarkar62@yahoo.com

  8. Tirtha.S46@yandex.com

  9. Tirtha.S@att.com

  10. Sarkar.Tirtha60@gmail.com

  11. TirthaSarkar@zoho.com

  12. Sarkar.Tirtha@protonmail.com

  13. Tirtha.S@comcast.net

复制

未来的改进和用户贡献

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

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

一切皆有可能!

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

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


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

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

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


文章转载自Linux中国,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论