当前位置: 首页 > 科技观察

pydbgen:数据库随机数生成器_0

时间:2023-03-16 01:04:20 科技观察

使用这个简单的工具可以生成包含多个表的大型数据库,让您更好地使用SQL学习数据科学。在学习数据科学的过程中,最头疼的往往不是算法或技术,而是如何获取一批原始数据。虽然网上有大量真实世界的高质量数据集可用于机器学习,但学习SQL时却并非如此。对于数据科学,熟悉SQL与了解Python或R编程一样重要。如果你想收集姓名、年龄、信用卡信息、机器学习任务地址等信息,在Kaggle上找到专门的数据集比使用足够大的真实数据库要容易得多。有一个简单的工具或库来帮助您生成一个大型数据库,其中包含您需要的大量数据的表不是很好吗?不仅仅是数据科学的初学者,即使是经验丰富的软件测试人员也会需要这样一个简单的工具,只需编写几行代码,就可以随机(但伪随机)生成任意数量但有意义的数据集。因此,我推荐这个名为pydbgen的轻量级Python库。下面我将简单介绍一下这个库的相关内容,你也可以阅读它的文档了解更多信息。什么是pydbgenpydbgen是一个轻量级的纯Python库,可用于生成随机但有意义的数据记录(包括姓名、地址、信用卡号、日期、时间、公司名称、职位、车牌号等),存储在一个PandasDataframe对象,并保存到SQLite数据库或Excel文件中。如何安装pydbgen当前1.0.5版本的pydbgen托管在PyPI(Python包索引存储库)上并且依赖于Faker。安装pydbgen只需要执行命令:pipinstallpydbgen已经在Python3.6环境下测试安装成功,但是在Python2环境下无法正常安装。如何使用pydbgen在使用pydbgen之前,首先要初始化pydb对象。importpydbgenfrompydbgenimportpydbgenmyDB=pydbgen.pydb()然后就可以调用pydb对象暴露的各种内部函数了。您可以按照下面的示例输出随机的美国城市和车牌号:myDB.city_real()>>'Otterville'for_inrange(10):print(myDB.license_plate())>>8NVX9376YZH485XBY-564SCG-2185XMR-1586OZZ231CJN-850SBL-4272TPY-658SZL-0934此外,如果您输入city()而不是city_real(),返回的将是一个虚构的城市名称。print(myDB.gen_data_series(num=8,data_type='city'))>>NewMichelleRobinboroughLeeburyKaylatownHamiltonfortLakeChristopherHannahstadWestAdamboroughGeneraterandomPandasDataframe可以指定生成数据的数量和类型,但是要注意返回的结果都是字符串或文本类型。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.comSarkar.Tirtha@outlook.comTirtha_S48@verizon.comTirtha_Sarkar62@yahoo.comTirtha.S46@yandex.comTirtha.S@att.comSarkar.Tirtha60@gmail.comTirthaSarkar@zoho.comSarkar.Tirtha@protonmail.comTirtha.S@comcast.net当前版本不保证未来的改进和用户贡献。如果您在pydbgen中发现导致它在运行时崩溃的错误,请向我报告。如果您打算为这个项目贡献代码,我们随时欢迎您。当然,还有很多可以改进的方向:pydbgen作为一个随机数据生成器,能否集成一些机器学习或者统计建模的功能?pydbgen会增加可视化功能吗?一切皆有可能!

猜你喜欢