天天看點

手把手教你上手python庫pydbgen(附代碼、安裝位址)

手把手教你上手python庫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,但是可以給出一個相似的?

print(myDB.realistic_email('Tirtha Sarkar'))

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

未來的改進和使用者貢獻

目前版本是1.0.5,可能包含許多bug。如果你在執行過程中注意到任何bug或者你的程式崩潰(除了你的錯誤輸入),請告訴我。另外,如果你有一個很酷的想法來為源代碼做貢獻,Github repo(連結:https://github.com/tirthajyoti/pydbgen)将為你打開。有一些問題很容易想到:

手把手教你上手python庫pydbgen(附代碼、安裝位址)

我們可以将機器學習/統計模組化和這個随機資料生成器內建嗎?

手把手教你上手python庫pydbgen(附代碼、安裝位址)

可視化功能可以被添加到發生器中嗎?

原文釋出時間為:2018-04-2

本文作者:T.Sarkar