source

판다 및 매트플로트립을 사용하여 범주형 데이터 표시

manycodes 2023. 8. 24. 22:16
반응형

판다 및 매트플로트립을 사용하여 범주형 데이터 표시

범주형 데이터가 있는 데이터 프레임이 있습니다.

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

범주를 기반으로 파이 차트와 히스토그램과 같은 그래프를 생성하려고 합니다.더미 숫자 변수를 만들지 않고도 가능합니까?비슷한 것

df.plot(kind='hist')

간단히 사용할 수 있습니다.value_counts시리즈:

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

enter image description here

통계분석 모형에서 유용한 그림을 찾을 수 있습니다.분산에 대한 통계적 강조 표시도 제공할 수 있습니다.

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

enter image description here

하지만 0 크기의 셀을 주의하십시오. 셀은 라벨에 문제를 일으킬 수 있습니다.

자세한 내용은 이 답변을 참조하십시오.

이런 식으로:

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

사용할 수도 있습니다.countplot부터seaborn이 패키지는 다음을 기반으로 합니다.pandas높은 수준의 플롯 인터페이스를 만듭니다.좋은 스타일링과 올바른 축 라벨을 무료로 제공합니다.

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

또한 약간의 트릭으로 적절한 색상으로 바를 색칠하는 것을 지원합니다.

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

enter image description here

여러 범주형 피쳐를 동일한 그래프에 막대 차트로 표시하려면 다음을 제안합니다.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(
    {
        "colour": ["red", "blue", "green", "red", "red", "yellow", "blue"],
        "direction": ["up", "up", "down", "left", "right", "down", "down"],
    }
)

categorical_features = ["colour", "direction"]
fig, ax = plt.subplots(1, len(categorical_features))
for i, categorical_feature in enumerate(df[categorical_features]):
    df[categorical_feature].value_counts().plot("bar", ax=ax[i]).set_title(categorical_feature)
fig.show()

enter image description here

간단히 사용할 수 있습니다.value_counts와 함께sort옵션 설정False그러면 범주 순서가 유지됩니다.

df['colour'].value_counts(sort=False).plot.bar(rot=0)

link to image

Pandas.Series.plot.pie

https://pandas.pydata.org/docs/reference/api/pandas.Series.plot.pie.html

내장된 기능에서 벗어나지 않고도 그보다 조금 더 나은 작업을 수행할 수 있습니다.

사람들은 파이 차트에서 싫어하는 것을 좋아하지만 모자이크/나무와 같은 이점이 있습니다. 전체적으로 해석 가능한 비율을 유지하는 데 도움이 됩니다.

kwargs = dict(
    startangle = 90,
    colormap   = 'Pastel2',
    fontsize   = 13,
    explode    = (0.1,0.1,0.1),
    figsize    = (60,5),
    autopct    = '%1.1f%%',
    title      = 'Chemotherapy Stratification'
)

df['treatment_chemo'].value_counts().plot.pie(**kwargs)

enter image description here

플롯 사용

import plotly.express as px
px.bar(df["colour"].value_counts())

Roman의 답변은 매우 유용하고 정확하지만 최신 버전에서는 매개 변수의 순서가 변경될 수 있으므로 종류도 지정해야 합니다.

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(
    {
    "colour": ["red", "blue", "green", "red", "red", "yellow", "blue"],
    "direction": ["up", "up", "down", "left", "right", "down", "down"],
    }
)

categorical_features = ["colour", "direction"]
fig, ax = plt.subplots(1, len(categorical_features))
for i, categorical_feature in enumerate(df[categorical_features]):
    df[categorical_feature].value_counts().plot(kind="bar", ax=ax[i]).set_title(categorical_feature)
fig.show()

언급URL : https://stackoverflow.com/questions/31029560/plotting-categorical-data-with-pandas-and-matplotlib

반응형