Pandas數(shù)據(jù)分析多文件批次聚合處理實(shí)例解析
前言
很多情況下我們處理的文件并不只是一個(gè)單純的CSV文件或者Excel文件。我們會(huì)結(jié)合更多是數(shù)據(jù)去進(jìn)行聚合統(tǒng)計(jì)分析,或許是需要解析到一整個(gè)數(shù)據(jù)存儲(chǔ)壓縮包,或許是對(duì)一整個(gè)目錄文件讀取再進(jìn)行數(shù)據(jù)操作,這都需要我們掌握一定的多文件處理方法和策略。此篇文章正是基于此場(chǎng)景下處理多文件方法整合策略。
一、多文件場(chǎng)景
我們就以2020年CCF大數(shù)據(jù)與智能競(jìng)賽的數(shù)據(jù)來(lái)作為實(shí)例來(lái)處理:
現(xiàn)在我們有這么文本文件需要進(jìn)行讀取分析,按照往常我們一個(gè)一個(gè)讀取顯然費(fèi)時(shí)費(fèi)力。那么我們肯定想到了如果能夠一次讀取所有的文件名就可以循環(huán)遍歷讀取文件內(nèi)容了,此時(shí)有兩種方法可以獲取到目錄下所有文件名稱(chēng):
方法一
第一種方法是引用OS庫(kù)中的walk方法,python中os.walk是一個(gè)簡(jiǎn)單易用的文件、目錄遍歷器,可以幫助我們高效的處理文件、目錄方面的事情。其語(yǔ)法為:
os.walk(top, topdown=True, οnerrοr=None, followlinks=False)
參數(shù)說(shuō)明:
- top 是你所要便利的目錄的地址
- topdown 為真,則優(yōu)先遍歷top目錄,否則優(yōu)先遍歷top的子目錄(默認(rèn)為開(kāi)啟)
- onerror 需要一個(gè) callable 對(duì)象,當(dāng)walk需要異常時(shí),會(huì)調(diào)用
- followlinks 如果為真,則會(huì)遍歷目錄下的快捷方式(linux 下是 symbolic link)實(shí)際所指的目錄(默認(rèn)關(guān)閉)
os.walk 的返回值是一個(gè)生成器(generator),也就是說(shuō)我們需要不斷的遍歷它,來(lái)獲得所有的內(nèi)容。
返回說(shuō)明:
每次遍歷的對(duì)象都是返回的是一個(gè)三元組(root,dirs,files)
- root 所指的是當(dāng)前正在遍歷的這個(gè)文件夾的本身的地址
- dirs 是一個(gè) list ,內(nèi)容是該文件夾中所有的目錄的名字(不包括子目錄)
- files 同樣是 list , 內(nèi)容是該文件夾中所有的文件(不包括子目錄)
其中files就是我們?cè)撃夸浵碌乃形募Q(chēng):
file_dir = "D:\\metric-traffic\\traffic\\" for root, dirs, files in os.walk(file_dir): print(files)
將該目錄下所有的文件路徑可以這樣寫(xiě):
file_dir = "D:\\metric-traffic\\traffic\\" for root, dirs, files in os.walk(file_dir): for name in files: print(os.path.join(root, name)) # 文件
方法二
方法一需要循環(huán)遍歷而且一次只能讀出一條完整路徑,可以通過(guò)list來(lái)保存單個(gè)路徑形成列表,但是多個(gè)循環(huán)遍歷效率較為低下。Python提供了glob庫(kù),只要安裝python就可以使用該模塊。glob模塊主要用來(lái)查找和文件,可以使用 *、?、[]
這三種**通配符
**對(duì)路徑中的文件進(jìn)行匹配。
*
:代表0個(gè)或多個(gè)字符?
:代表一個(gè)字符[]
:匹配指定范圍內(nèi)的字符,如[0-9]匹配數(shù)字
如果我們想要取得一個(gè)目錄下的所有文件名稱(chēng)僅需要兩行代碼:
file_dir = "D:\\metric-traffic\\traffic\\" glob.glob(file_dir+"*.txt")
二、多文件讀取
使用Pandas的讀取文件很方便,例如read_csv,read_json或者是read_sql都是十分簡(jiǎn)單且高效的操作。循環(huán)處理的話(huà)遍歷讀取文件就好了,根據(jù)我們獲取到的目錄路徑:
file_dir = "D:\\metric-traffic\\traffic\\" list_file=glob.glob(file_dir+"*.txt") for i in range(len(list_file)): df=pd.read_csv(list_file[i]) print(df)
以上就是Pandas數(shù)據(jù)分析多文件批次聚合處理實(shí)例解析的詳細(xì)內(nèi)容,更多關(guān)于Pandas多文件聚合處理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python?Pandas?中的數(shù)據(jù)結(jié)構(gòu)詳解
- Pandas數(shù)據(jù)結(jié)構(gòu)中Series屬性詳解
- Pandas數(shù)據(jù)結(jié)構(gòu)之Series的使用
- Python Pandas學(xué)習(xí)之Pandas數(shù)據(jù)結(jié)構(gòu)詳解
- Pandas數(shù)據(jù)分析常用函數(shù)的使用
- Python?第三方庫(kù)?Pandas?數(shù)據(jù)分析教程
- Python利用Pandas進(jìn)行數(shù)據(jù)分析的方法詳解
- Pandas常用的數(shù)據(jù)結(jié)構(gòu)和常用的數(shù)據(jù)分析技術(shù)
相關(guān)文章
python中的對(duì)象拷貝示例 python引用傳遞
你想復(fù)制一個(gè)對(duì)象?因?yàn)樵赑ython中,無(wú)論你把對(duì)象做為參數(shù)傳遞,做為函數(shù)返回值,都是引用傳遞的2014-01-01Python如何在main中調(diào)用函數(shù)內(nèi)的函數(shù)方式
這篇文章主要介紹了Python如何在main中調(diào)用函數(shù)內(nèi)的函數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06Python2實(shí)現(xiàn)的圖片文本識(shí)別功能詳解
這篇文章主要介紹了Python2實(shí)現(xiàn)的圖片文本識(shí)別功能,結(jié)合實(shí)例形式分析了Python pytesser庫(kù)的安裝及使用pytesser庫(kù)識(shí)別圖片文字相關(guān)操作技巧,需要的朋友可以參考下2018-07-07談?wù)凱ython:為什么類(lèi)中的私有屬性可以在外部賦值并訪(fǎng)問(wèn)
這篇文章主要介紹了談?wù)凱ython:為什么類(lèi)中的私有屬性可以在外部賦值并訪(fǎng)問(wèn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Python實(shí)現(xiàn)圖片識(shí)別加翻譯功能
這篇文章主要介紹了Python使用百度AI接口實(shí)現(xiàn)圖片識(shí)別加翻譯功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12python 使用pandas同時(shí)對(duì)多列進(jìn)行賦值
這篇文章主要介紹了python 使用pandas同時(shí)對(duì)多列進(jìn)行賦值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03解決ImportError: cannot import name ‘Imput
您遇到的ImportError: cannot import name ‘Imputer‘錯(cuò)誤提示表明您嘗試導(dǎo)入一個(gè)名為’Imputer’的模塊或類(lèi),但是該模塊或類(lèi)無(wú)法找到,本文小編給大家介紹了如何解決這個(gè)問(wèn)題,需要的朋友可以參考下2023-10-10