欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python讀取大型csv文件的操作方法(降低內(nèi)存占用)

 更新時間:2024年03月13日 11:53:33   作者:jieshenai  
遇到大型的csv文件時,pandas會把該文件全部加載進內(nèi)存,從而導(dǎo)致程序運行速度變慢,本文提供了批量讀取csv文件、讀取屬性列的方法,減輕內(nèi)存占用情況,文中有詳細的代碼示例,需要的朋友可以參考下

簡介

遇到大型的csv文件時,pandas會把該文件全部加載進內(nèi)存,從而導(dǎo)致程序運行速度變慢。
本文提供了批量讀取csv文件、讀取屬性列的方法,減輕內(nèi)存占用情況。

import pandas as pd

input_file = 'data.csv'

讀取前多少行

加載前100000行數(shù)據(jù)

df = pd.read_csv(input_file, nrows=1e5)
df

查看每個字段占用的系統(tǒng)內(nèi)存的情況

df.info(memory_usage='deep')

設(shè)置 memory_usage 的參數(shù)為 ‘deep’ 時,深度檢查對象中的內(nèi)存使用情況,包括對象中可能包含的其他對象(如列表、數(shù)組或其他數(shù)據(jù)結(jié)構(gòu))。若不設(shè)置deep參數(shù),memory_usage 只會返回一個對象的基礎(chǔ)內(nèi)存使用情況,這主要基于對象本身的內(nèi)存占用,而不考慮它可能引用的其他對象。

在這里插入圖片描述

如上圖所示,前100000行數(shù)據(jù)共占用220.MB內(nèi)存。

查看每列屬性的內(nèi)存占用情況;

item = df.memory_usage(deep=True)

在這里插入圖片描述

針對每個屬性列的字節(jié)數(shù)進行求和,使用/ (1024 ** 2),實現(xiàn)1B到1MB的單位轉(zhuǎn)換。驗證了所有屬性列的內(nèi)存占用確實為 220.8MB。

在這里插入圖片描述

內(nèi)存占用從高到低降序排列:

df.memory_usage(deep=True).sort_values(ascending=False)

在這里插入圖片描述

讀取屬性列

可能我們只關(guān)心, 一整張表中的某幾個屬性,比如:'企業(yè)名稱', '經(jīng)營范圍'。那么便無需把整張表加載進內(nèi)存。

df2 = pd.read_csv(input_file, nrows=1e5, usecols=['企業(yè)名稱', '經(jīng)營范圍'])

查看一下內(nèi)存占用

df2.memory_usage(deep=True).sum() / (1024 ** 2)

在這里插入圖片描述

只讀取兩個屬性列,內(nèi)存占用只有33MB。

逐塊讀取整個文件

pd.read_csv(input_file, chunksize=1e3, nrows=1e5)

  • nrows=1e5: 讀取100000條數(shù)據(jù);
  • chunksize=1e3: 每一塊是1000條數(shù)據(jù);

1e5條數(shù)據(jù),應(yīng)該由100塊1e3的數(shù)據(jù)組成;

# 分批次讀取, 每chunksize是一個批次
chunk_dfs = pd.read_csv(input_file, chunksize=1e3, nrows=1e5)

v = 0
cnt = 0
# 每個chunk_df 都是 dataframe 類型數(shù)據(jù)
for chunk_df in chunk_dfs:
    print(chunk_df.shape)
    cnt += 1
    v += chunk_df.shape[0]
print(v, cnt)

在這里插入圖片描述

上圖驗證了,總共處理了1e5條數(shù)據(jù),分成了100塊進行讀取。

總結(jié)

pd.read_csv(input_file, nrows, usecols, chunksize)
  • nrows: 讀取多少行數(shù)據(jù);
  • usecols: 讀取哪些屬性列的數(shù)據(jù);
  • chunksize:分塊讀取,每一塊的大小是多少條數(shù)據(jù);

到此這篇關(guān)于python讀取大型csv文件的操作方法(降低內(nèi)存占用)的文章就介紹到這了,更多相關(guān)python讀取大型csv文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用BeautifulSoup和Pandas進行網(wǎng)頁數(shù)據(jù)抓取與清洗處理

    使用BeautifulSoup和Pandas進行網(wǎng)頁數(shù)據(jù)抓取與清洗處理

    在數(shù)據(jù)分析和機器學(xué)習(xí)的項目中,數(shù)據(jù)的獲取,清洗和處理是非常關(guān)鍵的步驟,下面我們就來講講如何利用Python中的Beautiful Soup庫進行這樣的操作吧
    2025-02-02
  • 利用Python+Java調(diào)用Shell腳本時的死鎖陷阱詳解

    利用Python+Java調(diào)用Shell腳本時的死鎖陷阱詳解

    這篇文章主要給大家介紹了關(guān)于利用Python+Java調(diào)用Shell腳本時的死鎖陷阱的相關(guān)資料,文章通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • Python循環(huán)結(jié)構(gòu)詳解

    Python循環(huán)結(jié)構(gòu)詳解

    這篇文章主要介紹了Python循環(huán)結(jié)構(gòu)詳解,文中有非常詳細的代碼示例,對正在學(xué)習(xí)python的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • Python列表創(chuàng)建、操作、刪除與遍歷的全方位解析

    Python列表創(chuàng)建、操作、刪除與遍歷的全方位解析

    Python列表是編程中的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),用于存儲有序元素集合,列表中的元素可以是不同類型,增強了數(shù)據(jù)處理的靈活性,本文詳細介紹了列表的常用操作,如查找元素索引、插入、刪除、遍歷等,需要的朋友可以參考下
    2024-11-11
  • flask-script模塊的具體使用

    flask-script模塊的具體使用

    本文主要介紹了flask-script模塊的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 如何為Python終端提供持久性歷史記錄

    如何為Python終端提供持久性歷史記錄

    這篇文章主要介紹了如何為Python終端提供持久性歷史記錄,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 淺析Python自帶性能強悍的標(biāo)準(zhǔn)庫itertools

    淺析Python自帶性能強悍的標(biāo)準(zhǔn)庫itertools

    itertools是python內(nèi)置的模塊,使用簡單且功能強大。這篇文章就主要介紹了通過itertools實現(xiàn)可迭代對象的無限迭代、有限迭代和排列組合。感興趣的同學(xué)可以關(guān)注一下
    2021-12-12
  • Python 如何保存json文件并格式化

    Python 如何保存json文件并格式化

    這篇文章主要介紹了Python 如何保存json文件并格式化,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Python?Opencv中獲取卷積核的實現(xiàn)代碼

    Python?Opencv中獲取卷積核的實現(xiàn)代碼

    這篇文章主要介紹了Python?Opencv中獲取卷積核的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Tensorflow環(huán)境搭建的方法步驟

    Tensorflow環(huán)境搭建的方法步驟

    本篇文章主要介紹了Tensorflow環(huán)境搭建的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02

最新評論