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

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

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

翻譯:王婷

校對:李海明

本文共1500字,建議閱讀5分鐘

本文通過介紹pydbgen的安裝使用,以及一些基本功能實現和代碼,帶你簡單地瞭解一下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,但是可以給出一個相似的?

for _ in range(10):

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)將為你打開。有一些問題很容易想到:

  • 我們可以將機器學習/統計建模和這個隨機數據生成器集成嗎?

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

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

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

原文鏈接:https://www.codementor.io/tirthajyotisarkar/introducing-pydbgen-a-random-dataframe-database-table-generator-hi6i65h46

譯者簡介

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

王婷,南京理工大學在讀研究生,愛笑得有眼角魚尾紋的運氣不賴的女生。不喜歡呆板、教條、無聊,喜歡接觸新事物,參加新活動,融入新環境,結交新朋友,互相學習,取長補短。


分享到:


相關文章: