
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,但是可以給出一個相似的?
print(myDB.realistic_email('Tirtha Sarkar'))
未來的改進和使用者貢獻
目前版本是1.0.5,可能包含許多bug。如果你在執行過程中注意到任何bug或者你的程式崩潰(除了你的錯誤輸入),請告訴我。另外,如果你有一個很酷的想法來為源代碼做貢獻,Github repo(連結:https://github.com/tirthajyoti/pydbgen)将為你打開。有一些問題很容易想到:
我們可以将機器學習/統計模組化和這個随機資料生成器內建嗎?
可視化功能可以被添加到發生器中嗎?
原文釋出時間為:2018-04-2
本文作者:T.Sarkar