標籤:

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

原文標題:Introducing pydbgen: A random dataframe/database table generator

作者:Tirthajyoti Sarkar

翻譯:王婷

校對:李海明

本文共1500字,建議閱讀5分鐘。 本文通過介紹pydbgen的安裝使用,以及一些基本功能實現和代碼,帶你簡單地了解一下pydbgen。

SQL或數據科學領域的初學者通常會很難輕易訪問大型示例資料庫文件(.DB或.sqlite)來練習SQL命令。那麼用一個簡單的工具或庫來生成一個包含多個表的,並且用自己選擇的數據填充的大型資料庫會不會很好?

當你開始學習和實踐數據科學時,通常最擔心的不是演算法或技術,而是原始數據的可用性。幸運的是,網上有許多高質量的真實資料庫可用於嘗試學習熱門機器學習技巧。但是,從我個人的經驗來看從個人經驗來講,我發現學習SQL並不是這樣。現在,對於數據科學領域來說,掌握SQL的基礎知識與知道如何使用Python或R編寫代碼幾乎同等重要。但是,訪問存有真實數據的足夠大的資料庫(例如名稱,年齡,信用卡,SSN,地址,生日等)並不像訪問Kaggle上的玩具數據集一樣常見,這些數據集是為機器學習的任務專門設計或策劃的。

用一個簡單的工具或庫來生成一個包含多個表的,並且用自己選擇的數據填充的大型資料庫會不會很好?

除了數據科學領域的初學者,即使經驗豐富的軟體測試人員也可能發現使用簡單的工具很有用,只需幾行代碼,他們就可以任意生成包含隨機(假)而且有意義的條目的大型數據集。

我很高興能介紹一個輕量級的Python庫,即pydbgen。你可以在這裡閱讀了解關於軟體包的詳細信息。(鏈接:pydbgen.readthedocs. Io /en /latest/#)我將在短文中回顧類似的細節。

pydbgen究竟是什麼?

它是一個輕量級的純python庫,用於生成隨機有用的條目(例如名稱,地址,信用卡號碼,日期,時間,公司名稱,職位名稱,車牌號碼等),並將其保存在Pandas數據框對象中,或者作為資料庫文件中的SQLite表格或MS Excel文件。

如何安裝?

它(當前版本為1.0.5)是託管在PyPI(Python Package Index repository)上的。請記住你需要提前安裝Faker(鏈接:faker.readthedocs.io/en)來完成這項工作。所以,只需鍵入:

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,但是可以給出一個相似的?

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

未來的改進和用戶貢獻

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

  • 我們可以將機器學習/統計建模和這個隨機數據生成器集成嗎?
  • 可視化功能可以被添加到發生器中嗎?

所有的可能性是無窮無盡且令人激動萬分的……

如果你有任何問題或想法可以分享,請通過tirthajyoti[AT]gmail.com聯繫作者。你也可以在Python,R或MATLAB以及機器學習資源中查找作者的GitHub存儲庫(鏈接:github.com/tirthajyoti?)以獲取其他有趣的代碼片段。 如果你像我一樣熱衷於機器學習/數據科學,請隨時在LinkedIn上添加我(鏈接:linkedin.com/in/tirthaj)或在Twitter上關注我(鏈接:twitter.com/tirthajyoti)。

原文鏈接:codementor.io/tirthajyo

推薦閱讀:

「電子足跡」如何預測城市發展?| 數據科學應用案例
深入解讀:獲Forrester大數據能力高評價的阿里雲DataWorks思路與能力
百行徵信落地—對行業的幾點影響
大數據Hadoop常見異常處理,初學的你要看看
解析:數據中心六大節能方法

TAG:大數據 | Python |