使用Pandas處理大型資料 節省90 記憶體的建議

2021-08-06 03:38:22 字數 804 閱讀 4259

簡要總結一下這篇文章的中心思想:合理設計讀取的資料型別。下圖是從原文中擷取出來的,可以看到pandas中不同資料型別所占用的記憶體。

作者建議,在不影響資料準確的情況下,將float64轉換為float32,將int64轉換為int32,對於沒有負數的整數列轉換為uint型別。

然而,能夠比較顯著減少記憶體占用的是將object轉換為category。一般來說,pandas將字串儲存為object型別,字串的占用記憶體較大。如果將字串轉換為對應的整數,那麼就會極大的減少記憶體占用。例如,假設有一列資料是week_day,內容為中文字元「星期一,星期二……星期日」,轉換為category之後week_day變為1-7的整數,其中星期一—1,星期二—2,……星期日—7。這樣字串就轉換為整數,pandas也會將對應關係儲存起來。作者也同時建議,object轉換為category適用於類別比較少的情況,如果一列資料的每一行字串都是唯一的,或者大部分是唯一的,那麼就不適合轉換,轉換之後的記憶體占用甚至可能大於轉換之前。因為pandas不僅儲存資料,還儲存對應關係,如果一列資料中字串都是唯一的,那麼實際上並沒有節省任何記憶體。

從作者的整體思路可以看出,pandas節省記憶體和資料庫節省硬碟差不多,都始於合理的資料型別設計。其實無論是資料探勘還是機器學習,所有的字串型別都會轉換為int或者float,這一步處理幾乎是必然的。如果僅僅做資料分析或者資料探索,那麼這種轉換並不是一定要做的,但好處是會大大加速程式執行的速度,所以如果你的資料量很大或者計算機效能不是很強的話,做一些轉換還是很有必要的。

pandas處理資料

pd.read csv path to file.txt header 0,names ab index 0 names columns這個可以不寫,制定索引列是第一列,這樣就沒有序號 np.tofile d python np.txt 類似於二維列表 充分利用map函式 df.a df.a.map...

使用pandas做資料處理

對已有的指標進行簡單的加減乘除處理 求單個企業營業收入的行業佔比 根據 判斷是否是為st 判斷審計機構是否是四大 去除空值 去除資產負債率大於1的企業 groupby 列表生成式 loc merge concat lambda表示式 直接對對應索引 使用groupby,merge函式 df 行業總值...

Python資料處理 Pandas模組使用(三)

資料 載入資料 pandas提供了一些將 型資料讀取為dataframe物件的函式,其中用的比較多的是read csv和read table,引數說明如下 引數說明 path 表示檔案位置 url 檔案型物件的字串 sep或delimiter 用於將行中的各欄位進行拆分的字串或正規表示式 head ...