国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python數據分析之DataFrame內存優化

瀏覽:33日期:2022-06-15 10:06:48
目錄1. pandas查看數據占用大小2. 對數據進行壓縮3. 參考資料

💃今天看案例的時候看見了一個關于pandas數據的內存壓縮功能,特地來記錄一下。

🎒先說明一下情況,pandas處理幾百兆的dataframe是沒有問題的,但是我們在處理幾個G甚至更大的數據時,就會特別占用內存,對內存小的用戶特別不好,所以對數據進行壓縮是很有必要的。

1. pandas查看數據占用大小

給大家看一下這么查看自己的內存大小(user_log是dataframe的名字)

#方法1 就是使用查看dataframe信息的命令user_log.info()#方法2 使用memory_usage()或者getsizeof(user_log)import timeimport sysprint(’all_data占據內存約: {:.2f} GB’.format(user_log.memory_usage().sum()/ (1024**3)))print(’all_data占據內存約: {:.2f} GB’.format(sys.getsizeof(user_log)/(1024**3)))

我這里有個dataframe文件叫做user_log,原始大小為1.91G,然后pandas讀取出來,內存使用了2.9G。

看一下原始數據大小:1.91G

python數據分析之DataFrame內存優化

pandas讀取后的內存消耗:2.9G

python數據分析之DataFrame內存優化

2. 對數據進行壓縮 數值類型的列進行降級處理(‘int16’, ‘int32’, ‘int64’, ‘float16’, ‘float32’, ‘float64’) 字符串類型的列轉化為類別類型(category) 字符串類型的列的類別數超過總行數的一半時,建議使用object類型

我們這里主要采用對數值型類型的數據進行降級,說一下降級是什么意思意思呢,可以比喻為一個一個抽屜,你有一個大抽屜,但是你只裝了鑰匙,這就會有很多空間浪費掉,如果我們將鑰匙放到一個小抽屜里,就可以節省很多空間,就像字符的類型int32 比int8占用空間大很多,但是我們的數據使用int8類型就夠了,這就導致數據占用了很多空間,我們要做的就是進行數據類型轉換,節省內存空間。

壓縮數值的這段代碼是從天池大賽的某個項目中看見的,查閱資料后發現,大家壓縮內存都是基本固定的函數形式

def reduce_mem_usage(df): starttime = time.time() numerics = [’int16’, ’int32’, ’int64’, ’float16’, ’float32’, ’float64’] start_mem = df.memory_usage().sum() / 1024**2 for col in df.columns:col_type = df[col].dtypesif col_type in numerics: c_min = df[col].min() c_max = df[col].max() if pd.isnull(c_min) or pd.isnull(c_max):continue if str(col_type)[:3] == ’int’:if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max: df[col] = df[col].astype(np.int8)elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max: df[col] = df[col].astype(np.int16)elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max: df[col] = df[col].astype(np.int32)elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max: df[col] = df[col].astype(np.int64) else:if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max: df[col] = df[col].astype(np.float16)elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max: df[col] = df[col].astype(np.float32)else: df[col] = df[col].astype(np.float64) end_mem = df.memory_usage().sum() / 1024**2 print(’-- Mem. usage decreased to {:5.2f} Mb ({:.1f}% reduction),time spend:{:2.2f} min’.format(end_mem, 100*(start_mem-end_mem)/start_mem, (time.time()-starttime)/60)) return df

用壓縮的方式將數據導入user_log2中

#首先讀取到csv中如何傳入函數生稱新的csvuser_log2=reduce_mem_usage(pd.read_csv(r’/Users/liucong/MainFiles/ML/tianchi/tianmiao/user_log_format1.csv’))

讀取成功:內訓大小為890.48m 減少了69.6%,效果顯著

python數據分析之DataFrame內存優化

查看壓縮后的數據集信息:類型發生了變化,數量變小了

python數據分析之DataFrame內存優化

3. 參考資料

《天池大賽》《kaggle大賽》鏈接: pandas處理datafarme節約內存.

到此這篇關于python數據分析之DataFrame內存優化的文章就介紹到這了,更多相關python DataFrame內存優化內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产一级久久久久久毛片 | 国产日产欧产精品精品推荐小说 | 72种姿势欧美久久久久大黄蕉 | 午夜国产高清精品一区免费 | 国产二区自拍 | 又摸又揉又黄又爽的视频 | www.日本高清.com | 九九国产精品九九 | 亚洲精品欧美精品国产精品 | 欧美资源在线观看 | 宅女深夜福利视频在线 | 粉嫩高中生的第一次在线观看 | 欧美成人毛片在线视频 | 成人爱爱网站在线观看 | 国产a国产片 | 欧美成人 综合网播九公社 欧美成人26uuu欧美毛片 | 三级精品 | 久久久精品成人免费看 | 国产日产欧产精品精品推荐在线 | 亚洲一区在线播放 | 欧美一级免费观看 | 蜜桃88av| 91青草久久久久久清纯 | 欧美一区二区免费 | 日本三级香港三级妇三 | 99re久久资源最新地址 | 亚洲精选在线 | 久久se精品一区二区国产 | 7777在线| 日本特黄a级高清免费酷网 日本特黄特色 | 美女福利视频午夜在线 | 免费毛片播放 | 久久欧美久久欧美精品 | 日本a级在线 | 男女男精品视频网站 | 国产大乳孕妇喷奶水在线观看 | 午夜在线亚洲男人午在线 | 国产一区二区三区视频 | 欧美一级毛片日韩一级 | 亚洲综合首页 | 国产成人cao在线 |