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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python數(shù)據(jù)分析之DataFrame內(nèi)存優(yōu)化

瀏覽:61日期:2022-06-15 10:06:48
目錄1. pandas查看數(shù)據(jù)占用大小2. 對(duì)數(shù)據(jù)進(jìn)行壓縮3. 參考資料

💃今天看案例的時(shí)候看見(jiàn)了一個(gè)關(guān)于pandas數(shù)據(jù)的內(nèi)存壓縮功能,特地來(lái)記錄一下。

🎒先說(shuō)明一下情況,pandas處理幾百兆的dataframe是沒(méi)有問(wèn)題的,但是我們?cè)谔幚韼讉€(gè)G甚至更大的數(shù)據(jù)時(shí),就會(huì)特別占用內(nèi)存,對(duì)內(nèi)存小的用戶特別不好,所以對(duì)數(shù)據(jù)進(jìn)行壓縮是很有必要的。

1. pandas查看數(shù)據(jù)占用大小

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

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

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

看一下原始數(shù)據(jù)大小:1.91G

python數(shù)據(jù)分析之DataFrame內(nèi)存優(yōu)化

pandas讀取后的內(nèi)存消耗:2.9G

python數(shù)據(jù)分析之DataFrame內(nèi)存優(yōu)化

2. 對(duì)數(shù)據(jù)進(jìn)行壓縮 數(shù)值類(lèi)型的列進(jìn)行降級(jí)處理(‘int16’, ‘int32’, ‘int64’, ‘float16’, ‘float32’, ‘float64’) 字符串類(lèi)型的列轉(zhuǎn)化為類(lèi)別類(lèi)型(category) 字符串類(lèi)型的列的類(lèi)別數(shù)超過(guò)總行數(shù)的一半時(shí),建議使用object類(lèi)型

我們這里主要采用對(duì)數(shù)值型類(lèi)型的數(shù)據(jù)進(jìn)行降級(jí),說(shuō)一下降級(jí)是什么意思意思呢,可以比喻為一個(gè)一個(gè)抽屜,你有一個(gè)大抽屜,但是你只裝了鑰匙,這就會(huì)有很多空間浪費(fèi)掉,如果我們將鑰匙放到一個(gè)小抽屜里,就可以節(jié)省很多空間,就像字符的類(lèi)型int32 比int8占用空間大很多,但是我們的數(shù)據(jù)使用int8類(lèi)型就夠了,這就導(dǎo)致數(shù)據(jù)占用了很多空間,我們要做的就是進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換,節(jié)省內(nèi)存空間。

壓縮數(shù)值的這段代碼是從天池大賽的某個(gè)項(xiàng)目中看見(jiàn)的,查閱資料后發(fā)現(xiàn),大家壓縮內(nèi)存都是基本固定的函數(shù)形式

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

用壓縮的方式將數(shù)據(jù)導(dǎo)入user_log2中

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

讀取成功:內(nèi)訓(xùn)大小為890.48m 減少了69.6%,效果顯著

python數(shù)據(jù)分析之DataFrame內(nèi)存優(yōu)化

查看壓縮后的數(shù)據(jù)集信息:類(lèi)型發(fā)生了變化,數(shù)量變小了

python數(shù)據(jù)分析之DataFrame內(nèi)存優(yōu)化

3. 參考資料

《天池大賽》《kaggle大賽》鏈接: pandas處理datafarme節(jié)約內(nèi)存.

到此這篇關(guān)于python數(shù)據(jù)分析之DataFrame內(nèi)存優(yōu)化的文章就介紹到這了,更多相關(guān)python DataFrame內(nèi)存優(yōu)化內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 久久久久久久久国产 | 成人欧美一区二区三区黑人 | a毛片在线看片免费 | 99在线免费视频 | 九九热视频精品在线观看 | 国产私拍福利精品视频推出 | 亚洲自拍中文 | 日韩美女免费线视频 | 国产精品久久久久久久久久一区 | 国产精品资源手机在线播放 | 久久99精品久久只有精品 | 欧美aav| a毛片视频免费观看影院 | 国产一区二区在线视频 | 99小视频 | 毛片免费在线观看 | 日本免费一区二区三区视频 | 欧美啊啊啊 | 毛片免费全部免费观看 | 亚洲 自拍 欧美 综合 | 亚洲精品国产啊女成拍色拍 | 国产精品久久久久久久久久日本 | 久久免费激情视频 | 成人午夜在线观看 | 成人一区二区免费中文字幕 | 麻豆传媒一区 | 国产亚洲一区二区在线观看 | 国产欧美成人免费观看 | 国产欧美一区二区三区免费看 | 在线观看欧美一区 | 黄色一级片a | 最新国产三级在线观看不卡 | 欧美乱一级在线观看 | 国产三级精品播放 | 中文在线视频观看 | 在线观看亚洲精品国产 | 99在线视频免费观看 | 欧美成人高清手机在线视频 | 在线亚洲黄色 | 久久性生大片免费观看性 | 欧美视频在线一区二区三区 |