엑셀 파일이 생성되면 자동으로 파이썬 프로그램을 실행하여 엑셀 작업을 자동화하는 프로그램을 개발했습니다.
아랫글은 전 직장에서 코딩을 아예 모르는 동료를 위한 프로그램 설명입니다
1) import package 실행
- 해당 package파일을 import 시켜야 함수가 작동됨으로 먼저 1번째 코딩 항목을 실행 시키자
2) 엑셀 파일 주피터 노트북에 업로드
- 대중적으로 엑셀 파일을 업로드 할 시에는 pandas or openpyxl을 한다.(구글링시 제일 먼저 나오는 방법)
- 하지만 DRM이 걸린 회사의 엑셀 파일 환경 상 유니코드 문제 때문에 파일이 열리지 않으므로, xlwings를 사용해서 파일을 연다.
- xlwings으로만 파일을 열면 되고, 데이터 전처리나, 작업한 파일을 엑셀로 다운로드 할 때에는 pandas를 사용해도 괜찮다.
3) 칼럼생성 및 loc를 이용하기 위한 결측값 제거 혹은 칼럼명 수정 변경
4) loc를 이용한 nan값 채워 넣기
- loc를 이용해 SEG1부터 SEG7까지 채워 넣는다
- 마지막 SEG7 작업 시 비어있는 값을 NaN값으로 전체적으로 적용 하는 fillna 함수를 사용한다.
- 이 함수를 활용 해서 데이터 검증 방법은 마지막 SEG7에 있는 행들이 예측한 값이 나왔는지 확인한다.
5) SEG검증방법
-SEG를 나누는 기준은 칼럼 상품군 코드이다. SEG7의 상품군 코드 검색해서 SEG7에 해당하는 상품군코드가 맞는지 확인하고, 틀리다면 값 넣기 방법을 통해 검증 후 작업하자.
6) 피벗테이블
7) 이전 pickle 파일 불러오고, 병합하고 다시 pickle파일을 저장하기
- 월별 데이터 작업 시, 1일차에는 파일을 새로 생성해야함으로 False, 그 다음에는 True로 인자를 바꾸자.
- pickle은 1차 데이터 말고는 필요 없지만 연간 데이터를 쌓아올리거나 SQL작업할 때 유용하다.
- SQL과 PYTHON 연결 → PYTHON에 SQL 파일 업로드 → Python Pandas로 자료 전처리, 그리고 Pickle파일 저장
- Python을 Pandas를 활용해서 SQL 파일을 판다스로 먼저 1차 가공을 하고 Pickle파일을 저장 시켜놓으면 SQL 익스포트 시간도 줄이고, 업무의 효율성을 높일 수 있다.
8) 제일 중요!! 함수실행
- 함수 안에 들어 있는 인자가 4~5개 있을텐데, 인자에 맞는 문법을 사용하고 꼭 인자 사이에는,()를 써줘서 구분해야한다.
주의사항
- 로드할 파일, 저장할 파일 경로 입력 : ‘’사용, 파일 경로 바꿀 시에 \ -> / 무조건 변경한다.
- 조회일자는 파일명을 바꿀 때 같이 바꿔주자
- 파이썬으로 검증된 엑셀 파일을 참고하여 새로운 엑셀 파일을 전처리한 후, 해당 파일을 파이썬에 업로드하면 기존의 검증된 파일은 삭제해도 된다.
1.접수경로 1차에서 '@@'으로 분류된 건 중에 '!!', '##', '$$'이 있는지 확인합니다.
2.접수경로 2차에서 새로운 '@@' 접수경로가 추가되었는지 확인합니다.
df[’접수경로’].unique()
df.loc[(df[’접수경로’] == ‘A사’), “접수경로2차”] = “A사”
'A' 열의 값이 'B'인 행에서 'C' 열에 'D' 값을 할당하려면 다음 코드를 사용합니다.
df.loc[(df[’A’] ==’B’), “C”] = “D”
'A' 열의 값이 'B'이거나 'C'인 행에서 'D' 열에 'E' 값을 할당
df.loc[df[’A’] == ‘B’)&(df[’C’]==’D’)), “E”] = “F”
엑셀 내장 if 함수를 파이썬에서 구현하기(이분법적 값 나누기)
- 데이터프레임의 'A' 열에서 값이 "B"인 경우 "C"로 변경하고, 그 외의 경우에는 원래 값을 유지합니다.
df[’A’] =np.where(df[’A’] == “B”,”C”, df[’A’])
기본적인 값 넣기
- 데이터프레임에 새로운 열 'A'를 추가하고 NaN(값이 없음) 값을 할당합니다.
df[’A’] =np.nan
2.데이터프레임의 'A' 열에서 NaN 값을 모두 'B'로 대체합니다, 칼럼 추가 시 사용
df[’A’] =df[’A’].fillna(”B”)
3.데이터프레임의 'A' 열의 모든 값을 'b'로 변경합니다, 조회일자 넣을 때 사용
df[’A’] = ‘b’