<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>

          再見(jiàn) CSV,速度提升 150 倍!

          共 2313字,需瀏覽 5分鐘

           ·

          2021-09-20 07:36

          ↑ 關(guān)注 + 星標(biāo) ,每天學(xué)Python新技能

          后臺(tái)回復(fù)【大禮包】送你Python自學(xué)大禮包

          為什么要和CSV再見(jiàn)?

          好了說(shuō)了那么久,來(lái)介紹下為什么要和CSV再見(jiàn)。其實(shí)也談不上徹底再見(jiàn)吧,日常還是要用的,這里再介紹一個(gè)更加高效的數(shù)據(jù)格式。
          Python處理數(shù)據(jù)時(shí)保存和加載文件屬于日常操作了,尤其面對(duì)大數(shù)據(jù)量時(shí)我們一般都會(huì)保存成CSV格式,而不是Excel。一是因?yàn)?code style="padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(89, 89, 89);font-size: 13px;letter-spacing: 0.5px;">Excel有最大行數(shù)1048576的限制,二是文件占用空間更大,保存和加載速度很慢。
          雖然用CSV沒(méi)有行數(shù)限制,相對(duì)輕便,但是面對(duì)大數(shù)據(jù)量時(shí)還是略顯拉夸,百萬(wàn)數(shù)據(jù)量?jī)?chǔ)存加載時(shí)也要等好久。。不過(guò)很多同學(xué)都借此機(jī)會(huì)抻抻懶腰、摸摸魚,充分利用時(shí)間也不錯(cuò)
          其實(shí),CSV 并不是唯一的數(shù)據(jù)存儲(chǔ)格式。今天和大家介紹一個(gè)速度超快、更加輕量級(jí)的二進(jìn)制格式保存格式:feather。

          Feather是什么?

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

          如何在Python中操作Feather?

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

          # Anaconda 
          conda install -c conda-forgefeather-format
          只需要上面一行安裝即可,很簡(jiǎn)單。
          我們通過(guò)一個(gè)較大的數(shù)據(jù)集舉例,需要 Feather、Numpypandas 來(lái)一起配合。數(shù)據(jù)集有 5 列和 1000 萬(wàn)行隨機(jī)數(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的操作難度一個(gè)水平線,非常簡(jiǎn)單。
          保存
          兩種方式,一是 DataFrame 直接to_featherFeather 格式:
          df.to_feather('1M.feather')
          二是用 Feather 庫(kù)執(zhí)行相同操作的方法:
          feather.write_dataframe(df, '1M.feather')
          加載
          加載也是一樣的,同樣還是兩種方式。一是通過(guò)pandas加載:
          df = pd.read_feather('1M.feather')
          二是用 Feather 加載:
          df =feather.read_dataframe('1M.feather')
          操作習(xí)慣一樣,難度完全沒(méi)有。

          和CSV的區(qū)別

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

          推薦閱讀

          1. 人臉識(shí)別的時(shí)候,一定要穿上衣服!否則 ...

          2. 高薪程序員被推到風(fēng)口浪尖,真相竟然是……

          3. 個(gè)個(gè)年薪都五十萬(wàn)的數(shù)據(jù)分析師,是真的嗎?

          4. 打架打出來(lái)的牛逼城市!

          5. 985高校的學(xué)生“夫妻宿舍”令人羨慕,網(wǎng)友:這福利心動(dòng)了,我要去讀博!

          6. 微軟這個(gè)太強(qiáng)了


          推薦一個(gè)公眾號(hào),幫助程序員自學(xué)與成長(zhǎng)


          覺(jué)得還不錯(cuò)就給我一個(gè)小小的鼓勵(lì)吧!





          瀏覽 83
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  国产寡妇婬乱A毛片91精品 | 男女舞夜操逼视频一区二区 | 色老板在线观看 | 农村嫩苞一区二区三区… | 久久99e |