新聞中心
用這個簡單的工具生成帶有多表的大型數(shù)據(jù)庫,讓你更好地用 SQL 研究數(shù)據(jù)科學。
創(chuàng)新互聯(lián)建站專注于企業(yè)營銷型網(wǎng)站建設、網(wǎng)站重做改版、武邑網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5高端網(wǎng)站建設、商城網(wǎng)站建設、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為武邑等各大城市提供網(wǎng)站開發(fā)制作服務。
在研究數(shù)據(jù)科學的過程中,最麻煩的往往不是算法或者技術(shù),而是如何獲取到一批原始數(shù)據(jù)。盡管網(wǎng)上有很多真實優(yōu)質(zhì)的數(shù)據(jù)集可以用于機器學習,然而在學習 SQL 時卻不是如此。
對于數(shù)據(jù)科學來說,熟悉 SQL 的重要性不亞于了解 Python 或 R 編程。如果想收集諸如姓名、年齡、信用卡信息、地址這些信息用于機器學習任務,在 Kaggle 上查找專門的數(shù)據(jù)集比使用足夠大的真實數(shù)據(jù)庫要容易得多。
如果有一個簡單的工具或庫來幫助你生成一個大型數(shù)據(jù)庫,表里還存放著大量你需要的數(shù)據(jù),豈不美哉?
不僅僅是數(shù)據(jù)科學的入門者,即使是經(jīng)驗豐富的軟件測試人員也會需要這樣一個簡單的工具,只需編寫幾行代碼,就可以通過隨機(但是是假隨機)生成任意數(shù)量但有意義的數(shù)據(jù)集。
因此,我要推薦這個名為 pydbgen 的輕量級 Python 庫。在后文中,我會簡要說明這個庫的相關(guān)內(nèi)容,你也可以閱讀它的文檔詳細了解更多信息。
pydbgen 是什么
pydbgen 是一個輕量的純 Python 庫,它可以用于生成隨機但有意義的數(shù)據(jù)記錄(包括姓名、地址、信用卡號、日期、時間、公司名稱、職位、車牌號等等),存放在 Pandas Dataframe 對象中,并保存到 SQLite 數(shù)據(jù)庫或 Excel 文件。
如何安裝 pydbgen
目前 1.0.5 版本的 pydbgen 托管在 PyPI(Python 包索引存儲庫Python Package Index repository)上,并且對 Faker 有依賴關(guān)系。安裝 pydbgen 只需要執(zhí)行命令:
pip install pydbgen
已經(jīng)在 Python 3.6 環(huán)境下測試安裝成功,但在 Python 2 環(huán)境下無法正常安裝。
如何使用 pydbgen
在使用 pydbgen 之前,首先要初始化 pydb 對象。
import pydbgenfrom pydbgen import pydbgenmyDB=pydbgen.pydb()
隨后就可以調(diào)用 pydb 對象公開的各種內(nèi)部函數(shù)了??梢园凑障旅娴睦?,輸出隨機的美國城市和車牌號碼:
myDB.city_real()>> 'Otterville'for _ in range(10):print(myDB.license_plate())>> 8NVX9376YZH485XBY-564SCG-2185XMR-1586OZZ231CJN-850SBL-4272TPY-658SZL-0934
另外,如果你輸入的是 city() 而不是 city_real(),返回的將會是虛構(gòu)的城市名。
print(myDB.gen_data_series(num=8,data_type='city'))>>New MichelleRobinboroughLeeburyKaylatownHamiltonfortLake ChristopherHannahstadWest Adamborough
生成隨機的 Pandas Dataframe
你可以指定生成數(shù)據(jù)的數(shù)量和種類,但需要注意的是,返回結(jié)果均為字符串或文本類型。
testdf=myDB.gen_dataframe(5,['name','city','phone','date'])testdf
最終產(chǎn)生的 Dataframe 類似下圖所示。
生成數(shù)據(jù)庫表
你也可以指定生成數(shù)據(jù)的數(shù)量和種類,而返回結(jié)果是數(shù)據(jù)庫中的文本或者變長字符串類型。在生成過程中,你可以指定對應的數(shù)據(jù)庫文件名和表名。
myDB.gen_table(db_file='Testdb.DB',table_name='People',fields=['name','city','street_address','email'])
上面的例子種生成了一個能被 MySQL 和 SQLite 支持的 .db 文件。下圖則顯示了這個文件中的數(shù)據(jù)表在 SQLite 可視化客戶端中打開的畫面。
生成 Excel 文件
和上面的其它示例類似,下面的代碼可以生成一個具有隨機數(shù)據(jù)的 Excel 文件。值得一提的是,通過將 phone_simple 參數(shù)設為 False ,可以生成較長較復雜的電話號碼。如果你想要提高自己在數(shù)據(jù)提取方面的能力,不妨嘗試一下這個功能。
myDB.gen_excel(num=20,fields=['name','phone','time','country'],phone_simple=False,filename='TestExcel.xlsx')
最終的結(jié)果類似下圖所示:
生成隨機電子郵箱地址
pydbgen 內(nèi)置了一個 realistic_email 方法,它基于種子來生成隨機的電子郵箱地址。如果你不想在網(wǎng)絡上使用真實的電子郵箱地址時,這個功能可以派上用場。
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]
未來的改進和用戶貢獻
目前的版本中并不***。如果你發(fā)現(xiàn)了 pydbgen 的 bug 導致它在運行期間發(fā)生崩潰,請向我反饋。如果你打算對這個項目貢獻代碼,也隨時歡迎你。當然現(xiàn)在也還有很多改進的方向:
- pydbgen 作為隨機數(shù)據(jù)生成器,可以集成一些機器學習或統(tǒng)計建模的功能嗎?
- pydbgen 是否會添加可視化功能?
一切皆有可能!
新聞標題:pydbgen:一個數(shù)據(jù)庫隨機生成器
網(wǎng)站鏈接:http://www.fisionsoft.com.cn/article/cdpicih.html


咨詢
建站咨詢

