14 votes

Quand utiliser les séries pandas, les ndarrays numpy ou simplement les dictionnaires python ?

Je suis novice dans l'apprentissage de Python et de certaines de ses bibliothèques (numpy, pandas).

J'ai trouvé beaucoup de documentation sur comment Les ndarrays numpy, les séries pandas et les dictionnaires python fonctionnent.

Mais en raison de mon manque d'expérience avec Python, j'ai eu beaucoup de mal à déterminer les éléments nécessaires à la mise en œuvre du projet. quand d'utiliser chacun d'entre eux. Et je n'ai pas trouvé de meilleures pratiques qui m'aideraient à comprendre et à décider quand il est préférable d'utiliser chaque type de structure de données.

D'une manière générale, existe-t-il des bonnes pratiques pour décider dans laquelle de ces trois structures de données, le cas échéant, un ensemble de données spécifique doit être chargé ?

Merci !

22voto

Xukrao Points 1732

La règle empirique que j'applique habituellement : utiliser la structure de données la plus simple qui réponde à vos besoins . Si nous classons les structures de données de la plus simple à la moins simple, le résultat est généralement le suivant :

  1. Dictionnaires / listes
  2. Tableaux Numpy
  3. Séries de pandas / dataframes

Considérez donc d'abord les dictionnaires et les listes. Si ceux-ci vous permettent d'effectuer toutes les opérations sur les données dont vous avez besoin, tout va bien. Si ce n'est pas le cas, commencez à considérer les tableaux numpy. Voici quelques raisons typiques de passer aux tableaux numpy :

  • Vos données sont bidimensionnelles (ou plus). Bien que les dictionnaires/listes imbriqués puissent être utilisés pour représenter des données multidimensionnelles, dans la plupart des cas, les tableaux numpy seront plus efficaces.
  • Vous devez effectuer un certain nombre de calculs numériques. Comme l'a déjà souligné zhqiat Dans ce cas, numpy permet d'accélérer considérablement le processus. De plus, les tableaux numpy sont livrés avec une grande quantité de fonctions fonctions mathématiques .

Il existe également des raisons typiques de dépasser les tableaux numpy et de passer aux séries/dataframes pandas, plus complexes mais aussi plus puissants :

  • Vous devez fusionner plusieurs ensembles de données les uns avec les autres ou remodeler/réorganiser vos données. Ce diagramme donne une bonne vue d'ensemble de toutes les opérations de "manipulation de données" que pandas vous permet de faire.
  • Vous devez importer des données depuis ou exporter des données vers un format de fichier spécifique comme Excel, HDF5 ou SQL. Pandas est livré avec des les fonctions d'importation et d'exportation pour cela.

4voto

zhqiat Points 1477

Pandas est généralement utilisé pour les données de séries temporelles financières/économiques (il dispose de nombreuses aides intégrées pour traiter les données financières).

Numpy est un moyen rapide de manipuler de grands tableaux multidimensionnels pour le calcul scientifique (scipy aide aussi). Il permet également de gérer facilement ce que l'on appelle les tableaux épars (grands tableaux contenant très peu de données).

L'un des principaux avantages de numpy est la liaison avec le langage C, qui permet d'accélérer considérablement les calculs sur les grands tableaux, ainsi que certaines fonctions intégrées pour des choses telles que l'algèbre linéaire ou le traitement des signaux.

Les deux paquets répondent à certaines des déficiences identifiées avec les types de données intégrés existants dans Python. En règle générale, avec des données réelles incomplètes (NaN, valeurs aberrantes, etc.), vous aurez besoin d'écrire toutes sortes de fonctions pour résoudre ces problèmes ; avec les paquets ci-dessus, vous pouvez vous appuyer sur le travail des autres. Si votre programme génère les données pour votre type de données en interne, vous pouvez probablement utiliser les structures de données natives plus simplistes (pas seulement les dictionnaires python).

Voir le poste par l'auteur de Pandas pour une certaine comparaison

4voto

Si vous voulez une réponse qui vous dise de vous en tenir à un seul type de structures de données, en voici une : utiliser les structures pandas series/dataframe .

L'objet pandas series peut être vu comme un tableau numpy 1D amélioré et le pandas dataframe peut être vu comme un tableau numpy 2D amélioré. La principale différence est que les objets pandas series et pandas dataframes ont un index explicite, alors que les tableaux numpy ont une indexation implicite. Ainsi, dans n'importe quel code python où vous pensez utiliser quelque chose comme

import numpy as np
a = np.array([1,2,3])

vous pouvez simplement utiliser

import pandas as pd
a = pd.Series([1,2,3])

Toutes les fonctions et méthodes des tableaux numpy fonctionneront avec les séries pandas. Par analogie, la même chose peut être faite avec les dataframes et les tableaux 2D de numpy.

Une autre question que vous pourriez vous poser concerne les différences de performance entre un tableau numpy et une série pandas. Voici un billet qui montre les différences de performance en utilisant ces deux outils : performance des séries pandas par rapport aux tableaux numpy .

Notez que même de manière explicite, les séries pandas ont des performances subtilement inférieures à celles de numpy, vous pouvez résoudre ce problème en appelant simplement la méthode values sur une série pandas :

a.values

Le résultat de l'application de la méthode values sur une série pandas sera un tableau numpy !

0voto

CrazyElf Points 403

Numpy est très rapide avec les tableaux, les matrices et les mathématiques. Les séries Pandas ont des index, parfois c'est très utile pour trier ou joindre des données. Les dictionnaires sont une bête lente, mais ils sont parfois très pratiques. Ainsi, comme cela a déjà été mentionné, le type de données et les outils à utiliser dépendent du cas d'utilisation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X