大家好,我是小五🧐
CSV
再見。其實也談不上徹底再見吧,日常還是要用的,這裏再介紹一個更加高效的數據格式。
Python
處理數據時保存和加載文件屬於日常操作了,尤其面對大數據量時我們一般都會保存成
CSV
格式,而不是
Excel
。一是因爲
Excel
有最大行數1048576的限制,二是文件佔用空間更大,保存和加載速度很慢。
CSV
沒有行數限制,相對輕便,但是面對大數據量時還是略顯拉誇,百萬數據量儲存加載時也要等好久。。不過很多同學都藉此機會抻抻懶腰、摸摸魚,充分利用時間也不錯
。
CSV
並不是唯一的數據存儲格式。今天和大家介紹一個速度超快、更加輕量級的二進制格式保存格式:
feather。
Feather是什麼?
Feather
是一種用於存儲數據幀的數據格式。它最初是爲了
Python
和
R
之間快速交互而設計的,初衷很簡單,就是儘可能高效地完成數據在內存中轉換的效率。
Feather
也不僅限於
Python
和
R
了,基本每種主流的編程語言中都可以用
Feather
文件。不過,要說明下,它的數據格式並不是爲長期存儲而設計的,一般的短期存儲。
如何在Python中操作Feather?
Python
中,可以通過
pandas
或
Feather
兩種方式操作。首先需要安裝
feather-format
。
# pip
pip install feather -format
# Anaconda
conda install -c conda-forgefeather-format
Feather
、
Numpy
和
pandas
來一起配合。數據集有 5 列和 1000 萬行隨機數。
import feather
import numpy as np
import pandas as pd
np.random.seed = 42
df_size = 10000000
df = pd.DataFrame({
'a': np.random.rand(df_size),
'b': np.random.rand(df_size),
'c': np.random.rand(df_size),
'd': np.random.rand(df_size),
'e': np.random.rand(df_size)
})
df.head()
csv
的操作難度一個水平線,非常簡單。
DataFrame
直接
to_feather
的
Feather
格式:
df.to_feather('1M.feather')
Feather
庫執行相同操作的方法:
feather.write_dataframe(df, '1M.feather')
pandas
加載:
df = pd.read_feather('1M.feather')
Feather
加載:
df =feather.read_dataframe('1M.feather')
和CSV的區別
feather
和
csv
的差距有多大。下圖顯示了上面本地保存 DataFrame 所需的時間:
Feather
(圖中的
Native Feather
)比
CSV
快了將近 150 倍左右。如果使用
pandas
處理
Feather
文件並沒有太大關係,但與
CSV
相比,速度的提高是非常顯著的。
CSV
的讀取速度要慢得多。並且
CSV
佔用的磁盤空間也更大。
CSV
文件佔用的空間是
Feather
文件佔用的空間的兩倍多。假如我們每天存儲千兆字節的數據,那麼選擇正確的文件格式至關重要。
Feather
在這方面完全碾壓了
CSV
。
Parquet
,也是一個可以替代
CSV
的格式。
結語
CSV
吧。
CSV
已經用慣了,改變使用習慣還是挺難的。
最近有啥書?
Python機器學習一本通:結合了Python和機器學習兩個熱門領域,通過易於理解的知識講解,幫助讀者學習和掌握機器學習。本書還包括項目實戰篇,主要講述了社交好友分析、電商點擊率預估等。點擊即可查看詳情!👇
本文分享自微信公衆號 - 凹凸數據(alltodata)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。