Pandas技巧分享之讀取多個文件
日常分析數(shù)據(jù)時,只有單一數(shù)據(jù)文件的情況其實很少見,更多的情況是,我們從同一個數(shù)據(jù)來源定期或不定期的采集了很多數(shù)據(jù)文件;或者從不同的數(shù)據(jù)源采集多種不同格式的數(shù)據(jù)文件。
在這樣的情況下,分析數(shù)據(jù)之前,需要將不同的數(shù)據(jù)集合并起來。合并數(shù)據(jù)一般有兩個維度,一是同構(gòu)的數(shù)據(jù)集合并后行數(shù)增加;一是異構(gòu)的數(shù)據(jù)集合并后列數(shù)增加。
1. 同構(gòu)數(shù)據(jù)集
比如我們采集了3個不同年份的人口統(tǒng)計文件,分別為:
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
方法,不過一個一個文件讀取之后再合并比較麻煩。
如果文件名稱有規(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ù)的,如果要保持索引的唯一性,可以在合并時指定 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技巧分享之讀取多個文件的文章就介紹到這了,更多相關(guān)Pandas讀取多個文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
jupyter notebook使用argparse傳入list參數(shù)
這篇文章主要介紹了jupyter notebook使用argparse傳入list參數(shù),jupyter notebook其實是可以使用 argparse來調(diào)用參數(shù)的,只要把參數(shù)轉(zhuǎn)為list即可,下面來看看具體的實現(xiàn)過程吧2022-01-01Python實現(xiàn)二值掩膜影像去噪與邊緣強化方法詳解
這篇文章主要介紹了Python實現(xiàn)二值掩膜影像去噪與邊緣強化方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01如何在python開發(fā)工具PyCharm中搭建QtPy環(huán)境(教程詳解)
這篇文章主要介紹了在python開發(fā)工具PyCharm中搭建QtPy環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02在PyTorch中自定義fit()函數(shù)中的操作代碼
當(dāng)在進行有監(jiān)督學(xué)習(xí)時,我們可以使用fit()函數(shù)對模型進行訓(xùn)練,通過迭代優(yōu)化模型的參數(shù),使其能夠更好地擬合訓(xùn)練數(shù)據(jù),本文給大家介紹了在PyTorch中自定義fit()函數(shù)中的操作代碼,感興趣的同學(xué)可以跟著小編一起來看看2024-05-05各個系統(tǒng)下的Python解釋器相關(guān)安裝方法
這篇文章主要介紹了各個系統(tǒng)下的Python解釋器相關(guān)安裝方法,Python在很多Linux發(fā)行版中已經(jīng)被默認安裝,需要的朋友可以參考下2015-10-10