web-dev-qa-db-fra.com

Utiliser Counter () dans Python pour construire l'histogramme?

J'ai vu sur une autre question que je pouvais utiliser Counter() pour compter le nombre d'occurrences dans un ensemble de chaînes. Donc, si j'ai ['A','B','A','C','A','A'], J'obtiens Counter({'A':3,'B':1,'C':1}). Mais maintenant, comment puis-je utiliser ces informations pour construire un histogramme par exemple?

48
marc

Pour vos données, il est probablement préférable d'utiliser un graphique à barres au lieu d'un histogramme. Découvrez ce code:

from collections import Counter
import numpy as np
import matplotlib.pyplot as plt


labels, values = Zip(*Counter(['A','B','A','C','A','A']).items())

indexes = np.arange(len(labels))
width = 1

plt.bar(indexes, values, width)
plt.xticks(indexes + width * 0.5, labels)
plt.show()

Résultat: enter image description here

61
Igonato

Vous pouvez écrire du code très concis pour ce faire en utilisant pandas :

In [24]: import numpy as np

In [25]: from pandas import Series

In [27]: sample = np.random.choice(['a', 'b'], size=10)

In [28]: s = Series(sample)

In [29]: s
Out[29]:
0    a
1    b
2    b
3    b
4    a
5    b
6    b
7    b
8    b
9    a
dtype: object

In [30]: vc = s.value_counts()

In [31]: vc
Out[31]:
b    7
a    3
dtype: int64

In [32]: vc = vc.sort_index()

In [33]: vc
Out[33]:
a    3
b    7
dtype: int64

In [34]: vc.plot(kind='bar')

Résultant en:

enter image description here

15
Phillip Cloud