最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python數據分析之DataFrame內存優(yōu)化

 更新時間:2021年07月12日 09:29:31   作者:柳小蔥  
pandas處理幾百兆的dataframe是沒有問題的,但是我們在處理幾個G甚至更大的數據時,就會特別占用內存,對內存小的用戶特別不好,所以對數據進行壓縮是很有必要的,本文就介紹了python DataFrame內存優(yōu)化,感興趣的可以了解一下

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

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

1. pandas查看數據占用大小

給大家看一下這么查看自己的內存大?。?mark>user_log是dataframe的名字)

#方法1 就是使用查看dataframe信息的命令
user_log.info()
#方法2 使用memory_usage()或者getsizeof(user_log)
import time
import sys
print('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

在這里插入圖片描述

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

在這里插入圖片描述

2. 對數據進行壓縮

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

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

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

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].dtypes
        if 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中如何傳入函數生稱新的csv
user_log2=reduce_mem_usage(pd.read_csv(r'/Users/liucong/MainFiles/ML/tianchi/tianmiao/user_log_format1.csv'))

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

在這里插入圖片描述

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

在這里插入圖片描述

3. 參考資料

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

到此這篇關于python數據分析之DataFrame內存優(yōu)化的文章就介紹到這了,更多相關python DataFrame內存優(yōu)化內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 新手Python環(huán)境配置指南及pip安裝教程

    新手Python環(huán)境配置指南及pip安裝教程

    這篇文章主要給大家介紹了新手Python環(huán)境配置指南及pip安裝教程的相關資料,pip是一款非常方便的python包管理工具,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • Django項目的創(chuàng)建全過程

    Django項目的創(chuàng)建全過程

    本文介紹了如何在Windows系統(tǒng)上安裝和配置Python解釋器、切換默認版本、使用虛擬環(huán)境安裝Django,并通過PyCharm創(chuàng)建和管理Django項目
    2025-01-01
  • python3獲取當前文件的上一級目錄實例

    python3獲取當前文件的上一級目錄實例

    下面小編就為大家分享一篇python3獲取當前文件的上一級目錄實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python+selenium+autoit實現文件上傳功能

    python+selenium+autoit實現文件上傳功能

    這篇文章主要介紹了python+selenium+autoit實現文件上傳功能,需要的朋友可以參考下
    2017-08-08
  • python案例中Flask全局配置示例詳解

    python案例中Flask全局配置示例詳解

    這篇文章主要為大家介紹了python案例中Flask全局配置示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • pygame外星人入侵小游戲超詳細開發(fā)流程

    pygame外星人入侵小游戲超詳細開發(fā)流程

    這篇文章主要介紹了利用Python編寫的外星人入侵游戲的示例代碼,文中的代碼講解詳細,對我們學習Python有一定的幫助,感興趣的可以學習一下
    2022-03-03
  • Flask框架利用Echarts實現繪制圖形

    Flask框架利用Echarts實現繪制圖形

    echarts是百度推出的一款開源的基于JavaScript的可視化圖表庫,該開發(fā)庫目前發(fā)展非常不錯,且支持各類圖形的繪制可定制程度高。如下演示案例中,將分別展示運用該繪圖庫如何前后端交互繪制(餅狀圖,柱狀圖,折線圖)這三種最基本的圖形,需要的可以參考一下
    2022-10-10
  • Python3用tkinter和PIL實現看圖工具

    Python3用tkinter和PIL實現看圖工具

    這篇文章給大家分享了Python3用tkinter和PIL實現看圖工具的詳細實例代碼,有興趣的朋友參考學習下。
    2018-06-06
  • 解決nohup重定向python輸出到文件不成功的問題

    解決nohup重定向python輸出到文件不成功的問題

    今天小編就為大家分享一篇解決nohup重定向python輸出到文件不成功的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 解決python flask中config配置管理的問題

    解決python flask中config配置管理的問題

    今天小編就為大家分享一篇解決python flask中config配置管理的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07

最新評論

商洛市| 高尔夫| 永清县| 大庆市| 温州市| 安多县| 犍为县| 旌德县| 张家口市| 德保县| 平遥县| 淮南市| 隆昌县| 延安市| 来安县| 合阳县| 大关县| 乌拉特前旗| 岳阳市| 新野县| 古田县| 开封市| 大宁县| 平凉市| 湖南省| 阿图什市| 伊金霍洛旗| 临海市| 改则县| 巴青县| 襄城县| 仪陇县| 兴业县| 玉门市| 观塘区| 广宁县| 筠连县| 延川县| 通道| 青川县| 马龙县|