データ分析では、大きなデータフレームを操作するとメモリ エラーが発生することがよくあります。これに対処するには、データフレームをより小さく管理しやすいチャンクに分割することが有益な戦略となる可能性があります。この記事では、特定の列、具体的には 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 中国語 Web サイトの他の関連記事を参照してください。