web-dev-qa-db-fra.com

Comment tracer un graphique à barres d'une série de pandas?

Considérez ma série comme ci-dessous: la première colonne est article_id et la deuxième colonne est le nombre de fréquences.

article_id  
1         39 
2         49 
3        187 
4        159 
5        158 
        ...  
16947     14 
16948      7 
16976      2 
16977      1 
16978      1 
16980      1 

Name: article_id, dtype: int64

J'ai eu cette série d'un dataframe avec la commande suivante: 

logs.loc[logs['article_id'] <= 17029].groupby('article_id')['article_id'].count()

logs est ici le dataframe et article_id est l'une des colonnes qu'il contient.

Comment tracer un graphique à barres (à l'aide de Matlplotlib) tel que le paramètre article_id se trouve sur l'axe des X et le nombre de fréquences sur l'axe des Y? 

Mon instinct naturel était de le convertir en une liste en utilisant .tolist () mais cela ne préserve pas l'article_id.

9
Aashil

IIUC vous avez besoin Series.plot.bar :

#pandas 0.17.0 and above
s.plot.bar()
#pandas below 0.17.0
s.plot('bar')

Échantillon:

import pandas as pd
import matplotlib.pyplot as plt

s = pd.Series({16976: 2, 1: 39, 2: 49, 3: 187, 4: 159, 
               5: 158, 16947: 14, 16977: 1, 16948: 7, 16978: 1, 16980: 1},
               name='article_id')
print (s)
1         39
2         49
3        187
4        159
5        158
16947     14
16948      7
16976      2
16977      1
16978      1
16980      1
Name: article_id, dtype: int64


s.plot.bar()

plt.show()

 graph

14
jezrael

La nouvelle API pandas suggère les solutions suivantes: 

import pandas as pd

s = pd.Series({16976: 2, 1: 39, 2: 49, 3: 187, 4: 159, 
               5: 158, 16947: 14, 16977: 1, 16948: 7, 16978: 1, 16980: 1},
               name='article_id')

s.plot(kind="bar", figsize=(20,10))

Si vous travaillez sur Jupyter, vous n’avez pas besoin de la bibliothèque matplotlib.

2
Jinhua Wang

Utilisez simplement 'bar' dans le paramètre type de la parcelle

Exemple

series = read_csv('BwsCount.csv', header=0, parse_dates=[0], index_col=0, squeeze=True, date_parser=parser)
series.plot(kind='bar')

La valeur par défaut du type est 'line' (ie. Series.plot () -> tracera automatiquement le graphique linéaire)

Pour votre référence:

kind : str
        ‘line’ : line plot (default)
        ‘bar’ : vertical bar plot
        ‘barh’ : horizontal bar plot
        ‘hist’ : histogram
        ‘box’ : boxplot
        ‘kde’ : Kernel Density Estimation plot
        ‘density’ : same as ‘kde’
        ‘area’ : area plot
        ‘pie’ : pie plot
0
Archana