利用python合并csv文件的方式實(shí)例
1.用concat方法合并csv
將兩個相同的csv文件進(jìn)行數(shù)據(jù)合并,通過pandas的read_csv和to_csv來完成,即采用concat方法:
#加載第三方庫 import pandas as pd import numpy as np #讀取文件 df1 = pd.read_csv("文件-1.csv") df2 = pd.read_csv("文件-2.csv") #合并 df = pd.concat([df1,df2]) df.drop_duplicates() #數(shù)據(jù)去重 #保存合并后的文件 df.to_csv('文件.csv',encoding = 'utf-8')
也可以增加一列標(biāo)簽,以區(qū)別兩個合并后的數(shù)據(jù):
#加載第三方庫 import pandas as pd import numpy as np #讀取文件 df1 = pd.read_csv("文件-1.csv") df1["來自文件"] = "文件-1" df2 = pd.read_csv("文件-2.csv") df2["來自文件"] = "文件-2" #合并 df = pd.concat([df1,df2]) df.drop_duplicates() #數(shù)據(jù)去重 #保存合并后的文件 df.to_csv('文件.csv',encoding = 'utf-8')
2.glob模塊批量合并csv
在利用合并少量文件時(shí),可以使用上面的concat方法。但是遇到大量的相同文件需要合并,此時(shí)應(yīng)該進(jìn)行批量合并,這可以減少工作量,提高操作效率。
利用Python批量合并csv,這里介紹使用的方法是引入glob模塊。
glob模塊是最簡單的模塊之一,內(nèi)容少,它可以查找符合特定規(guī)則的文件路徑名。
通過glob方法遍歷所有文件,讀取數(shù)據(jù)并追加保存到文件中。
import numpy as np import pandas as pd import glob import re csv_list = glob.glob('*.csv') print('共發(fā)現(xiàn)%s個CSV文件'% len(csv_list)) print('正在處理............') for i in csv_list: fr = open(i,'r',encoding='utf-8').read() with open('文件合集.csv','a',encoding='utf-8') as f: f.write(fr) print('合并完畢!')
以上方法是合并csv文件,要合并excel文件同理。
補(bǔ)充:Python處理(加載、合并)多個csv文件
數(shù)據(jù)集介紹:本數(shù)據(jù)集是某化工系統(tǒng)的數(shù)據(jù),一共有很多個月的,我這里就拿一個月的數(shù)據(jù)集,August_data(八月的數(shù)據(jù)集),一共有31個csv文件。
方法一 for循環(huán)遍歷+os.listdir(directory_path)+[ for file in tqdm] + os.path.join(path,file)
import pandas as pd import numpy as np from tqdm import tqdm import os def get_data(path): df_list = [] for file in tqdm(os.listdir(path)):##進(jìn)度條 file_path = os.path.join(path, file) df = pd.read_csv(file_path) df_list.append(df) df = pd.concat(df_list) return df cPath = '.\August_data' # cPath = 'F:/BaiduNetdiskDownload/寧東電廠數(shù)據(jù)及分析要求/寧東脫銷系統(tǒng)優(yōu)化-上海交大/SCR數(shù)據(jù)-2020-1/8月數(shù)據(jù)' #F:/BaiduNetdiskDownload/寧東電廠數(shù)據(jù)及分析要求/寧東脫銷系統(tǒng)優(yōu)化-上海交大/SCR數(shù)據(jù)-2020-1/8月數(shù)據(jù) # uPath = str(cPath)#uPath = unicode(cPath,'utf-8') # dirs = os.listdir(TEST_PATH) # print(dirs) test_df = get_data(cPath) print(test_df.head()) # test_df.to_csv(path_or_buf="test.csv",index=False)#保存為CSV文件
方法二 glob方法
#!/usr/bin/env python # coding=utf-8 import glob import time import csv import pandas as pd from tqdm import tqdm # a new file #open all the CSV file #遍歷文件夾下所有csv文件 TEST_PATH = '.\August_data' csv_list = glob.glob(f'{TEST_PATH}\*.csv') print('共有%s個CSV文件'% len(csv_list)) # print (csv_list) def get_data(): df_list = [] for csv_file in csv_list: df = pd.read_csv(csv_file) df_list.append(df) df = pd.concat(df_list) print("Loading Oer") return df get_data()
總結(jié)
到此這篇關(guān)于利用python合并csv文件的文章就介紹到這了,更多相關(guān)python合并csv文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)簡易計(jì)算器的示例代碼
Tkinter作為 Python GUI 開發(fā)工具之一,它具有 GUI 軟件包的必備的常用功能。本文就將利用Tkinter編寫簡易的計(jì)算器,感興趣的可以了解一下2022-11-11pytorch finetuning 自己的圖片進(jìn)行訓(xùn)練操作
這篇文章主要介紹了pytorch finetuning 自己的圖片進(jìn)行訓(xùn)練操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06matplotlib.subplot()畫子圖并共享y坐標(biāo)軸的方法
Matplotlib的可以把很多張圖畫到一個顯示界面,本文主要介紹matplotlib.subplot()畫子圖并共享y坐標(biāo)軸的方法,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05pyinstaller打包可執(zhí)行程序過程中的常見錯誤解決
這篇文章主要介紹了pyinstaller打包可執(zhí)行程序過程中的常見錯誤解決,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11如何利用Python統(tǒng)計(jì)正數(shù)和負(fù)數(shù)的個數(shù)
Python檢查數(shù)據(jù)中的正/負(fù)數(shù)是一種常見的數(shù)據(jù)處理操作,可以通過編寫代碼來實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于如何利用Python統(tǒng)計(jì)正數(shù)和負(fù)數(shù)的個數(shù)的相關(guān)資料,需要的朋友可以參考下2024-05-05在django中實(shí)現(xiàn)頁面倒數(shù)幾秒后自動跳轉(zhuǎn)的例子
今天小編就為大家分享一篇在django中實(shí)現(xiàn)頁面倒數(shù)幾秒后自動跳轉(zhuǎn)的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08如何使用 Pylint 來規(guī)范 Python 代碼風(fēng)格(來自IBM)
本文通過詳細(xì)的理論介紹和簡單易懂的實(shí)例全面介紹了 Python 代碼分析工具 Pylint。相信讀者看完后一定可以輕松地將 Pylint 運(yùn)用到自己的開發(fā)工程中2018-04-04