使用 pandas 的“大數據”工作流程

| | | | | | | | |

在學習 pandas 的過程中,我已經嘗試了數月來想出這個問題的答案。我在日常工作中使用 SAS,它的核心支持非常好。但是,由於許多其他原因,SAS 作為一種軟件很糟糕。

有一天我希望用 python 和 pandas 代替我對 SAS 的使用,但我目前缺乏大型數據集的核心工作流。我不是在談論需要分佈式網絡的“大數據”,而是文件太大而無法適合內存,但足夠小以適合硬盤驅動器。

我的第一個想法是使用 HDFStore 將大型數據集保存在磁盤上並僅將我需要的部分拉入數據幀進行分析。其他人提到 MongoDB 是一種更易於使用的替代方案。我的問題是:

什麼是完成以下任務的最佳實踐工作流程:

  1. 將平面文件加載到永久的磁盤數據庫結構中
  2. 查詢該數據庫以檢索數據以輸入到 pandas 數據結構中
  3. 在處理 pandas 中的片段後更新數據庫

非常感謝真實世界的示例,尤其是來自在“大數據”上使用 pandas 的任何人。

編輯——我希望它如何工作的一個例子:

  1. 迭代地導入一個大的平面——文件並將其存儲在永久的磁盤數據庫結構中。這些文件通常太大而無法放入內存。
  2. 為了使用 Pandas,我想讀取這些數據的子集(通常一次只有幾列),這些數據可以放入內存。
  3. 我將通過對選定列執行各種操作來創建新列。
  4. 然後我必須將這些新列附加到數據庫結構中。

我正在嘗試找到執行這些步驟的最佳實踐方法。閱讀有關 pandas 和 pytables 的鏈接似乎附加一個新列可能是一個問題。

編輯 -- 具體回答 Jeff 的問題:

  1. 我正在建立消費者信用風險模型。數據類型包括電話、SSN和地址特徵;財產價值;犯罪記錄、破產等貶損信息……我每天使用的數據集平均有近1000到2000個混合數據類型的字段:數字和字符數據的連續、名義和有序變量。我很少追加行,但我確實執行了許多創建新列的操作。
  2. 典型操作涉及使用條件邏輯將多個列組合成一個新的複合列。例如,if var1 > 2 then newvar = "A" elif var2 = 4 then newvar = "B"。這些操作的結果是我的數據集中每條記錄的新列。
  3. 最後,我想將這些新列附加到磁盤數據結構中。我會d 重複第 2 步,使用交叉表和描述性統計數據探索數據,試圖找到有趣、直觀的模型關係。
  4. 一個典型的項目文件通常約為 1GB。文件被組織成這樣一種方式,其中一行包含消費者數據的記錄。對於每條記錄,每一行都有相同數量的列。情況總是如此。
  5. 在創建新列時,我很少會按行進行子集化。但是,在創建報告或生成描述性時對行進行子集化是很常見的統計數據。例如,我可能想為特定業務線創建一個簡單的頻率,例如零售信用卡。為此,除了我想要報告的任何列之外,我只會選擇那些業務範圍 = 零售的記錄。但是,在創建新列時,我會提取所有數據行,並且只提取操作所需的列。
  6. 建模過程要求我分析每一列,尋找與某些結果變量的有趣關係,並創建描述這些關係的新復合列。我探索的專欄通常是在小範圍內完成的。例如,我將專注於一組 20 列僅處理財產價值的列,並觀察它們與貸款違約的關係。一旦探索了這些並創建了新的專欄,我就會轉到另一組專欄,比如大學教育,然後重複這個過程。我正在做的是創建候選變量來解釋我的數據和某些結果之間的關係。在這個過程的最後,我應用了一些學習技術,從這些複合列中創建一個方程。

我很少向數據集添加行。我幾乎總是會創建新列(統計/機器學習用語中的變量或特徵)。

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method