日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

再见 CSV,速度提升 150 倍!

發布時間:2024/9/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 再见 CSV,速度提升 150 倍! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先介紹下為什么要和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?pdnp.random.seed?=?42 df_size?=?10000000df?=?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吧。CSV已經用慣了,改變使用習慣還是挺難的。

系列推薦:

  • 牛逼!Python常用數據類型的基本操作(長文系列第①篇)

  • 牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)

  • 牛逼!Python函數和文件操作(長文系列第3篇)

  • 牛逼!Python錯誤、異常和模塊(長文系列第4篇)

  • 推薦閱讀

    Pandas處理數據太慢,來試試Polars吧!

    懶人必備!只需一行代碼,就能導入所有的Python庫

    絕!關于pip的15個使用小技巧

    介紹10個常用的Python內置函數,99.99%的人都在用!

    可能是全網最完整的 Python 操作 Excel庫總結!

    總結

    以上是生活随笔為你收集整理的再见 CSV,速度提升 150 倍!的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。