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)文章
一行代碼實(shí)現(xiàn)Python動(dòng)態(tài)加載依賴
本文主要介紹了Python動(dòng)態(tài)加載依賴,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12Python設(shè)計(jì)模式之觀察者模式實(shí)例
這篇文章主要介紹了設(shè)計(jì)模式中的觀察者模式Python實(shí)例,需要的朋友可以參考下2014-04-04jupyter notebook使用argparse傳入list參數(shù)
這篇文章主要介紹了jupyter notebook使用argparse傳入list參數(shù),jupyter notebook其實(shí)是可以使用 argparse來調(diào)用參數(shù)的,只要把參數(shù)轉(zhuǎn)為list即可,下面來看看具體的實(shí)現(xiàn)過程吧2022-01-01Python實(shí)現(xiàn)二值掩膜影像去噪與邊緣強(qiáng)化方法詳解
這篇文章主要介紹了Python實(shí)現(xiàn)二值掩膜影像去噪與邊緣強(qiáng)化方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01在paddle中安裝python-bidi出錯(cuò)問題及解決
在Paddle中安裝python-bidi時(shí)遇到Rust和Cargo缺失的問題,通過安裝舊版本的python-bidi(0.4.0)解決了問題2025-02-02如何在python開發(fā)工具PyCharm中搭建QtPy環(huán)境(教程詳解)
這篇文章主要介紹了在python開發(fā)工具PyCharm中搭建QtPy環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02在PyTorch中自定義fit()函數(shù)中的操作代碼
當(dāng)在進(jìn)行有監(jiān)督學(xué)習(xí)時(shí),我們可以使用fit()函數(shù)對模型進(jìn)行訓(xùn)練,通過迭代優(yōu)化模型的參數(shù),使其能夠更好地?cái)M合訓(xùn)練數(shù)據(jù),本文給大家介紹了在PyTorch中自定義fit()函數(shù)中的操作代碼,感興趣的同學(xué)可以跟著小編一起來看看2024-05-05各個(gè)系統(tǒng)下的Python解釋器相關(guān)安裝方法
這篇文章主要介紹了各個(gè)系統(tǒng)下的Python解釋器相關(guān)安裝方法,Python在很多Linux發(fā)行版中已經(jīng)被默認(rèn)安裝,需要的朋友可以參考下2015-10-10