在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

更高效的利用Jupyter+pandas進行數據分析

數據分析與開發 ? 來源:數據分析與開發 ? 作者:數據分析與開發 ? 2021-03-12 15:20 ? 次閱讀

在使用Python進行數據分析時,Jupyter Notebook是一個非常強力的工具,在數據集不是很大的情況下,我們可以使用pandas輕松對txt或csv等純文本格式數據進行讀寫。

然而當數據集的維度或者體積很大時,將數據保存并加載回內存的過程就會變慢,并且每次啟動Jupyter Notebook時都需要等待一段時間直到數據重新加載, 這樣csv格式或任何其他純文本格式數據都失去了吸引力。

本文將對pandas支持的多種格式數據在處理數據的不同方面進行比較,包含I/O速度、內存消耗、磁盤占用空間等指標,試圖找出如何為我們的數據找到一個合適的格式的辦法!

格式說明

現在對本文進行對比的幾種數據格式進行說明。

CSV:最常用的數據格式

Pickle:用于序列化和反序列化Python對象結構

MessagePack:類似于json,但是更小更塊

HDF5:一種常見的跨平臺數據儲存文件

Feather:一個快速、輕量級的存儲框架

Parquet:Apache Hadoop的列式存儲格式

指標說明

為了找到格式來存儲數據,本文選擇以下指標進行對比。

size_mb:帶有序列化數據幀的文件的大小

save_time:將數據幀保存到磁盤所需的時間

load_time:將先前轉儲的數據幀加載到內存所需的時間

save_ram_delta_mb:在數據幀保存過程中最大的內存消耗增長

load_ram_delta_mb:數據幀加載過程中最大的內存消耗增長

注意,當我們使用有效壓縮的二進制數據格式(例如Parquet)時,最后兩個指標變得非常重要。它們可以幫助我們估算加載串行化數據所需的RAM數量,以及數據大小本身。我們將在下一部分中更詳細地討論這個問題。

對比

現在開始對前文介紹的5種數據格式進行比較,為了更好地控制序列化的數據結構和屬性我們將使用自己生成的數據集。 下面是生成測試數據的代碼,我們隨機生成具有數字和分類特征的數據集。數值特征取自標準正態分布。分類特征以基數為C的uuid4隨機字符串生成,其中2 <= C <= max_cat_size。

defgenerate_dataset(n_rows,num_count,cat_count,max_nan=0.1,max_cat_size=100): dataset,types={},{} defgenerate_categories(): fromuuidimportuuid4 category_size=np.random.randint(2,max_cat_size) return[str(uuid4())for_inrange(category_size)] forcolinrange(num_count): name=f'n{col}' values=np.random.normal(0,1,n_rows) nan_cnt=np.random.randint(1,int(max_nan*n_rows)) index=np.random.choice(n_rows,nan_cnt,replace=False) values[index]=np.nan dataset[name]=values types[name]='float32' forcolinrange(cat_count): name=f'c{col}' cats=generate_categories() values=np.array(np.random.choice(cats,n_rows,replace=True),dtype=object) nan_cnt=np.random.randint(1,int(max_nan*n_rows)) index=np.random.choice(n_rows,nan_cnt,replace=False) values[index]=np.nan dataset[name]=values types[name]='object' returnpd.DataFrame(dataset),types 現在我們以CSV文件保存和加載的性能作為基準。將五個隨機生成的具有百萬個觀測值的數據集轉儲到CSV中,然后讀回內存以獲取平均指標。并且針對具有相同行數的20個隨機生成的數據集測試了每種二進制格式。 同時使用兩種方法進行對比:

1.將生成的分類變量保留為字符串

2.在執行任何I/O之前將其轉換為pandas.Categorical數據類型

1.以字符串作為分類特征

下圖顯示了每種數據格式的平均I/O時間。這里有趣的發現是hdf的加載速度比csv更低,而其他二進制格式的性能明顯更好,而feather和parquet則表現的非常好。

保存數據并從磁盤讀取數據時的內存消耗如何?下一張圖片向我們展示了hdf的性能再次不那么好。但可以肯定的是,csv不需要太多額外的內存來保存/加載純文本字符串,而feather和parquet則非常接近。

