Pandas

Language/Python

[python] 엑셀 파일 내 여러 시트에 저장하기 - pandas

오늘은 python을 이용하여 excel 여러 시트의 저장하는 방법을 알아보도록 하자. 시트별로 저장하는 기능은 pandas 라이브러리를 이용하면 쉽게 적용할 수 있다. 예제를 통해서 보면 간단하다. 하나의 엑셀 파일 내 여러 시트에 저장 import pandas as pd writer = pd.ExcelWriter(SAVE_DIR, engine='openpyxl') # SAVE_DIR: excel 파일을 저장하고자 하는 경로 # dfresult: 저장하고자 하는 데이터 dfresult1.to_excel(writer, sheet_name='dfresult1의 시트명') dfresult2.to_excel(writer, sheet_name='dfresult2의 시트명') dfresult3.to_excel(w..

Language/Python

[python] 엑셀파일 암호 해제하기

오늘은 암호가 걸려 있는 엑셀 파일을 파이썬으로 해제하는 방법에 대해 알아보자. 데이터는 보안에 굉장히 유의해야 하기 때문에 유출을 방지하고자 암호가 걸려 있는 경우가 많다. 엑셀 암호를 해제해도 되고 몇 개 없다면 직접 들어가 암호를 제거 해주겠지만.. 그렇지 않다면? 그리고 데이터 양이 많을 경우 엑셀 파일 한 개를 열고 닫는데도 시간이 꽤 걸린다:( import os import msoffcrypto import pandas as pd # 암호화된 엑셀 파일 경로 raw_path = '' # 해당 파일명 file = '' # 저장하고자 하는 엑셀 파일 경로 new_path = '' f = msoffcrypto.OfficeFile(open(os.path.join(raw_path, file)), 'rb..

Develop/TroubleShooting

sys:1: DtypeWarning: Columns (8) have mixed types.Specify dtype option on import or set low_memory=False.

situation pandas의 경우, z컬럼 타입을 동적 추론 하는데 많은 메모리가 소모된다. 따라서 왠만하면 타입을 정해주는 게 좋다. solution columns의 데이터 타입을 정해주거나 low_memory=False라는 파라미터를 추가하여 메모리를 덜 잡아 먹도록 해주라는 경고이다.

Language/Python

[python] 특정 조건의 행만 추출하기 - pandas

특정 조건의 행만 추출하기 특정 조건의 행만 추출하고 싶을 땐 apply라는 함수를 쓰면 된다. 특정 조건을 만드는 함수를 정의하고 해당 함수명을 넣어주는데 이 때 함수 return 값을 True, False가 되게끔 선언 해주면 True인 행들만 추출된다. 예시 코드 df = df[df['value'].apply(is_numeric)]

Language/Python

[python] merge_asof 사용하기 (범위 지정한 left join) - pandas

merge_asof 사용하기 pandas.merge_asof()는 시간을 몇만배로 단축시킬 수 있는 굉장히 유용한 함수이다. 홈페이지에 보면, This is similar to a left-join except that we match on nearest key rather than equal keys. Both DataFrames must be sorted by the key 라고 나와있는데 설명처럼 left join과 유사하다. 파라미터도 join과 비슷하게 left, right, on, left_on, right_on, by, suffixes, tolerance 등이 있다. 기본적인 파라미터는 직관적으로 이해할 수 있다고 하면 merge_asof만의 특징적인 파라미터는 아래와 같다. 1. suffi..

Language/Python

[python] 엑셀 여러 시트 한 번에 읽기 - pandas

엑셀의 여러 시트 한 번에 읽기 pandas로 엑셀을 읽을 때 default로는 첫번째 시트를 읽는다. 따라서 여러 시트를 한번에 읽고 싶을 때는 파라미터를 바꾸고 코드도 추가해야 한다. 예시 코드 df = pd.read_excel(path, sheet_name=None) df = pd.concat([value.assign(sheet_source=key) for key,value in df.items()], ignore_index=True) sheet_name 이라는 파라미터는 몇번째 시트를 읽을거냐 인데 따로 지정해주지 않으면 첫번째 시트를 읽기 때문에 전체를 읽어주기 위해선 None 으로 지정해줘야 한다. 그러나 이렇게 되면 데이터프레임 형태가 아닌 딕셔너리 형태가 되기 때문에 이를 concat 해줘..

향식이
'Pandas' 태그의 글 목록