[Ch1] 단순반복업무 줄이기

jayce·2024년 7월 1일

처리해야 할 파일이 너무 많으면?


운영체제와 상호작용할 수 있는 파이썬 라이브러리!

import os

현재 파이썬이 작동하고 있는 경로

os.getcwd()

처리해야 할 데이터가 있는 파일들이 있는 경로를 넣어서 list로 나타내주기

os.listdir('./data')

폴더 만들기

os.mkdir('./data_result')

경로 설정

#source (처리할 데이터가 있는 경로)
src = '/content/drive/MyDrive/zerobase_sql분석/Chapter 1. 공공 데이터를 통한 시장 동향 이해/data'

#destination (처리된 데이터가 저장될 경로)
dst =  '/content/drive/MyDrive/zerobase_sql분석/Chapter 1. 공공 데이터를 통한 시장 동향 이해/data_result'

반복처리하기

for f in file_ls :
    print(f'{f}를 처리하고 있습니다')
    # 한글 인코딩
    df = pd.read_csv(os.path.join(src, f), encoding = 'cp949')

    # melting

    cate_cols = list(df.columns[:3])
    result = df.melt(id_vars = cate_cols
                     , var_name = 'date'
                     , value_name = 'sales')

    #함수 적용
    result["sales"] = result["sales"].apply(strtoint)
    #합계빼기
    result = result[result[result.columns[0]] != "합계"]
    #중간집계빼기
    result = result[result[result.columns[2]] != '계']
    #가전,전자 / 통신기기 구분 빼기
    result = result[result[result.columns[1]] == '소계']
    #컬럼 삭제
    result = result.drop("상품군별(2)", axis = 'columns')

    # 추정치를 의미하는 'p)' 빼기
    result['date'] = result['date'].apply(lambda x : x.replace(" p)", ""))
    # 연도처리 쉽게 하도록 기호 바꾸기
    result['date'] = result['date'].apply(lambda x : x.replace(".", "/"))

    result.to_csv(os.path.join(dst, f), encoding = 'cp949', index = False)
    print(f'{f} 완료')
    

🚨 불러올 컬럼들을 이름이 아니라 인덱스로 적어주어야 오류가 나지 않음

os라이브러리 주요 메서드


# 현재 directory 반환하기
os.getcwd()

# 새로운 폴더 생성하기
os.mkdir("./1. market/test")

# 폴더, 파일 이름바꾸기
# 앞의 폴더를 뒤의 폴더명으로 바꾼다
os.rename("./1. market/test","./1. market/testtest" )

# 있는지 확인하기
os.path.exists("./1. market/test")


# 빈 폴더 삭제
os.rmdir("./1. market/testtest")

# 확장자 분리 > 파일 타입으로 분리해낼 수 있음!
os.path.splitext('/Users/jh/Documents/zerobase/1. market/data/1_온라인쇼핑몰 운영형태별 상품군별거래액.csv')

0개의 댓글