Visualisation des données avec Pandas PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Visualisation des données avec Pandas

Pandas nous a aidés jusqu'à présent dans la phase de prétraitement des données. Bien que, dans un cas, lors de la création d'histogrammes, nous ayons également utilisé un autre module de Pandas - plotting.

Nous avons délibérément évité jusqu'à présent, car l'introduire plus tôt soulèverait plus de questions qu'elle n'en résoudrait. À savoir, les pandas ainsi que le Matplotlib était un duo si commun et omniprésent que Pandas a commencé à intégrer les fonctionnalités de Matplotlib. Ce fortement s'appuie sur Matplotlib pour effectuer tout traçage réel, et vous trouverez de nombreuses fonctions Matplotlib encapsulées dans le code source. Vous pouvez également utiliser d'autres backends pour le traçage, tels que Plotly ainsi que le Bokeh.

Cependant, Pandas nous présente également quelques intrigues qui une partie des types de tracé standard de Matplotlib, tels que KDE, Courbes d'Andrews, Tracés bootstrap ainsi que le Matrices de dispersion.

La plot() fonction d'un Pandas DataFrame utilise le backend spécifié par plotting.backend, et selon le kind argument - génère un tracé à l'aide de la bibliothèque donnée. Étant donné que beaucoup de ces chevauchements - il est inutile de couvrir des types de parcelles tels que line, bar, hist ainsi que le scatter. Ils produiront à peu près les mêmes tracés avec le même code que nous avons fait jusqu'à présent avec Matplotlib.

Nous n'examinerons que brièvement les plot() fonction puisque le mécanisme sous-jacent a été exploré jusqu'ici. Concentrons-nous plutôt sur certaines des parcelles que nous ne peut pas déjà facilement avec Matplotlib.

Ce sera un chapitre très court, car les capacités de traçage et de visualisation de Pandas pâlissent par rapport à Matplotlib - mais il est toujours utile d'en connaître certains, ainsi que d'être conscient de la possibilité de tracer à partir de DataFrames directement.

La DataFrame.plot() Fonction

La plot() la fonction accepte x ainsi que le y fonctionnalités, et une kind argument. Alternativement, pour éviter les kind argument, vous pouvez également appeler DataFrame.plot.kind() à la place, et passer dans le x ainsi que le y caractéristiques.

Les valeurs acceptées pour le kind arguments sont : line, bar, barh (barre horizontale), hist, box, kde, density (synonyme de kde), area, pie, scatter ainsi que le hexbin (similaire à une Heatmap).

import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] df_eu.plot.bar(x = 'Year', y = 'Value')
df_eu.plot.line(x = 'Year', y = 'Value')
df_eu.plot.box(x='Value') plt.show()

Au lieu de fournir le Series instances comme nous le faisons pour Matplotlib - il suffit de fournir le noms de colonnes, et puisque vous appelez le plot() fonction sur le DataFrame vous visualisez, il est facile pour Pandas de mapper ces valeurs de chaîne aux noms de colonne appropriés.

Chacun de ces appels fait un nouveau Figure instance et trace les valeurs appropriées dessus :

Visualisation des données avec Pandas PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Pour tracer plusieurs axes sur le même Figure, vous pouvez faire un Figure et un ou plusieurs Axes via plt.subplots() et attribuer le bon Axes à la ax argumentation de chacun plot.plot_type() appel:

import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] fig, ax = plt.subplots(3, 1) df_eu.plot.box(x='Value', ax = ax[0])
df_eu.plot.line(x = 'Year', y = 'Value', ax = ax[1])
df_eu.plot.bar(x = 'Year', y = 'Value', rot = 45, ax = ax[2]) plt.show()

Certains des arguments standard, tels que le rotation argument sont en fait différents dans le plot() appels. Par example, rotation est raccourci à rot. Cela rend un peu difficile de il suffit de changer entre Matplotlib et Pandas, car vous vous retrouverez très probablement dans les pages de documentation, en vérifiant simplement quels arguments peuvent être appliqués et lesquels ne le peuvent pas.

Maintenant, au lieu de créer un nouveau Figure or Axes exemple, chacune de ces parcelles sera stationnée dans le Axes instances que nous leur avons fournies :

Visualisation des données avec Pandas PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

En général, tracer avec Pandas est pratique et rapide - mais même ainsi, pour tracer des diagrammes à barres, des diagrammes linéaires et des diagrammes en boîte, vous voudrez probablement utiliser Matplotlib. C'est à la fois le moteur sous-jacent que Pandas utilise inévitablement, et il a également plus d'options de personnalisation, et vous n'aurez pas à vous souvenir d'un nouvel ensemble d'arguments que vous pouvez utiliser avec les graphiques Pandas.

Cela étant dit, pour certaines parcelles, vous voudrez peut-être préférer Pandas, car ils devraient être créés manuellement dans Matplotlib, et certains d'entre eux sont si compliqués à réaliser que cela n'en vaut pas la peine, comme les lignes KDE.

