Pandas技巧分享之讀取多個(gè)文件
日常分析數(shù)據(jù)時(shí),只有單一數(shù)據(jù)文件的情況其實(shí)很少見,更多的情況是,我們從同一個(gè)數(shù)據(jù)來源定期或不定期的采集了很多數(shù)據(jù)文件;或者從不同的數(shù)據(jù)源采集多種不同格式的數(shù)據(jù)文件。
在這樣的情況下,分析數(shù)據(jù)之前,需要將不同的數(shù)據(jù)集合并起來。合并數(shù)據(jù)一般有兩個(gè)維度,一是同構(gòu)的數(shù)據(jù)集合并后行數(shù)增加;一是異構(gòu)的數(shù)據(jù)集合并后列數(shù)增加。
1. 同構(gòu)數(shù)據(jù)集
比如我們采集了3個(gè)不同年份的人口統(tǒng)計(jì)文件,分別為:
import pandas as pd fp1 = "population1.csv" df = pd.read_csv(fp1) df

import pandas as pd fp2 = "population2.csv" df = pd.read_csv(fp2) df

import pandas as pd fp3 = "population3.csv" df = pd.read_csv(fp3) df

合并所有的數(shù)據(jù)集可以用 pd.concat 方法,不過一個(gè)一個(gè)文件讀取之后再合并比較麻煩。
如果文件名稱有規(guī)律的話(一般定期采集的數(shù)據(jù)集文件,文件名都有一定的規(guī)律),可以通過 glob 庫(支持通配符匹配)來匹配所有數(shù)據(jù)文件。
然后利用python代碼的靈活性一次合并所有的數(shù)據(jù)。
from glob import glob
files = sorted(glob("./population[1-3].csv"))
df = pd.concat((pd.read_csv(f) for f in files))
df
這樣合并之后,發(fā)現(xiàn)索引是有重復(fù)的,如果要保持索引的唯一性,可以在合并時(shí)指定 ignore_index=True。
df = pd.concat((pd.read_csv(f) for f in files), ignore_index=True) df

2. 異構(gòu)數(shù)據(jù)集
異構(gòu)的數(shù)據(jù)集指數(shù)據(jù)結(jié)構(gòu)不一樣的數(shù)據(jù),一般來自于不同的數(shù)據(jù)源。
比如:
import pandas as pd fp1 = "population-total.csv" df = pd.read_csv(fp1) df

import pandas as pd fp2 = "population-man.csv" df = pd.read_csv(fp2) df

import pandas as pd fp3 = "population-woman.csv" df = pd.read_csv(fp3) df

合并的方式和前面按行合并類似,區(qū)別在于指定 axis=1。
from glob import glob
files = sorted(glob("./population-*.csv"))
df = pd.concat((pd.read_csv(f) for f in files), axis=1)
df
合并之后發(fā)現(xiàn)有重復(fù)的列,對于重復(fù)的行,可以簡單的通過 drop_duplicates()方法來去重,去除重復(fù)的列則需要一些技巧。
df = df.loc[:, ~df.columns.duplicated()] df

這樣就去除了重復(fù)的列,完成了異構(gòu)數(shù)據(jù)集的合并。
到此這篇關(guān)于Pandas技巧分享之讀取多個(gè)文件的文章就介紹到這了,更多相關(guān)Pandas讀取多個(gè)文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)的飛速中文網(wǎng)小說下載腳本
這篇文章主要介紹了Python實(shí)現(xiàn)的飛速中文網(wǎng)小說下載腳本,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04
python實(shí)現(xiàn)雙色球隨機(jī)選號(hào)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)雙色球隨機(jī)選號(hào),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
關(guān)于自動(dòng)化測試框架pytest的Fixture固件
這篇文章主要介紹了關(guān)于自動(dòng)化測試框架pytest的Fixture固件,Fixture它其實(shí)就是一些函數(shù),會(huì)在執(zhí)行測試方法/測試函數(shù)前后加載運(yùn)行它們,需要的朋友可以參考下2023-03-03
基于Python實(shí)現(xiàn)一個(gè)文件相似度檢測工具
本文介紹基于Python的文件相似度檢測工具,支持余弦、Jaccard、編輯距離等算法,具備預(yù)處理、閾值判斷和健壯性處理,適用于文檔查重、代碼檢測及版本比較,需要的朋友可以參考下2025-07-07
python使用PIL和matplotlib獲取圖片像素點(diǎn)并合并解析
這篇文章主要介紹了python使用PIL和matplotlib獲取圖片像素點(diǎn)并合并解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
一次搞懂hasattr()/getattr()/setattr()在Python中的應(yīng)用
在Python中,hasattr()、getattr()和setattr()是一組內(nèi)置函數(shù),本文將從入門到精通,全面介紹hasattr()、getattr()和setattr()函數(shù)的用法和相關(guān)知識(shí)點(diǎn),需要的可以了解下2023-08-08

