Python大規模機器學習》—1.1.3使用Python進行向上擴展">《Python大規模機器學習》—1.1.3使用Python進行向上擴展
668
2025-03-29
2.2.4????使用數據庫
作為pandas的I/O工具的靈活性示例,我們提供一個使用SQLite3數據庫的示例,
其中使用簡單查詢得到數據流,該示例并不專門用于教學。在磁盤空間和處理時間方面,使用數據庫的大型數據存儲功能確實具有優勢。
將數據放入SQL數據庫表中進行歸范化既能消除冗余度和重復度,又能節省磁盤存儲空間。數據庫規范化就是數據庫中組織列和表以減少其維數而不丟失任何信息的方式,通常,通過拆分表和將重復數據重新編碼成鍵來實現。此外,經過內存、操作和多處理優化的
關系數據庫能加速和預測部分預處理過程,否則要在Python腳本中執行這些處理。
對于Python,SQLite(http://www.sqlite.org)是個不錯選擇,原因如下:
開源。
能處理大量數據(理論上每個數據庫可存儲高達140TB的數據,但是不太可能有SQLite應用程序能處理該級別的數據量)。
能在MacOS、Linux和Windows 32/64位環境中運行。
由于全部數據存儲在單個磁盤文件中,因此不需要任何服務器基礎結構或特定的安裝操作(零配置)。
使用可轉換為存儲過程的Python代碼易于對其進行擴展。
此外,Python標準庫包括sqlite3模塊,可提供從創建數據庫到使用數據庫的全部功能。
本示例首先將包含共享單車數據集的CSV文件以每天和每小時為間隔上傳到SQLite數據庫,然后,與CSV文件中的數據流操作一樣對其進行流處理。讀者自己的應用程序中可以重用該數據庫上傳代碼,代碼沒有綁定到具體示例(只需更改輸入輸出參數):
該腳本通過有效的數據庫名稱和模式來定位待導入文件(接受通配符*),并從頭開始創建所需的新數據庫和表。然后用所有可用的數據對其進行填充:
腳本還會顯示創建的字段的數據類型和行數,以便你驗證導入過程是否成功。現在很容易從數據庫中以數據流的方式提取數據。在示例中,在hour表和day表之間創建一個內連接,并按小時提取數據(當天租金總額信息):
如果需要加快數據流傳輸,只需優化數據庫,首先是為要使用的關系查詢構建正確索引。
conn.text_factory=str是腳本非常重要的部分,它允許存儲UTF-8數據。如果忽略此命令,則在輸入數據時可能會遇到奇怪的錯誤。
Python 數據庫 機器學習
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。