當前位置:
首頁 > 知識 > pydbgen:一個資料庫隨機生成器

pydbgen:一個資料庫隨機生成器

pydbgen:一個資料庫隨機生成器

打開今日頭條,查看更多精彩圖片

編譯自: https://opensource.com/article/18/11/pydbgen-random-database-table-generator

作者: Tirthajyoti Sarkar

譯者: Hank Chow

用這個簡單的工具生成帶有多表的大型資料庫,讓你更好地用 SQL 研究數據科學。

在研究數據科學的過程中,最麻煩的往往不是演算法或者技術,而是如何獲取到一批原始數據。儘管網上有很多真實優質的數據集可以用於機器學習,然而在學習 SQL 時卻不是如此。

對於數據科學來說,熟悉 SQL 的重要性不亞於了解 Python 或 R 編程。如果想收集諸如姓名、年齡、信用卡信息、地址這些信息用於機器學習任務,在 Kaggle 上查找專門的數據集比使用足夠大的真實資料庫要容易得多。

如果有一個簡單的工具或庫來幫助你生成一個大型資料庫,表裡還存放著大量你需要的數據,豈不美哉?

不僅僅是數據科學的入門者,即使是經驗豐富的軟體測試人員也會需要這樣一個簡單的工具,只需編寫幾行代碼,就可以通過隨機(但是是假隨機)生成任意數量但有意義的數據集。

因此,我要推薦這個名為 pydbgen 的輕量級 Python 庫。在後文中,我會簡要說明這個庫的相關內容,你也可以 閱讀它的文檔 詳細了解更多信息。


pydbgen 是什麼

pydbgen 是一個輕量的純 Python 庫,它可以用於生成隨機但有意義的數據記錄(包括姓名、地址、信用卡號、日期、時間、公司名稱、職位、車牌號等等),存放在 Pandas Dataframe 對象中,並保存到 SQLite 資料庫或 Excel 文件。


如何安裝 pydbgen

目前 1.0.5 版本的 pydbgen 託管在 PyPI( Python 包索引存儲庫(Python Package Index repository))上,並且對 Faker 有依賴關係。安裝 pydbgen 只需要執行命令:


pip install pydbgen

已經在 Python 3.6 環境下測試安裝成功,但在 Python 2 環境下無法正常安裝。


如何使用 pydbgen

在使用 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

生成隨機的 Pandas Dataframe

你可以指定生成數據的數量和種類,但需要注意的是,返回結果均為字元串或文本類型。

testdf=myDB.gen_dataframe(5,["name","city","phone","date"])

testdf

最終產生的 Dataframe 類似下圖所示。


pydbgen:一個資料庫隨機生成器



生成資料庫表

你也可以指定生成數據的數量和種類,而返回結果是資料庫中的文本或者變長字元串類型。在生成過程中,你可以指定對應的資料庫文件名和表名。


myDB.gen_table(db_file="Testdb.DB",table_name="People",

fields=["name","city","street_address","email"])

上面的例子種生成了一個能被 MySQL 和 SQLite 支持的 .db 文件。下圖則顯示了這個文件中的數據表在 SQLite 可視化客戶端中打開的畫面。


pydbgen:一個資料庫隨機生成器



生成 Excel 文件

和上面的其它示例類似,下面的代碼可以生成一個具有隨機數據的 Excel 文件。值得一提的是,通過將 phone_simple 參數設為 False ,可以生成較長較複雜的電話號碼。如果你想要提高自己在數據提取方面的能力,不妨嘗試一下這個功能。


myDB.gen_excel(num=20,fields=["name","phone","time","country"],

phone_simple=False,filename="TestExcel.xlsx")

最終的結果類似下圖所示:


pydbgen:一個資料庫隨機生成器


生成隨機電子郵箱地址

pydbgen 內置了一個 realistic_email 方法,它基於種子來生成隨機的電子郵箱地址。如果你不想在網路上使用真實的電子郵箱地址時,這個功能可以派上用場。


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

未來的改進和用戶貢獻

目前的版本中並不完美。如果你發現了 pydbgen 的 bug 導致它在運行期間發生崩潰,請向我反饋。如果你打算對這個項目貢獻代碼, 也隨時歡迎你 。當然現在也還有很多改進的方向:

  • pydbgen 作為隨機數據生成器,可以集成一些機器學習或統計建模的功能嗎?
  • pydbgen 是否會添加可視化功能?

一切皆有可能!

如果你有任何問題或想法想要分享,都可以通過 tirthajyoti@gmail.com 與我聯繫。如果你像我一樣對機器學習和數據科學感興趣,也可以添加我的 LinkedIn 或在 Twitter 上關注我。另外,還可以在我的 GitHub 上找到更多 Python、R 或 MATLAB 的有趣代碼和機器學習資源。

本文以 CC BY-SA 4.0 許可在 Towards Data Science 首發。



via: https://opensource.com/article/18/11/pydbgen-random-database-table-generator

作者: Tirthajyoti Sarkar 選題: lujun9972 譯者: HankChow 校對: wxy

本文由 LCTT 原創編譯, Linux中國 榮譽推出


點擊「了解更多」可訪問文內鏈接

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux技術 的精彩文章:

9 個提升開發者與設計師協作的方法
2018年5款最好的Linux遊戲

TAG:Linux技術 |