Façons de créer des graphiques à barres à l'aide de Python

Au cours de la dernière année, j'ai été confronté à la nécessité de dessiner des histogrammes et des graphiques à barres assez souvent pour me donner envie et pouvoir écrire à ce sujet. De plus, je manquais moi-même à peu près de telles informations. Cet article fournit une vue d'ensemble de 3 méthodes pour créer de tels graphiques en Python.

Pour commencer, je ne le savais pas depuis très longtemps à cause de mon inexpérience: les graphiques à barres et les histogrammes sont deux choses différentes. La principale différence est que l'histogramme montre la distribution de fréquence - nous spécifions un ensemble de valeurs pour l'axe Ox, et la fréquence est toujours tracée sur Oy. Dans le graphique à barres (qu'il serait approprié d'appeler barplot dans la littérature anglaise), nous spécifions à la fois l'axe des abscisses et l'axe des ordonnées.

Pour la démonstration, j'utiliserai le jeu de données de la bibliothèque beatik scikit learn Iris. Commençons par les importations:

import pandas as pd import numpy as np import matplotlib import matplotlib.pyplot as plt from sklearn import datasets iris = datasets.load_iris() 

Nous transformerons l'ensemble de données iris en une trame de données - il nous sera donc plus pratique de travailler avec lui à l'avenir.

 data = pd.DataFrame(data= np.c_[iris['data'], iris['target']], columns= iris['feature_names'] + ['target']) 

Parmi les paramètres qui nous intéressent, les données contiennent des informations sur la longueur des sépales et des pétales et la largeur des sépales et des pétales.

Utilisation de Matplotlib
Histogramme
Construisons un histogramme régulier montrant la distribution de fréquence des longueurs des pétales et des sépales:

 fig, axs = plt.subplots(1, 2) n_bins = len(data) axs[0].hist(data['sepal length (cm)'], bins=n_bins) axs[0].set_title('sepal length') axs[1].hist(data['petal length (cm)'], bins=n_bins) axs[1].set_title('petal length') 

image

Construire un graphique à barres

Nous utilisons des méthodes matplotlib pour comparer la largeur des feuilles et des sépales. Cela semble plus pratique à faire sur un seul graphique:

 x = np.arange(len(data[:50])) width = 0.35 

Par exemple, et afin de simplifier l'image, prenez les 50 premières lignes de la trame de données.

 fig, ax = plt.subplots(figsize=(40,5)) rects1 = ax.bar(x - width/2, data['sepal width (cm)'][:50], width, label='sepal width') rects2 = ax.bar(x + width/2, data['petal width (cm)'][:50], width, label='petal width') ax.set_ylabel('cm') ax.set_xticks(x) ax.legend() 

image

Utiliser des méthodes marines

À mon avis, de nombreuses tâches pour la construction d'histogrammes sont plus faciles et plus efficaces à effectuer en utilisant des méthodes seaborn (en outre, seaborn gagne également avec ses capacités graphiques, à mon avis) .

Je vais donner un exemple de tâches résolues dans seaborn avec une seule ligne de code. En particulier, Seaborn gagne quand vous devez créer une distribution. Disons que nous devons construire une distribution de longueur sépale. La solution à ce problème est la suivante:

 sns_plot = sns.distplot(data['sepal width (cm)']) fig = sns_plot.get_figure() 

image

Si vous n'avez besoin que d'un calendrier de distribution, vous pouvez le faire comme ceci:

 snsplot = sns.kdeplot(data['sepal width (cm)'], shade=True) fig = snsplot.get_figure() 

image

En savoir plus sur la construction de distributions à Seaborn ici.

Graphiques Pandas Bar

Ici, tout est simple. En fait, c'est le shell de matplotlib.pyplot.hist (), mais appeler une fonction via pd.hist () est parfois plus pratique que les constructions moins agiles de matplotlib-a. Vous pouvez en lire plus dans la documentation de la bibliothèque pandas.

Cela fonctionne comme ceci:

 h = data['petal width (cm)'].hist() fig = h.get_figure() 

image

Merci d'avoir lu jusqu'au bout! Je serai ravi de revoir et de commenter!

Source: https://habr.com/ru/post/fr470535/


All Articles