2012-10-31 46 views
9

OK vì vậy tôi có sáu giá trị có thể cho dữ liệu là '32', '22', '12', '31', '21' và '11'. Tôi có những lưu trữ như là chuỗi. Có thể cho python để sắp xếp thông qua các dữ liệu và chỉ cần thực hiện sáu thùng và hiển thị có bao nhiêu của mỗi tôi có? Hoặc làm các đầu vào cho một biểu đồ CÓ phải là số?Tạo biểu đồ các giá trị chuỗi trong python

+2

Có sự khác biệt giữa biểu đồ thanh và biểu đồ. Một đồ thị thanh là thích hợp ở đây, trong khi một biểu đồ thì không. –

+0

OK nhưng nếu tôi sử dụng biểu đồ thanh, tôi có phải sắp xếp theo cách thủ công thông qua từng phần dữ liệu để xác định danh mục nào trước khi vẽ không? Có cách nào để lấy nó cho tôi như biểu đồ không? –

+0

Ý bạn là gì "giống như biểu đồ"? Có một thư viện biểu đồ Python mà tôi không biết? –

Trả lời

15
data = ['32', '22', '12', '32', '22', '12', '31', '21', '11'] 
dict((x, data.count(x)) for x in data) 

quả

{'11': 1, '12': 2, '21': 1, '22': 2, '31': 1, '32': 2} 
+0

Cảm ơn, đã yêu cầu nó hoạt động ngay bây giờ. –

2
data = ['32', '22', '12', '32', '22', '12', '31', '21', '11'] 
sm = {i:0 for i in ['32', '22', '12', '31', '21','11']} 
for i in data: 
    sm[i] += 1 
print sm 

Một cái gì đó như thế này?

0

Giả sử data là một danh sách và bạn muốn đếm các số trong một thùng. Tôi sẽ sử dụng bins làm từ điển.

bin = {'11': 0, '12': 0, '21': 0, '22': 0, '31': 0, '32': 0} 

for element in data: 
    if element in bin: # Ignore other elements in data if any 
     bin[element] = bin[element] + 1 

bins từ điển sẽ có tần suất của mỗi phần tử trong danh sách dữ liệu. Bây giờ bạn có thể sử dụng bins để vẽ biểu đồ thanh bằng cách sử dụng thư viện biểu đồ đồ thị. Có thể bạn có thể sử dụng điều này post để kiểm tra việc sử dụng matplotlib để vẽ sơ đồ thanh.

+1

Đó không phải là rất Pythonic. –

+0

Có gì sai với nó? Tại sao nó không phải là pythonic? – useratuniv

+1

List comprehension là Pythonic, looping rõ ràng là không. –

6

Bạn có cân nhắc sử dụng collections.Counter không?

# python 2.7 
>>> l = ['32', '22', '12', '31', '21', '11', '32'] 
>>> import collections 
>>> collections.Counter(l) 
Counter({'32': 2, '11': 1, '12': 1, '21': 1, '22': 1, '31': 1}) 
+0

Cảm ơn, điều này có vẻ như nó sẽ siêu hữu ích nhưng đáng buồn là tôi dường như đang ở trên Python 2.6.6. –

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