Pandas traçage Module

Quoi DataFrames ont à offrir en termes de visualisation n'est pas trop nouveau pour nous. Cependant, le module sous-jacent qu'ils appellent, pandas.plotting Est-ce que. le plotting module a plusieurs fonctions que nous pouvons utiliser, telles que autocorrelation_plot(), bootstrap_plot()et une scatter_matrix().

Chacun d'eux accepte soit un Series ou DataFrame, selon le type de visualisation qu'ils produisent, ainsi que certains paramètres de spécification de tracé et de style.

Tracé bootstrap

Bootstrapping est le processus d'échantillonnage aléatoire (avec remplacement) d'un ensemble de données et de calcul des mesures de précision telles que biais, variance ainsi que le intervalles de confiance pour les échantillons aléatoires. "Avec remplacement", en termes pratiques, signifie que chaque élément sélectionné au hasard peut être sélectionné à nouveau. Sans remplacement signifie qu'après chaque élément sélectionné au hasard, il est retiré du pool pour l'échantillon suivant.

A Tracé bootstrap, créé par Pandas, amorce les statistiques moyennes, médianes et moyennes d'un ensemble de données, en fonction de l'échantillon size, après quoi le tracé est ensuite affiché via plt.show(). Les arguments par défaut pour size ainsi que le samples 50 ainsi que le 500 respectivement.

Cela signifie que pour une fonctionnalité, nous échantillonnons 50 valeurs. Ensuite, un sous-échantillon de 50 éléments est généré (données synthétiques) pour ces 50 valeurs et une statistique récapitulative (moyenne/médiane/moyenne) est calculée pour elles. Ce processus est répété 500 fois, donc au final, nous avons 500 statistiques récapitulatives :

import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('./datasets/gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] pd.plotting.bootstrap_plot(df_eu['Value']) plt.show()

Visualisation des données avec Pandas PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Tracé d'autocorrélation

Tracés d'autocorrélation sont utilisés pour vérifier le caractère aléatoire des données, pour les données de séries chronologiques. Plusieurs autocorrélations sont calculés pour différents horodatages, et si les données sont vraiment aléatoires, la corrélation sera proche de zéro. Sinon, la corrélation sera supérieure à zéro.

Traçons deux tracés d'autocorrélation - un avec notre Valeur fonctionnalité, et une avec une Series rempli de valeurs aléatoires :

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
# Filter DataFrame for the EU
df_eu = df.loc[df['Country Name'] == 'European Union']
# Generate 50 random integers between 0 and 100, and turn into a Series
random_series = pd.Series(np.random.randint(0, 100, size=50)) # Plot Autocorrelation Plot for the *Value* feature
pd.plotting.autocorrelation_plot(df_eu['Value'])
# Plot Autocorrelation Plot for the *random_series*
pd.plotting.autocorrelation_plot(random_series) plt.show()

Le diagramme d'autocorrélation pour le random_series devrait tourner autour 0, puisqu'il s'agit de données aléatoires, tandis que le tracé de la Value la fonctionnalité ne :

Visualisation des données avec Pandas PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Il convient de noter que l'autocorrélation mesure un formulaire du hasard, car des données non corrélées mais non aléatoires existent. S'il n'est pas aléatoire, mais qu'il n'y a pas de corrélations significatives, le tracé d'autocorrélation indique que les données sont aléatoires.

Matrices de dispersion

Matrices de dispersion tracer un grille de nuages ​​de points pour toutes les fonctionnalités par rapport à toutes les fonctionnalités. Étant donné que cela compare inévitablement chaque fonctionnalité avec elle-même - la diagonale où cela se produit est généralement remplacé par un Histogramme de cette fonctionnalité, plutôt qu'un nuage de points. Matrices de dispersion sont également connus comme Parcelles jumelées, et Seaborn offre un pairplot() fonction juste pour ça.

La scatter_matrix() fonction accepte un DataFrame et produit une matrice de dispersion pour toutes ses caractéristiques numériques, et renvoie un tableau 2D de Axes instances qui composent la matrice de dispersion. Pour modifier quoi que ce soit à leur sujet, vous voudrez les parcourir :

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('worldHappiness2019.csv') axes = pd.plotting.scatter_matrix(df, diagonal='hist') for ax in axes.flatten(): # Rotate back to 0 degrees since they're automatically rotated by 90 ax.yaxis.label.set_rotation(0) # As to not overlap with the Axes instances, set the ticklabel # alignment to 'right' ax.yaxis.label.set_ha('right') plt.show()

Cela se traduit par une matrice de dispersion assez grande de toutes les fonctionnalités par rapport à toutes les autres fonctionnalités :

Visualisation des données avec Pandas PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Vous pouvez également passer dans le diagonal argument, qui accepte 'hist' or 'kde' pour spécifier le type de diagramme de distribution que vous souhaitez tracer sur la diagonale, ainsi que alpha, spécifiant la translucidité des marqueurs dans les nuages ​​de points.

Horodatage:

Plus de Stackabuse