본문 바로가기

챗GPT 활용/챗GPT를 활용한 파이썬 코딩

[파이썬+챗GPT] 데이터프레임 합치기를 위한 코드 간결화

여러개의 데이터프레임 합치기

 

인터넷 쇼핑몰

스마트스토어, 쿠팡, 11번가, 지마켓, 옥션에서 신규주문이 있을 경우

신규주문을 엑셀파일로 다운로드 받아

각각의 쇼핑몰 엑셀파일을 데이터 프레임으로 만들어 데이터프레임을 합칠려고 하는데,

조건문이 너무 많아 기존의 코드를 좀 줄여 보려고 합니다.

 

각각의 쇼핑몰 원본데이터의 데이터프레임 합치기
# 데이터프레임이 담길 리스트 초기화
df_list = []

# 생성된 데이터프레임을 리스트에 추가
if 'df_ss_1' in locals():
    df_list.append(df_ss_1)
if 'df_cp_1' in locals():
    df_list.append(df_cp_1)
if 'df_ts_1' in locals():
    df_list.append(df_ts_1)
if 'df_11_1' in locals():
    df_list.append(df_11_1)
if 'df_os_1' in locals():
    df_list.append(df_os_1)
if 'df_gm_1' in locals():
    df_list.append(df_gm_1)

# 데이터프레임 합치기
df_all = pd.concat(df_list)

원래 코드는 여러개(쇼핑몰별 일일주문)의 데이터프레임을 생성하고, 이들을 리스트에 추가한 다음 pd.concat() 함수를 사용하여 모든 데이터프레임을 합치는 작업을 수행하는 코드입니다.

먼저, 빈 리스트 df_list를 만듭니다. 이후 if 문을 사용하여 로컬 네임스페이스에서 각 데이터프레임 변수를 찾습니다. if 문은 해당 변수가 로컬 네임스페이스에 있는지 확인한 후, df_list 리스트에 추가합니다. 이러한 작업은 모든 데이터프레임 변수에 대해 반복됩니다.

마지막으로, pd.concat() 함수를 사용하여 df_list 리스트에 있는 모든 데이터프레임을 합칩니다. 합쳐진 데이터프레임은 df_all 변수에 저장됩니다.

 


 

데이터프레임 합치기를 위한 코드 간결화
# 데이터프레임이 담길 리스트 초기화
df_list = [df for var in ['df_ss_1', 'df_cp_1', 'df_ts_1', 'df_11_1', 'df_os_1', 'df_gm_1'] if var in locals()]

# 데이터프레임 합치기
df_all = pd.concat(df_list)

 

이 코드는 locals() 함수를 사용하여 로컬 네임스페이스에서 변수 이름을 가져옵니다. 

그런 다음 이름이 'df_'로 시작하고 ' _1'로 끝나는 변수들만 가져오고, 가져온 데이터프레임들을 리스트에 추가합니다. 

마지막으로, pd.concat() 함수를 사용하여 리스트에 있는 모든 데이터프레임을 연결하여 df_all 변수에 저장합니다.

 

 


 

locals() 함수는 

현재 로컬 스코프(함수나 메소드 내부)에서 정의된 변수들의 이름과 값을 딕셔너리 형태로 반환하는 파이썬 내장 함수.

locals() 함수는 파이썬 내장 함수 중 하나로, 현재 로컬 스코프(지역 네임스페이스)에 있는 모든 이름-값 쌍을 딕셔너리 형태로 반환합니다. 즉, 현재 함수나 모듈에서 정의된 변수들을 모두 가져올 수 있습니다.

locals() 함수는 전역 스코프와 내부 함수에서는 사용할 수 없습니다. 이러한 경우에는 globals() 함수를 사용하여 전역 네임스페이스에서 변수들을 가져올 수 있습니다.

예를 들어, 다음 코드는 현재 스코프에서 정의된 변수를 딕셔너리 형태로 출력합니다.

 

local() 함수
def example_func():
    a = 1
    b = 2
    print(locals())
    
example_func()
# 출력: {'a': 1, 'b': 2}

 

반응형