手把手教你上手python库pydbgen(附代码、安装地址)

本文通过介绍pydbgen的安装使用,以及一些基本功能实现和代码,带你简单地了解一下pydbgen。

SQL或数据科学领域的初学者通常会很难轻易访问大型示例数据库文件(.DB或.sqlite)来练习SQL命令。那么用一个简单的工具或库来生成一个包含多个表的,并且用自己选择的数据填充的大型数据库会不会很好?

当你开始学习和实践数据科学时,通常最担心的不是算法或技术,而是原始数据的可用性。幸运的是,网上有许多高质量的真实数据库可用于尝试学习热门机器学习技巧。但是,从我个人的经验来看从个人经验来讲,我发现学习SQL并不是这样。现在,对于数据科学领域来说,掌握SQL的基础知识与知道如何使用Python或R编写代码几乎同等重要。但是,访问存有真实数据的足够大的数据库(例如名称,年龄,信用卡,SSN,地址,生日等)并不像访问Kaggle上的玩具数据集一样常见,这些数据集是为机器学习的任务专门设计或策划的。

用一个简单的工具或库来生成一个包含多个表的,并且用自己选择的数据填充的大型数据库会不会很好?

除了数据科学领域的初学者,即使经验丰富的软件测试人员也可能发现使用简单的工具很有用,只需几行代码,他们就可以任意生成包含随机(假)而且有意义的条目的大型数据集。

我很高兴能介绍一个轻量级的Python库,即pydbgen。你可以在这里阅读了解关于软件包的详细信息。(链接:http://pydbgen.readthedocs. Io /en /latest/#)我将在短文中回顾类似的细节。

pydbgen究竟是什么?

它是一个轻量级的纯python库,用于生成随机有用的条目(例如名称,地址,信用卡号码,日期,时间,公司名称,职位名称,车牌号码等),并将其保存在Pandas数据框对象中,或者作为数据库文件中的SQLite表格或MS Excel文件。

如何安装?

它(当前版本为1.0.5)是托管在PyPI(Python Package Index repository)上的。请记住你需要提前安装Faker(链接:https://faker.readthedocs.io/en/latest/index.html)来完成这项工作。所以,只需键入:

pip install pydbgen

请注意,它目前仅在Python 3.6上进行了测试。它不适用于Python 2的安装。

如何使用?

你必须创建一个pydb对象才能开始使用它。

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

然后,你可以访问由pydbobject公开的各种内部函数。例如,要打印随机的美国城市:

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数据框?

你可以选择要生成的数量和数据类型。请注意,所有内容都以string/texts形式返回。

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

如何生成数据库表?

你可以选择要生成数据的数量和类型。请注意,所有内容都以数据库的text/ VARCHAR所有数据类型返回所有数据都以text/ VARCHAR类型返回数据库。你可以指定数据库文件名和表名。

myDB.gen_table(db_file='Testdb.DB',table_name='People', fields=['name','city','street_address','email'])

这会生成一个可用于MySQL或SQLite数据库服务器的.DB文件。 生成的数据库表在SQLite数据库浏览器中打开。

如何生成Excel文件?

与上面类似,只需使用以下代码生成随机数据的Excel文件即可。 请注意,'simple_phone'集被设置为False,因此会生成复杂的长型电话号码。这样可以方便试验更多涉及数据提取的代码!

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

用一种很酷的方法生成随机emailIDs以便废物利用?

pydbgen中一种内置方法是realistic_email,它从种子名称中生成随机电子邮件IDs。你能想到在网络上使用这个吗?你不想给出真实的电子邮件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

未来的改进和用户贡献

当前版本是1.0.5,可能包含许多bug。如果你在执行过程中注意到任何bug或者你的程序崩溃(除了你的错误输入),请告诉我。另外,如果你有一个很酷的想法来为源代码做贡献,Github repo(链接:https://github.com/tirthajyoti/pydbgen)将为你打开。有一些问题很容易想到:

  • 我们可以将机器学习/统计建模和这个随机数据生成器集成吗?
  • 可视化功能可以被添加到发生器中吗?

所有的可能性是无穷无尽且令人激动万分的……

如果你有任何问题或想法可以分享,请通过tirthajyoti[AT]gmail.com联系作者。你也可以在Python,R或MATLAB以及机器学习资源中查找作者的GitHub存储库(链接:https://github.com/tirthajyoti?tab=repositories)以获取其他有趣的代码片段。 如果你像我一样热衷于机器学习/数据科学,请随时在LinkedIn上添加我(链接:https://www.linkedin.com/in/tirthajyoti-sarkar-2127aa7/)或在Twitter上关注我(链接:https://twitter.com/tirthajyotiS)。

原文链接:https://www.codementor.io/tirthajyotisarkar/introducing-pydbgen-a-random-dataframe-database-table-generator-hi6i65h46

译者简介

王婷,南京理工大学在读研究生,爱笑得有眼角鱼尾纹的运气不赖的女生。不喜欢呆板、教条、无聊,喜欢接触新事物,参加新活动,融入新环境,结交新朋友,互相学习,取长补短。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

原文发布于微信公众号 - 数据派THU(DatapiTHU)

原文发表时间:2018-04-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能头条

如何在Kaggle上受到万人敬仰?

1182
来自专栏互联网开发者交流社区

SEO-关键词密度与友情链接交换技巧

1033
来自专栏java一日一条

Android开发者必知的开发资源

随着Android平台市场份额的持续猛增 ,越来越多的开发者开始投入Android应用程序的开发大潮。如果您是一位2016年刚刚入行的Android开发新兵,恭...

1342
来自专栏机器学习算法与Python学习

基于遗传算法(C#编写)的智能组卷系统优化

最近由于项目的需要,基于.Net 4.0框架和WPF开发window的客户端(开发环境为win7 旗舰版;Visual Studio 2013),在功能实现上需...

3198
来自专栏微信终端开发团队的专栏

关于Android N的那些事

今年3月,Google破天荒提前半年发布了Android N开发者预览版。当然,作为一个不合格的谷粉并没有第一时间体验安装,因为至今仍然能够回忆起来去年今日此门...

2786
来自专栏数据小魔方

当PowerBI遇到R语言

PowerBI作为微软系最新的商务智能办公系统,自去年发布以来,一直都备受瞩目。 他的更新频次相当之高,功能更新迭代非常迅速。 大概对可视化领域稍有涉猎的朋友们...

4584
来自专栏CDA数据分析师

强大的图形功能软件:S-Plus

【摘要】S语言是由AT&T 贝尔实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。它的丰富的数据类型(向量、数组、列表、对象等)特别有利于实现新的统...

18910
来自专栏Hadoop数据仓库

HAWQ取代传统数仓实践(十九)——OLAP

一、OLAP简介 1. 概念         OLAP是英文是On-Line Analytical Processing的缩写,意为联机分析处理。此概念最早由关...

4935
来自专栏AI科技评论

学界 | MIT CSAIL提出并行计算系统Fractal,能实现88倍加速

AI科技评论按:MIT News最新报道,MIT CSAIL(麻省理工学院计算机科学与人工智能实验室)已经开发出了一个新系统Fractal,这个系统不仅能使并行...

28610
来自专栏京东技术

多数据模型数据库 | 应用实例解析

吕信,京东商城技术架构部资深架构师,拥有多年数据产品研发及架构经验。在京东及国内主导过多种数据产品的开发及社区建设,积极活跃于数据产品领域,对数据库及大数据领域...

1021

扫码关注云+社区