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

김지현·2024년 7월 8일

SQL 분석

목록 보기
2/40

단순 반복 업무 줄이기

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

  • os.getcwd() : 현재 파이썬이 실행되고 있는 경로 확인

  • os.listdir('./경로') : 경로 안에 있는 파일 리스트로 확인

    • os.listdir(') : 현재 경로에 있는 파일 확인
    • file_ls = os.listdir('./경로') : 경로 안에 있는 파일 리스트를 file_ls 변수에 저장
  • os.mkdir('경로+폴더명') : 경로에 새 폴더 생성

  • src : 처리할 데이터가 있는 경로

  • dst : 처리된 데이터를 저장할 경로

  • os.path.join(src, file_ls[0]) : 처리할 데이터가 있는 경로의 file_ls변수의 첫 파일명을 합쳐 경로 생성

반복 처리

  • 불러올 컬럼들을 각각의 이름이 아닌 인덱스로 적는 것이 오류 발생하지 않음
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 = '날짜', 
                     value_name = '거래액')

    # 함수 적용
    result["거래액"] = result["거래액"].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['날짜'] = result['날짜'].apply(lambda x : x.replace(" p)", ""))
    # 연도처리 쉽게 하도록 기호 바꾸기
    result['날짜'] = result['날짜'].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(".경로+폴더명")

# 폴더, 파일 이름바꾸기
# 앞의 폴더를 뒤의 폴더명으로 바꾼다
os.rename("경로+현재 폴더명", "경로+바꿀 폴더명" )

# 폴더 또는 파일이 있는지 확인
## 출력 결과 : True or False
os.path.exists(".경로+폴더명")

# 빈 폴더 삭제
os.rmdir(".경로+폴더명")

# 확장자 분리 > 파일 타입으로 분리해낼 수 있음
## 출력 결과 : '경로+파일명', '.csv'
os.path.splitext('경로+파일명.csv')

0개의 댓글