Maison  >  Article  >  développement back-end  >  Comment découper efficacement un grand DataFrame Pandas en morceaux par AcctName ?

Comment découper efficacement un grand DataFrame Pandas en morceaux par AcctName ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 22:04:28362parcourir

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

Pandas - Découpez une grande trame de données en morceaux par AcctName

Dans l'analyse de données, travailler avec de grandes trames de données peut souvent entraîner des erreurs de mémoire. Pour résoudre ce problème, diviser le dataframe en morceaux plus petits et gérables peut s’avérer une stratégie précieuse. Cet article explique comment découper efficacement une grande trame de données en morceaux en fonction d'une colonne spécifique, en particulier AcctName.

Vous pouvez utiliser la compréhension de liste pour réaliser ce découpage :

<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>

Vous pouvez également exploitez la fonction array_split de NumPy :

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

Cette approche crée une liste de morceaux, auxquels vous pouvez accéder individuellement.

Pour réassembler le dataframe d'origine, utilisez simplement pd.concat :

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

En utilisant ces techniques, vous pouvez découper efficacement votre grande trame de données en morceaux plus petits, appliquer les transformations nécessaires, puis réassembler les données résultantes en une seule trame de données. Cette approche peut réduire considérablement l'utilisation de la mémoire et améliorer l'efficacité de vos opérations de traitement de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn