판다 및 매트플로트립을 사용하여 범주형 데이터 표시
범주형 데이터가 있는 데이터 프레임이 있습니다.
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')
통계분석 모형에서 유용한 그림을 찾을 수 있습니다.분산에 대한 통계적 강조 표시도 제공할 수 있습니다.
from statsmodels.graphics.mosaicplot import mosaic
plt.rcParams['font.size'] = 16.0
mosaic(df, ['direction', 'colour']);
하지만 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')
또한 약간의 트릭으로 적절한 색상으로 바를 색칠하는 것을 지원합니다.
sns.countplot(df['colour'],
palette={color: color for color in df['colour'].unique()})
여러 범주형 피쳐를 동일한 그래프에 막대 차트로 표시하려면 다음을 제안합니다.
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()
간단히 사용할 수 있습니다.value_counts
와 함께sort
옵션 설정False
그러면 범주 순서가 유지됩니다.
df['colour'].value_counts(sort=False).plot.bar(rot=0)
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)
플롯 사용
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
'source' 카테고리의 다른 글
PowerShell을 사용하여 월 번호를 월 이름으로 변환 (0) | 2023.08.24 |
---|---|
(방법) 특정 함수 호출을 인라인으로 연결할 수 있습니까? (0) | 2023.08.24 |
oracle: from 절에 별칭을 할당할 수 있습니까? (0) | 2023.08.24 |
Javascript에서 사전 이해 또는 객체 'map' (0) | 2023.08.24 |
핀을 터치하지 않고 MKnotationView의 콜아웃 뷰를 트리거하는 방법은 무엇입니까? (0) | 2023.08.24 |