日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

再見 CSV,速度提升 150 倍!

 西北望msm66g9f 2021-09-16

為什么要和CSV再見?

大家好,我是黃同學??
來介紹下為什么要和CSV再見。其實也談不上徹底再見吧,日常還是要用的,這里再介紹一個更加高效的數據格式。
Python處理數據時保存和加載文件屬于日常操作了,尤其面對大數據量時我們一般都會保存成CSV格式,而不是Excel。一是因為Excel有最大行數1048576的限制,二是文件占用空間更大,保存和加載速度很慢。
雖然用CSV沒有行數限制,相對輕便,但是面對大數據量時還是略顯拉夸,百萬數據量儲存加載時也要等好久。。不過很多同學都借此機會抻抻懶腰、摸摸魚,充分利用時間也不錯圖片。
其實,CSV 并不是唯一的數據存儲格式。今天和大家介紹一個速度超快、更加輕量級的二進制格式保存格式:feather。

Feather是什么?

Feather 是一種用于存儲數據幀的數據格式。它最初是為了 PythonR 之間快速交互而設計的,初衷很簡單,就是盡可能高效地完成數據在內存中轉換的效率。
現在 Feather 也不僅限于 PythonR 了,基本每種主流的編程語言中都可以用 Feather 文件。不過,要說明下,它的數據格式并不是為長期存儲而設計的,一般的短期存儲。

如何在Python中操作Feather?

Python 中,可以通過 pandasFeather 兩種方式操作。首先需要安裝feather-format。
# pip 
pip install feather -format 

# Anaconda 
conda install -c conda-forgefeather-format
只需要上面一行安裝即可,很簡單。
我們通過一個較大的數據集舉例,需要 Feather、Numpypandas 來一起配合。數據集有 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_featherFeather 格式:
df.to_feather('1M.feather')
二是用 Feather 庫執(zhí)行相同操作的方法:
feather.write_dataframe(df, '1M.feather')
加載
加載也是一樣的,同樣還是兩種方式。一是通過pandas加載:
df = pd.read_feather('1M.feather')
二是用 Feather 加載:
df =feather.read_dataframe('1M.feather')
操作習慣一樣,難度完全沒有。

和CSV的區(qū)別

對比產生美。下面來看下feathercsv的差距有多大。下圖顯示了上面本地保存 DataFrame 所需的時間:
圖片
差距巨大,有木有!原生 Feather(圖中的Native Feather)比 CSV 快了將近 150 倍左右。如果使用 pandas 處理 Feather 文件并沒有太大關系,但與 CSV 相比,速度的提高是非常顯著的。
然后再看下讀取不同格式的相同數據集需要多長時間。
圖片
同樣,差異也很明顯。CSV 的讀取速度要慢得多。并且CSV占用的磁盤空間也更大。
圖片
CSV 文件占用的空間是 Feather 文件占用的空間的兩倍多。假如我們每天存儲千兆字節(jié)的數據,那么選擇正確的文件格式至關重要。Feather 在這方面完全碾壓了 CSV。
當然,如果追求更多的壓縮空間,也可以試試Parquet,也是一個可以替代CSV 的格式。

結語

說了這么多,可能很多同學還是甩出一句話:謝謝大佬,我選CSV圖片 這個東西怎么說呢圖片,當你需要它時,它就有用,如果日常沒有速度和空間的強烈需求,還是老老實實CSV吧。CSV已經用慣了,改變使用習慣還是挺難的。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多