Coding Challenge/오늘의 코드
판다스로 여러개의 csv파일 수정하기
인생마린
2020. 9. 10. 19:49
반응형
먼저 임시 파일 몇개를 만들어보자!
이처럼 number를 컬럼명으로하여 만들어 주자 나같은 경우는 tree가 이렇다
지정 폴더 아래 파일들 위치를 찾아준다
os.walk를 이용하여 files폴더 아래에 있는 모든 파일을 읽어들여 준다!
endswith은 파일의 확장자를 반환한다. 튜플 형태로 여러개의 확장자를 전달 가능하다.
import os
path = "files\\"
# os.listdir(path) 특정 폴더만 하는 경우
for root, dirs, files in os.walk(path): # 해당 폴더 아래 있는 모든 파일 탐색
for file in files:
if file.endswith((".csv", ".xlsx")): # 찾는 확장자
print(os.path.join(root, file))
이제 해당 파일들을 dataframe으로 읽어들여와보자.
csv파일일경우와 xlsx일 경우 읽어오는 메소드가 다르므로 구분해주자.
read_excel메소드를 사용하기 위해서는 pip install xlrd
가 되어있어야 함에 유의하자
import os
import pandas as pd
path = "files\\"
filenames = []
# os.listdir(path) 특정 폴더만 하는 경우
for root, dirs, files in os.walk(path): # 해당 폴더 아래 있는 모든 파일 탐색
for file in files:
if file.endswith((".csv", ".xlsx")): # 찾는 확장자
filenames.append(os.path.join(root, file))
for file in filenames:
if file.split(".")[-1] == "xlsx":
df = pd.read_excel(file, sheet_name="Sheet1") # pip install xlrd
else:
df = pd.read_csv(file)
print(file)
print(df.head())
파일을 수정하고 저장해주자
import os
import pandas as pd
path = "files\\"
filenames = []
# os.listdir(path) 특정 폴더만 하는 경우
for root, dirs, files in os.walk(path): # 해당 폴더 아래 있는 모든 파일 탐색
for file in files:
if file.endswith((".csv", ".xlsx")): # 찾는 확장자
filenames.append(os.path.join(root, file))
for file in filenames:
if file.split(".")[-1] == "xlsx":
df = pd.read_excel(file, sheet_name="Sheet1") # pip install xlrd
else:
df = pd.read_csv(file)
for i in df.index:
df.at[i, 'number'] += 1
print(file)
print(df.head())
# save file from dataframe
if file.split(".")[-1] == "xlsx":
df.to_excel(file, sheet_name="Sheet1", index=False)
else:
df.to_csv(file, index=False)
실행시 모든 파일의 각 number row에 숫자가 1씩 증가한걸 확인 할수 있다.
반응형