Câu hỏi Vẽ dữ liệu phân loại bằng gấu trúc và matplotlib


Tôi có một khung dữ liệu với dữ liệu phân loại:

     colour  direction
1    red     up
2    blue    up
3    green   down
4    red     left
5    red     right
6    yellow  down
7    blue    down

Tôi muốn tạo một số biểu đồ, như biểu đồ hình tròn và biểu đồ dựa trên các danh mục. Có thể không tạo các biến số giả không? Cái gì đó như

df.plot(kind='hist')

37
2018-06-24 14:37


gốc




Các câu trả lời:


Bạn chỉ có thể sử dụng value_counts trong chuỗi:

df['colour'].value_counts().plot(kind='bar')

enter image description here


76
2018-06-24 14:50



Đề xuất df["colour"].value_counts().plot(kind='bar') như thay thế phổ biến - openwonk
Có thể chỉ định thứ tự của các nhãn x không? - P. Camilleri


như thế này :

df.groupby('colour').size().plot(kind='bar')

14
2018-06-24 14:51





Bạn có thể thấy hữu ích mosaic cốt truyện từ mô hình thống kê. Mà cũng có thể cung cấp cho thống kê nổi bật cho các phương sai.

from statsmodels.graphics.mosaicplot import mosaic
plt.rcParams['font.size'] = 16.0
mosaic(df, ['direction', 'colour']);

enter image description here

Nhưng hãy cẩn thận với ô có kích thước 0 - chúng sẽ gây ra vấn đề với nhãn.

Xem câu trả lời này để biết chi tiết


12
2018-06-24 17:53



Cảm ơn. Tôi tiếp tục nhận được ValueError: Không thể chuyển đổi NA thành số nguyên trên nó. - Ivan
Đó là lý do tôi tham chiếu câu trả lời này. Nó sẽ giúp giải quyết vấn đề này. - Primer


Bạn cũng có thể sử dụng countplot từ seaborn. Gói này được xây dựng trên pandas để tạo ra một giao diện âm mưu cao cấp. Nó cung cấp cho bạn phong cách tốt và nhãn trục chính xác miễn phí.

import pandas as pd
import seaborn as sns
sns.set()

df = pd.DataFrame({'colour': ['red', 'blue', 'green', 'red', 'red', 'yellow', 'blue'],
                   'direction': ['up', 'up', 'down', 'left', 'right', 'down', 'down']})
sns.countplot(df['colour'], color='gray')

enter image description here

Nó cũng hỗ trợ tô màu các thanh màu phù hợp với một mẹo nhỏ

sns.countplot(df['colour'],
              palette={color: color for color in df['colour'].unique()})

enter image description here


3
2018-05-30 22:10