<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本篇的檔案合併主要是針對.csv
的檔案合併。
首先,要查詢目錄底下的檔案要匯入OS。並且我們要將.csv檔案以pandas的dataframe底下,因此要匯入PANDAS,另外由於我們要遍歷目錄,因此匯入 GLOB:
import os import pandas as pd import glob
注:
import os
的作用:在python環境下對檔案,資料夾執行操作的一個模組。
os.name返回當前系統 os.getcwd()返回當前的路徑 os.remove(路徑)刪除路徑下的檔案
import glob
的作用: glob是python自帶的一個操作檔案的相關模組,由於模組功能比較少,所以很容易掌握。用它可以查詢符合特定規則的檔案路徑名。使用該模組查詢檔案,只需要用到: “*”, “?”, “[]”這三個匹配符;
」*」匹配0個或多個字元; 」?」匹配單個字元; 」[]」匹配指定範圍內的字元,如:[0-9]匹配數位。
f1=open('../input/covid19temp/2020/12-30-2020.csv').read() f2=open('../input/covid19temp/2020/12-31-2020.csv').read() with open('f1112.csv','a+') as f: f.write('n'+f1) f.write('n'+f2)
合併完成之後就會多出一個f1112.csv檔案:
然而開啟f1112.csv後發現合併後的檔案有一些髒資料沒有整理:
這時候我們試試skiprows
:
在讀取檔案的時候設定skiprows
引數的值,設定為1,會跳過一行,這裡是要將第二個檔案的索引屬性給去掉,因為已經和第一個檔案合併了,而第一個檔案有索引屬性了。
f1=pd.read_csv('../input/covid19temp/2020/12-30-2020.csv') f2=pd.read_csv('../input/covid19temp/2020/12-31-2020.csv',skiprows=1) f1112=f1.append(f2)
f1112.to_csv('f1112.csv') # 匯出該檔案
在本地目錄中開啟該檔案:
csv_list=glob.glob('../input/covid19temp/2020/*.csv') # 如果不加上*的話拿到的就是目錄的名稱,如果加上*,拿到的就是完整的目錄資料 print(csv_list)
for i in csv_list: fr=open(i,'r').read() with open('2020csvdata.csv','a') as f: f.write(fr) f.close() print('資料檔案合併完成!')
csv_list=glob.glob('../input/covid19temp/2020/*') for i in csv_list: fr=open(i,'rb').read() with open('2020csvdata2.csv','ab') as f: f.write(fr) f.close() print('資料檔案合併完成!')
csv_list=glob.glob('../input/covid19temp/2020/*') csvdatadf=pd.DataFrame() for i in csv_list: csvdata=pd.read_csv(i) csvdatadf=csvdatadf.append(csvdata) print('資料檔案合併完成!')
合併之後使用pd.read_csv讀取檔案資料,一共有20W+的疫情資料記錄:
import os import pandas as pd import glob import openpyxl import numpy as np path='../input/covid19temp' # 寫的路徑 csv_lists=[] # 該列表的作用 # 是否更新目錄判斷: if os.path.isdir(path): #使用os.path.isdir判斷path是否是路徑 if not path.endswith("/"):# 如果該路徑的最後沒有加上'/'的話,會幫忙加一個/ path+="/" print(path)
如上圖所示,路徑後面多了一個 ‘/’
,否則路徑會找不到
檔案操作:
os.listdir():
列出路徑下所有的檔案
os.path.join():
連線檔案的作用
os.path.isdir():
判斷是否是資料夾
import os import pandas as pd import glob import openpyxl import numpy as np path='../input/covid19temp' # 寫的路徑 csv_lists=[] # 該列表的作用 # 是否更新目錄判斷: if os.path.isdir(path): #使用os.path.isdir判斷path是否是路徑 if not path.endswith("/"):# 如果該路徑的最後沒有加上'/'的話,會幫忙加一個/ path+="/" print(path) for each in os.listdir(path):# os.listdir(): 列出路徑下所有的檔案 print(each)
import os import pandas as pd import glob import openpyxl import numpy as np path='../input/covid19temp' # 寫的路徑 csv_lists=[] # 該列表的作用 # 是否更新目錄判斷: if os.path.isdir(path): #使用os.path.isdir判斷path是否是路徑 if not path.endswith("/"):# 如果該路徑的最後沒有加上'/'的話,會幫忙加一個/ path+="/" print(path) for each in os.listdir(path):# os.listdir(): 列出路徑下所有的檔案 print(each) sub_path=path+each path_list=[] if os.path.isdir(sub_path): path_list.append(sub_path) csv_lists.append(path_list) # 生成主目錄下路徑列表(非檔案) # 根據路徑進行路徑下檔案列表的生成 csvlists=[] for i in range(len(csv_lists)): # print(i) csvlists.append(glob.glob(csv_lists[i][0]+'/*.csv')) csvlists # 獲取每年的檔案路徑 csvfilelist=[] for j in range(len(csvlists)): for k in csvlists[j]: csvfilelist.append(k) csvfilelist csvdatadf=pd.DataFrame() for m in csvfilelist: filesize=os.path.getsize(m) if filesize>0: csvdata=pd.read_csv(m) csvdatadf=csvdatadf.append(csvdata) else: continue print('資料合併完成')
import os import pandas as pd def mergeFiles(parent,path="",pathdeep=0): fileAbsPath=os.path.join(parent,path) if os.path.isdir(fileAbsPath)==True: if (pathdeep!=0 and('.ipynb_checkpoints' not in str(fileAbsPath))): print('=='+path) for filename2 in os.listdir(fileAbsPath): mergeFiles(fileAbsPath,filename2,pathdeep=pathdeep+1) else: print(path) path=input("請輸入需要的檔案注主目錄:") mergeFiles(path)
到此這篇關於Python實現本地csv檔案合併的文章就介紹到這了,更多相關Python csv檔案合併內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45