Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menghiris DataFrame Panda Besar dengan Cekap kepada Potongan dengan AcctName?
Dalam analisis data, bekerja dengan bingkai data yang besar selalunya boleh menyebabkan ralat memori. Untuk menangani perkara ini, membahagikan bingkai data kepada bahagian yang lebih kecil dan boleh diurus boleh menjadi strategi yang berharga. Artikel ini meneroka cara untuk menghiris bingkai data yang besar menjadi kepingan dengan cekap berdasarkan lajur tertentu, khususnya AcctName.
Anda boleh menggunakan pemahaman senarai untuk mencapai penghirisan ini:
<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>
Sebagai alternatif, anda boleh memanfaatkan fungsi array_split NumPy:
<code class="python">list_df = np.array_split(df, math.ceil(len(df) / n))</code>
Pendekatan ini mencipta senarai ketulan, yang boleh anda akses secara individu.
Untuk memasang semula rangka data asal, hanya gunakan pd.concat:
<code class="python">rejoined_df = pd.concat(list_df)</code>
Dengan menggunakan teknik ini, anda boleh memotong bingkai data yang besar anda menjadi kepingan yang lebih kecil dengan berkesan, menggunakan transformasi yang diperlukan dan kemudian menyusun semula data yang terhasil menjadi satu bingkai data. Pendekatan ini boleh mengurangkan penggunaan memori dengan ketara dan meningkatkan kecekapan operasi pemprosesan data anda.
Atas ialah kandungan terperinci Bagaimana untuk Menghiris DataFrame Panda Besar dengan Cekap kepada Potongan dengan AcctName?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!