最后,讓我們看一下文件大小的對比。這次parquet顯示出非常好的結果,考慮到這種格式是為有效存儲大量數據而開發的,也是理所當然。

2. 對特征進行轉換

在上一節中,我們沒有嘗試有效地存儲分類特征,而是使用純字符串,接下來我們使用專用的pandas.Categorical類型再次進行比較。

從上圖可以看到,與純文本csv相比,所有二進制格式都可以顯示其真強大功能,效率遠超過csv,因此我們將其刪除以更清楚地看到各種二進制格式之間的差異。

可以看到feather和pickle擁有最快的I/O速度,接下來該比較數據加載過程中的內存消耗了。下面的條形圖顯示了我們之前提到的有關parquet格式的情況。

為什么parquet內存消耗這么高?因為只要在磁盤上占用一點空間,就需要額外的資源才能將數據解壓縮回數據幀。即使文件在持久性存儲磁盤上需要適度的容量,也可能無法將其加載到內存中。 最后我們看下不同格式的文件大小比較。所有格式都顯示出良好的效果,除了hdf仍然需要比其他格式更多的空間。

結論

正如我們的上面的測試結果所示,feather格式似乎是在多個Jupyter之間存儲數據的理想選擇。它顯示出很高的I/O速度,不占用磁盤上過多的內存,并且在裝回RAM時不需要任何拆包。

當然這種比較并不意味著我們應該在每種情況下都使用這種格式。例如,不希望將feather格式用作長期文件存儲。此外,當其他格式發揮最佳效果時,它并未考慮所有可能的情況。所以我們也需要根據具體情況進行選擇!

責任編輯:lq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1369

    瀏覽量

    115019
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28466
  • 數據集
    +關注

    關注

    4

    文章

    1209

    瀏覽量

    24835

