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í)有兩種方法可以獲取到目錄下所有文件名稱:
方法一
第一種方法是引用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:
file_dir = "D:\\metric-traffic\\traffic\\"
for root, dirs, files in os.walk(file_dir):
print(files)

將該目錄下所有的文件路徑可以這樣寫:
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è)目錄下的所有文件名稱僅需要兩行代碼:
file_dir = "D:\\metric-traffic\\traffic\\" glob.glob(file_dir+"*.txt")

二、多文件讀取
使用Pandas的讀取文件很方便,例如read_csv,read_json或者是read_sql都是十分簡(jiǎn)單且高效的操作。循環(huán)處理的話遍歷讀取文件就好了,根據(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)文章
pytorch實(shí)現(xiàn)查看當(dāng)前學(xué)習(xí)率
這篇文章主要介紹了pytorch實(shí)現(xiàn)查看當(dāng)前學(xué)習(xí)率,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
Python實(shí)現(xiàn)監(jiān)控鍵盤鼠標(biāo)操作示例【基于pyHook與pythoncom模塊】
這篇文章主要介紹了Python實(shí)現(xiàn)監(jiān)控鍵盤鼠標(biāo)操作,結(jié)合實(shí)例形式分析了Python基于pyHook與pythoncom模塊的鍵盤、鼠標(biāo)事件響應(yīng)及日志文件操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-09-09
Python基礎(chǔ)教程之淺拷貝和深拷貝實(shí)例詳解
這篇文章主要介紹了Python基礎(chǔ)教程之淺拷貝和深拷貝實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07
使用IronPython把Python腳本集成到.NET程序中的教程
這篇文章主要介紹了使用IronPython把Python腳本集成到.NET程序中的教程,現(xiàn)在剛剛被微軟開(kāi)源的.NET重新成為業(yè)界熱點(diǎn)、本文介紹了使Python和.NET交互的IronPython,需要的朋友可以參考下2015-03-03
python中的turtle庫(kù)函數(shù)簡(jiǎn)單使用教程
這篇文章主要介紹了python中的turtle庫(kù)函數(shù)簡(jiǎn)單使用教程。本文通過(guò)圖片的形式給大家展示的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07
python?Scala函數(shù)與訪問(wèn)修辭符實(shí)例詳解
這篇文章主要為大家介紹了python?Scala函數(shù)與訪問(wèn)修辭符實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Django如何利用uwsgi和nginx修改代碼自動(dòng)重啟
這篇文章主要介紹了Django如何利用uwsgi和nginx修改代碼自動(dòng)重啟問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Python標(biāo)準(zhǔn)庫(kù)pathlib操作目錄和文件
這篇文章主要為大家介紹了Python標(biāo)準(zhǔn)庫(kù)pathlib操作目錄和文件的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11

