手把手教你上手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。你可以在這裡閱讀了解關於軟體包的詳細信息。(鏈接: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 pydbgenmyDB=pydbgen.pydb()
然後,你可以訪問由pydbobject公開的各種內部函數。例如,要列印隨機的美國城市:
myDB.city_real()
>> Ottervillefor _ in range(10):print(myDB.license_plate())>>
8NVX9376YZH485XBY-564SCG-2185XMR-1586OZZ231CJN-850SBL-4272TPY-658SZL-0934
如果你只是寫city而不是city_real,你會得到虛構的城市名稱
print(myDB.gen_data_series(num=8,data_type=city))
>>New MichelleRobinboroughLeeburyKaylatownHamiltonfortLake ChristopherHannahstadWest 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.comSarkar.Tirtha@outlook.comTirtha_S48@verizon.comTirtha_Sarkar62@yahoo.comTirtha.S46@yandex.comTirtha.S@att.com
Sarkar.Tirtha60@gmail.comTirthaSarkar@zoho.comSarkar.Tirtha@protonmail.comTirtha.S@comcast.net
未來的改進和用戶貢獻
當前版本是1.0.5,可能包含許多bug。如果你在執行過程中注意到任何bug或者你的程序崩潰(除了你的錯誤輸入),請告訴我。另外,如果你有一個很酷的想法來為源代碼做貢獻,Github repo(鏈接:https://github.com/tirthajyoti/pydbgen)將為你打開。有一些問題很容易想到:
- 我們可以將機器學習/統計建模和這個隨機數據生成器集成嗎?
- 可視化功能可以被添加到發生器中嗎?
所有的可能性是無窮無盡且令人激動萬分的……
如果你有任何問題或想法可以分享,請通過tirthajyoti[AT]http://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
推薦閱讀:
※「電子足跡」如何預測城市發展?| 數據科學應用案例
※深入解讀:獲Forrester大數據能力高評價的阿里雲DataWorks思路與能力
※百行徵信落地—對行業的幾點影響
※大數據Hadoop常見異常處理,初學的你要看看
※解析:數據中心六大節能方法