<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          再見 CSV,速度提升 150 倍!

          共 2682字,需瀏覽 6分鐘

           ·

          2021-09-12 07:25

          圖片來源@unsplash.com

          來源:Python數(shù)據(jù)科學

          作者:東哥起飛


          為什么要和CSV再見?

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

          Feather是什么?

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

          如何在Python中操作Feather?

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

          # Anaconda 
          conda install -c conda-forge feather-format
          只需要上面一行安裝即可,很簡單。
          我們通過一個較大的數(shù)據(jù)集舉例,需要 Feather、Numpypandas 來一起配合。數(shù)據(jù)集有 5 列和 1000 萬行隨機數(shù)。
          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ū)別

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

          結語

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

          --End--


          Python學習圖書推薦:《Python+Excel職場辦公數(shù)據(jù)分析》包含49個案例,配套有330分鐘視頻講解。


          以實戰(zhàn)案例為主,用大量的實戰(zhàn)案例給讀者演示如何處理實際工作中的辦公自動化問題,如何對大數(shù)據(jù)進行分析處理。教會職場人士使用辦公自動化及大數(shù)據(jù)分析解決實際問題的方法。

          給本文點贊,然后留言說說你為什么會想要學習編程,留言字數(shù)不低于30個,留言點贊第一和第二的讀者可以獲得贈書一本;


          另外我會隨機選出一位走心留言讀者,贈送圖書一本。


          文章點贊超過100+

          我將在個人視頻號直播(老表Max)

          帶大家一起進行項目實戰(zhàn)復現(xiàn)



          掃碼即可加我微信

          老表朋友圈經(jīng)常有贈書/紅包福利活動

          老表自己搞的,大家可以掃碼關注,領取福利

          現(xiàn)在關注,回復:0910 可以參與贈書抽獎

          點擊上方卡片關注公眾號,回復:1024
          領取最新Python學習資源

          學習更多:
          整理了我開始分享學習筆記到現(xiàn)在超過250篇優(yōu)質(zhì)文章,涵蓋數(shù)據(jù)分析、爬蟲、機器學習等方面,別再說不知道該從哪開始,實戰(zhàn)哪里找了
          點贊”就是對博主最大的支持 
          瀏覽 47
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大香蕉福利网 | 日韩大香焦 | 操逼网址大全 | 女学生爱爱视频 | 91午夜影院 |