pydbgen:一个数据库随机生成器

发表于:2018-11-20 10:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Tirthajyoti Sarkar    来源:Linux中国

分享:
  
       用这个简单的工具生成带有多表的大型数据库,让你更好地用SQL研究数据科学。
  在研究数据科学的过程中,最麻烦的往往不是算法或者技术,而是如何获取到一批原始数据。尽管网上有很多真实优质的数据集可以用于机器学习,然而在学习SQL时却不是如此。
  对于数据科学来说,熟悉SQL的重要性不亚于了解Python或R编程。如果想收集诸如姓名、年龄、信用卡信息、地址这些信息用于机器学习任务,在Kaggle上查找专门的数据集比使用足够大的真实数据库要容易得多。
  如果有一个简单的工具或库来帮助你生成一个大型数据库,表里还存放着大量你需要的数据,岂不美哉?
  不仅仅是数据科学的入门者,即使是经验丰富的软件测试人员也会需要这样一个简单的工具,只需编写几行代码,就可以通过随机(但是是假随机)生成任意数量但有意义的数据集。
  因此,我要推荐这个名为pydbgen的轻量级Python库。在后文中,我会简要说明这个库的相关内容,你也可以阅读它的文档详细了解更多信息。
  pydbgen是什么
  pydbgen是一个轻量的纯Python库,它可以用于生成随机但有意义的数据记录(包括姓名、地址、信用卡号、日期、时间、公司名称、职位、车牌号等等),存放在PandasDataframe对象中,并保存到SQLite数据库或Excel文件。
  如何安装pydbgen
  目前1.0.5版本的pydbgen托管在PyPI(Python包索引存储库PythonPackageIndexrepository)上,并且对Faker有依赖关系。安装pydbgen只需要执行命令:
pipinstallpydbgen
  已经在Python3.6环境下测试安装成功,但在Python2环境下无法正常安装。
  如何使用pydbgen
  在使用pydbgen之前,首先要初始化pydb对象。
  importpydbgen
  frompydbgenimportpydbgen
  myDB=pydbgen.pydb()
  随后就可以调用pydb对象公开的各种内部函数了。可以按照下面的例子,输出随机的美国城市和车牌号码:
myDB.city_real()
  >>'Otterville'
  for_inrange(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'))
  >>
  NewMichelle
  Robinborough
  Leebury
  Kaylatown
  Hamiltonfort
  LakeChristopher
  Hannahstad
  WestAdamborough
  生成随机的PandasDataframe
  你可以指定生成数据的数量和种类,但需要注意的是,返回结果均为字符串或文本类型。
   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_inrange(10):
  print(myDB.realistic_email('TirthaSarkar'))
  >>
  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是否会添加可视化功能?
  一切皆有可能!

     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。

精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号