簡介:如今,Python-Pandas對于分析和數(shù)據(jù)科學的數(shù)據(jù)管理至關重要。確實,我們現(xiàn)在看到的是Pandas得以擴展以處理越來越大的數(shù)據(jù)。熊貓是一個可調(diào)平臺,不支持它自己的數(shù)據(jù)類型,也不支持數(shù)值庫Numpy的數(shù)據(jù)類型。這些一起構成了數(shù)據(jù)框列選項的相當細致的集合-比R還要多。大多數(shù)Pandas程序員沒有利用這些可能性,而是接受read_csv函數(shù)隨附的大量默認值。這些默認值對于10
幾周前,當我遇到兩個評論者之間關于我正在研究的粒度數(shù)據(jù)類型的需求/效用的棘手交流時,我正在搜索stackoverflow以查看是否/如何在Pandas中實現(xiàn)16位和8位整數(shù)。反對過度使用詳細數(shù)據(jù)類型的“騙子”方面無疑習慣于處理小型數(shù)據(jù)集,在小型數(shù)據(jù)集中,16位和32位屬性之間的數(shù)據(jù)幀RAM差異以字節(jié)為單位,而不是以兆字節(jié)為單位。下載最新的5年PUMS文件時,我只能微笑 來自美國人口普查。csv_hus.zip和csv_pus.zip分別由4個文本文件組成-第一個數(shù)據(jù)來自美國家庭樣本,第二個數(shù)據(jù)來自美國人口。這兩個文件都具有數(shù)百萬個記錄,數(shù)百個列大小范圍。2字節(jié)和4字節(jié)的列之間幾乎有1600萬行的區(qū)別是30 MB RAM!
我強烈建議數(shù)據(jù)書呆子查看PUMS數(shù)據(jù)。除了可用于評估管理挑戰(zhàn)之外,該數(shù)據(jù)還為美國家庭和人口提供了令人著迷的外觀。實際上,這與像布魯金斯這樣的智囊團的研究人員使用的數(shù)據(jù)相同。順便提一句,PUMA分析了“將每個州劃分為連續(xù)的地理單元(每個區(qū)域不少于100
我對此博客的自我指導的任務是,將包含人口數(shù)據(jù)的4個文件加載到Pandas數(shù)據(jù)框中,然后探索用于優(yōu)化存儲的選項。出發(fā)點是天真地加載了Pandas數(shù)據(jù)框,然后在相關列上應用了“向下轉換”功能以減少存儲量。然后,我概述了一個概念證明,用于根據(jù)記錄的隨機抽樣確定向下轉換選項。我的發(fā)現(xiàn):在這種情況下,默認負載和向下負載之間的差異非常明顯:33 GB和10 GB!
要點是,在將大數(shù)據(jù)文件加載到Pandas時,必須謹慎對待列類型/大小。在后續(xù)文章中,我將討論Pandas中字符/類別變量的處理以及它們與數(shù)據(jù)框大小/性能的關系。
使用的技術是具有128 GB RAM的Wintel 10,JupyterLab 1.2.4和Python 3.7.5,以及基礎庫Pandas 0.25.3和Numpy 1.16.4。Feather 0.4.0處理數(shù)據(jù)幀的高效磁盤存儲。
請在此處查看博客的其余部分 。
關注 CDA人工智能學院 ,回復“錄播”獲取更多人工智能精選直播視頻!