[Sql분석] 반복업무 줄이기

김보림·2024년 6월 27일

SQL 분석

목록 보기
2/33

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

os.getcwd() : 현재 파이썬이 작동하고 있는 경로를 알려줌

os.listdir('./1. market/data')

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

os.mkdir('./1. market/data_result') : 처리된 데이터가 저장될 경로

src = '/Users/jh/Documents/zerobase/1. market/data' dst = '/Users/jh/Documents/zerobase/1. market/data_result'

  • src : 처리할 데이터가 있는 경로
  • dst : 처리된 데이터가 저장될 경로
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 = pd.melt(df, 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')
profile
볼로그

0개의 댓글