2013-10-05 16 views
25

Tôi thấy trên một câu hỏi khác mà tôi có thể sử dụng Counter() để đếm số lần xuất hiện trong một tập hợp các chuỗi. Vì vậy, nếu tôi có ['A','B','A','C','A','A'] tôi nhận được Counter({'A':3,'B':1,'C':1}). Nhưng bây giờ, làm thế nào tôi có thể sử dụng thông tin đó để xây dựng một biểu đồ chẳng hạn?Sử dụng Counter() trong Python để xây dựng biểu đồ?

+2

Nếu bạn muốn để xây dựng một biểu đồ Tôi đề nghị bạn sử dụng biểu đồ và matplotlib – jabaldonedo

+0

Hãy xem [matplotlib] (http://matplotlib.org/) –

+4

về mặt kỹ thuật, rằng * là * biểu đồ - nó có các thành phần (chữ cái) và tần số (lần chúng xảy ra). Bạn đang hỏi làm thế nào để làm cho điều này thành một đồ thị thanh? –

Trả lời

42

Đối với dữ liệu của bạn, tốt hơn nên sử dụng bảng mã thay vì biểu đồ. Kiểm tra mã này:

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() 

Kết quả: enter image description here

+0

Điều gì sẽ xảy ra nếu dữ liệu của OP phù hợp nhất với biểu đồ? Tôi biết đã đến muộn, nhưng tôi muốn cập nhật câu trả lời của bạn để áp dụng cho một ví dụ về biểu đồ (nhưng tôi không chắc chắn cách thực hiện nó). Điều đó sẽ trả lời tiêu đề cho câu hỏi. –

+0

@ThomasMatthew về mặt kỹ thuật, đó là biểu đồ. "barchart thay vì histogram" là đề cập đến việc sử dụng 'matplotlib.pyplot.bar' thay vì' matplotlib.pyplot.hist'. Tôi tin rằng 'bar' tốt hơn với' Counter' (đó là những gì OP muốn), đó là nó – Igonato

+0

Đây cũng là câu hỏi 3 năm cũ có thể đã thay đổi – Igonato

9

Bạn có thể viết một số mã thực sự súc tích để làm điều này bằng 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') 

Hệ quả là:

enter image description here

Các vấn đề liên quan