当您开始学习数据科学时,通常您最大的担心不是算法或技术,而是对原始数据的访问。 尽管网上有许多高质量的现实数据集可用于尝试出色的机器学习技术,但我发现在学习SQL时并非如此。
对于数据科学而言,对SQL的基本了解几乎与知道如何使用Python或R编写代码一样重要。但是,在Kaggle上查找玩具数据集要比访问具有真实数据的足够大的数据库(例如,姓名,年龄,信用卡,社会安全号码,地址,生日等),这些内容是专门为机器学习任务设计或策划的。
除了数据科学的初学者之外,即使是经验丰富的软件测试人员也可能会发现拥有一个简单的工具很有用,该工具只需用几行代码就可以生成具有随机(伪造)但有意义的条目的任意大数据集。
基于这个原因,我很高兴介绍一个名为pydbgen的轻量级Python库。 在本文中,我将简要分享有关该软件包的一些信息,您可以通过阅读docs了解更多信息。
什么是pydbgen?
Pydbgen是一个轻量级的纯Python库,用于生成随机有用的条目(例如,名称,地址,信用卡号,日期,时间,公司名称,职务,车牌号等)并将其保存在Pandas数据框对象中,作为数据库文件或Microsoft Excel文件中SQLite表。
如何安装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
生成带有随机条目的熊猫数据框
您可以选择将生成多少数据类型。 请注意,所有内容都将以字符串/文本形式返回。
testdf
= myDB.
gen_dataframe
(
5
,
[
'name'
,
'city'
,
'phone'
,
'date'
]
)
testdf
结果数据帧如下图所示。
生成数据库表
您可以选择将生成多少数据类型。 所有内容都以数据库的text / VARCHAR数据类型返回。 您可以指定数据库文件名和表名。
myDB.
gen_table
( db_file
=
'Testdb.DB'
, table_name
=
'People'
,
fields
=
[
'name'
,
'city'
,
'street_address'
,
'email'
]
)
这将生成一个.db文件,该文件可与MySQL或SQLite数据库服务器一起使用。 下图显示了在DB Browser中为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中的其他有趣代码段以及一些机器学习资源。
最初发表于《 走向数据科学》 。 根据CC BY-SA 4.0许可。
翻译自: https://opensource.com/article/18/11/pydbgen-random-database-table-generator