Maison >développement back-end >Tutoriel Python >Quel est le moyen le plus rapide de réaliser un produit cartésien (CROSS JOIN) avec Pandas DataFrames ?
Produit cartésien performant (CROSS JOIN) avec Pandas
Introduction
Calcul du produit cartésien , également connu sous le nom de CROSS JOIN, de deux ou plusieurs DataFrames peut être une opération cruciale dans l'analyse des données. Cependant, trouver la méthode la plus performante pour calculer ce résultat peut s’avérer difficile. Cet article explorera diverses techniques et fournira une comparaison des performances pour déterminer la solution optimale.
Méthodes
1. JOIN plusieurs à plusieurs avec colonne « clé » temporaire :
L'approche la plus simple consiste à attribuer une colonne « clé » temporaire aux deux DataFrames avec la même valeur (par exemple, 1) et à effectuer une plusieurs à plusieurs JOIN sur la colonne "clé" en utilisant la fusion. Cependant, cette méthode peut avoir des limitations de performances pour les grands DataFrames.
2. Produit cartésien NumPy :
NumPy propose des implémentations efficaces de produits cartésiens 1D. Plusieurs de ces implémentations peuvent être utilisées pour créer une solution produit cartésienne performante pour DataFrames. Un exemple notable est la mise en œuvre de @senderle.
3. Produit cartésien sur indices non mixtes :
Cette méthode se généralise pour travailler sur des DataFrames avec tout type de type scalaire. Il s'agit de calculer le produit cartésien des indices numériques des DataFrames et de l'utiliser pour réindexer les DataFrames.
4. Simplification supplémentaire pour deux DataFrames :
Lorsqu'il s'agit de seulement deux DataFrames, np.broadcast_arrays peut être utilisé pour obtenir des performances similaires à celles de la solution produit cartésienne NumPy.
Évaluation des performances
Des benchmarks sur des DataFrames synthétiques avec des indices uniques montrent que l'utilisation La fonction cartesian_product de @senderle permet d'obtenir les meilleures performances globales. Cependant, la fonction simplifiée cartesian_product_simplified offre presque le même niveau de performances lorsque vous travaillez avec seulement deux DataFrames.
Conclusion
La méthode optimale de calcul du produit cartésien des DataFrames dépend sur divers facteurs, y compris la taille et le type de données et si les indices ont des types mixtes ou sont uniques. Sur la base des tests de performances, l'utilisation de la fonction cartesian_product de @senderle est recommandée pour obtenir les meilleures performances, en particulier pour les grands DataFrames ou lorsque vous travaillez avec plusieurs DataFrames. Pour les cas impliquant seulement deux DataFrames avec des types scalaires non mixtes, la fonction simplifiée cartesian_product_simplified offre d'excellentes performances.
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!