인생마린
어떤 공부 블로거의 금서목록
인생마린
전체 방문자
오늘
어제
  • 전체 (155)
    • C언어 (19)
    • Python (14)
      • Flask (0)
    • Coding Challenge (11)
      • Code Clone & Review (0)
      • Toy Project (0)
      • 오늘의 코드 (5)
    • Algorithm (6)
    • JAVA (8)
    • 웹 (8)
      • Javascript (3)
    • 정보보안 (19)
    • 기타 (21)
    • 일기는일기장에 (2)
    • 리눅스 (4)
    • 철학 (1)
    • 주식 (14)
    • AI (2)
    • 독후감 (13)
    • 프로그래밍 (4)
    • 게임 (1)
    • Devops (2)
      • CI_CD (2)
      • AWS (0)
    • Flutter (3)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • Flutter
  • 테라
  • Regular Expression
  • 해커톤
  • best of best
  • Regex
  • 비트코인
  • 폭락
  • vpn
  • 정규표현식
  • 불편한사회
  • Java
  • 백테스팅
  • 코인
  • Bitcoin
  • 주린이 #주식
  • 카카오톡봇
  • 주식 #ETF
  • 가상화폐
  • 주식 #배당주
  • Sphinx
  • smtplib
  • flask
  • 퀴즈봇
  • TFT
  • c언어
  • python #eval #dictionary
  • 우영우 #패러디논란
  • Python
  • turtle

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
인생마린

어떤 공부 블로거의 금서목록

판다스로 여러개의 csv파일 수정하기
Coding Challenge/오늘의 코드

판다스로 여러개의 csv파일 수정하기

2020. 9. 10. 19:49
반응형

먼저 임시 파일 몇개를 만들어보자!

number.xlsx
1.csv

이처럼 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씩 증가한걸 확인 할수 있다.

1씩 증가

반응형
저작자표시 비영리 (새창열림)

'Coding Challenge > 오늘의 코드' 카테고리의 다른 글

html canvas로 별찍기  (0) 2020.09.21
파이썬에서 조건문을 사용하기 위한 and, or 이해하기  (0) 2020.09.15
파이썬 문자열(str)을 이용해 변수(variable)값 출력하기  (0) 2020.09.13
pyqt 창끼리 데이터 전달  (1) 2020.09.12
    'Coding Challenge/오늘의 코드' 카테고리의 다른 글
    • html canvas로 별찍기
    • 파이썬에서 조건문을 사용하기 위한 and, or 이해하기
    • 파이썬 문자열(str)을 이용해 변수(variable)값 출력하기
    • pyqt 창끼리 데이터 전달
    인생마린
    인생마린
    즐거운 프로그래밍~♬

    티스토리툴바