原文標題:更高效的利用 Jupyter+pandas 進行數據分析,6 種常用數據格式效率對比!

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Mathematica 在數據分析中的應用

    ,在數據分析領域發揮著重要作用。 1. 數據導入 在進行數據分析之前,首先需要將數據導入到Mathematica中。Mathematica支持多種
    的頭像 發表于 12-26 15:41 ?209次閱讀

    zeta的定義和應用 如何使用zeta進行數據分析

    Zeta(ζ)電位是描述懸浮粒子在液體中移動時所產生的電位差的一個物理量,以下是對其定義、應用以及如何進行數據分析的詳細解釋: Zeta電位的定義 Zeta電位是通過理論推導和實驗測量得到的,它反映
    的頭像 發表于 12-19 18:10 ?1460次閱讀

    如何使用SQL進行數據分析

    使用SQL進行數據分析是一個強大且靈活的過程,它涉及從數據庫中提取、清洗、轉換和聚合數據,以便進行進一步的分析和洞察。 1.
    的頭像 發表于 11-19 10:26 ?435次閱讀

    eda與傳統數據分析的區別

    進行初步的探索和理解,發現數據中潛在的模式、關系、異常值等,為后續的分析和建模提供線索和基礎。 方法論 :EDA強調數據的真實分布和可視化,使用多種圖表和可視化工具來展示
    的頭像 發表于 11-13 10:52 ?421次閱讀

    為什么選擇eda進行數據分析

    數據科學領域,數據分析是一個復雜且多步驟的過程,它涉及到數據的收集、清洗、探索、建模和解釋。在這些步驟中,探索性數據分析(EDA)扮演著至關重要的角色。 1. 理解
    的頭像 發表于 11-13 10:41 ?308次閱讀

    raid 在大數據分析中的應用

    RAID(Redundant Array of Independent Disks,獨立磁盤冗余陣列)在大數據分析中的應用主要體現在提高存儲系統的性能、可靠性和容量上。以下是RAID在大數據分析
    的頭像 發表于 11-12 09:44 ?314次閱讀

    云計算在大數據分析中的應用

    和處理大規模的數據集。通過云計算平臺,用戶可以快速構建數據倉庫,將海量數據進行存儲、管理和分析。這種能力使得企業能夠
    的頭像 發表于 10-24 09:18 ?603次閱讀

    使用AI大模型進行數據分析的技巧

    使用AI大模型進行數據分析的技巧涉及多個方面,以下是一些關鍵的步驟和注意事項: 一、明確任務目標和需求 在使用AI大模型之前,首先要明確數據分析的任務目標,這將直接影響模型的選擇、數據收集和處理方式
    的頭像 發表于 10-23 15:14 ?1114次閱讀

    如何利用海外爬蟲IP進行數據抓取

    利用海外爬蟲IP進行數據抓取需要綜合考慮多個方面。
    的頭像 發表于 10-12 07:54 ?259次閱讀

    IP 地址大數據分析如何進行網絡優化?

    一、大數據分析在網絡優化中的作用 1.流量分析數據分析可以對網絡中的流量進行實時監測和分析,了解網絡的使用情況和流量趨勢。通過對流量
    的頭像 發表于 10-09 15:32 ?307次閱讀
    IP 地址大<b class='flag-5'>數據分析</b>如何<b class='flag-5'>進行</b>網絡優化?

    數據分析在提高灌區管理水平中的作用

    數據分析在提升灌區管理水平中扮演著至關重要的角色,它通過深度挖掘海量信息,為灌溉系統的高效運作、資源優化配置及可持續發展提供了科學決策的基礎。這一過程不僅涉及數據的收集、整理與分析,還
    的頭像 發表于 08-28 17:23 ?308次閱讀
    <b class='flag-5'>數據分析</b>在提高灌區管理水平中的作用

    數據分析的工具有哪些

    開發的一款電子表格軟件,廣泛應用于數據分析領域。它具有以下特點: 數據整理:Excel提供了豐富的數據整理功能,如排序、篩選、查找和替換等。 數據計算:Excel內置了數百種函數,可以
    的頭像 發表于 07-05 14:54 ?1058次閱讀

    數據分析有哪些分析方法

    。 描述性分析 描述性分析數據分析的第一步,它的目的是對數據進行描述和總結。描述性分析通常包括
    的頭像 發表于 07-05 14:51 ?751次閱讀

    機器學習在數據分析中的應用

    隨著大數據時代的到來,數據量的爆炸性增長對數據分析提出了更高的要求。機器學習作為一種強大的工具,通過訓練模型從數據中學習規律,為企業和組織提
    的頭像 發表于 07-02 11:22 ?812次閱讀

    求助,關于AD采集到的數據分析問題

    問題描述:使用AD采集一個10Hz到2MHz的脈沖,脈沖底部可能大于零,由采集到的數據分析出該脈沖的上升時間,幅值和占空比。 備注:在分析的時候已經知道脈沖的頻率,精度為2X10^-5. 在分析
    發表于 05-09 07:40
    主站蜘蛛池模板: 免费看一级大片 | 亚洲女人小便 | 成人丁香乱小说 | 天天摸天天操天天干 | 国产主播在线一区 | 成年美女黄网站色大免费视频 | 天天躁狠狠躁夜夜躁2021 | 婷婷色在线视频 | 手机看片1024免费视频 | 四虎精品免费永久在线 | 国产午夜亚洲精品 | 一区二区三区在线观看免费 | 九九热国产在线 | 国产亚洲高清在线精品不卡 | 在线视频综合网 | 成人看片免费无限观看视频 | 国产精品亚洲一区二区三区在线播放 | 日本黄色大片网站 | 色婷婷激情五月综合 | 久久精品国产6699国产精 | 日本色网址 | 视频网站免费看 | 毛片毛片 | 4虎影院最近地址 | 精品伊人久久香线蕉 | 色偷偷成人 | 国产黄mmd在线观看免费 | 成人欧美一区二区三区视频不卡 | 国产特黄一级毛片特黄 | 国产免费啪啪 | 日韩一级黄色录像 | 天堂中文资源在线观看 | 日韩毛片 | 四虎hu | 免费黄色的视频 | 久久精品国产精品亚洲精品 | 亚洲天堂电影在线观看 | 九九九精品 | 51影院在线观看成人免费 | 天天靠天天擦天天摸 | 久久久一本波多野结衣 |