>  기사  >  백엔드 개발  >  AcctName별로 대형 Pandas DataFrame을 청크로 효율적으로 분할하는 방법은 무엇입니까?

AcctName별로 대형 Pandas DataFrame을 청크로 효율적으로 분할하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-10-25 22:04:28362검색

How to Efficiently Slice a Large Pandas DataFrame into Chunks by AcctName?

Pandas - AcctName별로 큰 데이터 프레임을 청크로 분할

데이터 분석에서 큰 데이터 프레임으로 작업하면 종종 메모리 오류가 발생할 수 있습니다. 이 문제를 해결하려면 데이터프레임을 더 작고 관리 가능한 청크로 분할하는 것이 귀중한 전략이 될 수 있습니다. 이 문서에서는 특정 열, 특히 AcctName을 기반으로 대규모 데이터 프레임을 효율적으로 청크로 분할하는 방법을 살펴봅니다.

목록 이해를 사용하여 이 분할을 달성할 수 있습니다.

<code class="python">import numpy as np
import pandas as pd

# Define the chunk size
n = 200,000

# Create a list to store the chunks
list_df = []

# Extract unique AcctName values
AcctNames = df['AcctName'].unique()

# Create a dictionary of dataframes for each AcctName
DataFrameDict = {acct: pd.DataFrame for acct in AcctNames}

# Split the dataframe into chunks by AcctName
for acct in DataFrameDict.keys():
    DataFrameDict[acct] = df[df['AcctName'] == acct]
    
    # Apply your function to the chunk
    trans_times_2(DataFrameDict[acct])
    list_df.append(DataFrameDict[acct])
    
# Rejoin the chunks into a single dataframe
rejoined_df = pd.concat(list_df)</code>

또는 다음을 수행할 수 있습니다. NumPy의 array_split 함수 활용:

<code class="python">list_df = np.array_split(df, math.ceil(len(df) / n))</code>

이 접근 방식은 개별적으로 액세스할 수 있는 청크 목록을 생성합니다.

원래 데이터 프레임을 재조립하려면 pd.concat을 사용하면 됩니다.

<code class="python">rejoined_df = pd.concat(list_df)</code>

이러한 기술을 활용하면 대규모 데이터 프레임을 작은 청크로 효과적으로 분할하고 필요한 변환을 적용한 다음 결과 데이터를 단일 데이터 프레임으로 재조립할 수 있습니다. 이 접근 방식을 사용하면 메모리 사용량을 크게 줄이고 데이터 처리 작업의 효율성을 높일 수 있습니다.

위 내용은 AcctName별로 대형 Pandas DataFrame을 청크로 효율적으로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.