如何在分类数据上与seaborn进行酒吧聊天时获取标签值

jw5wzhpr  于 2021-09-08  发布在  Java
关注(0)|答案(2)|浏览(268)

下面显示的是用于获取seaborn上分类数据的bar char的语法

import seaborn as sn
import matplotlib as mpl
import matplotlib.pyplot as plt

IN: data['coast'].dtypes
OUT: 
CategoricalDtype(categories=[0, 1], ordered=False)

IN: data['coast'].value_counts()  
OUT: 
0    21450
1      163
Name: coast, dtype: int64

IN: sn.factorplot('coast', data=data, kind='count')
OUT:


如何获得下面所示条形图上的值计数。

如何获得下面所示条形图上的百分比值。

vatpfxk5

vatpfxk51#

也许这对你有用:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

import random
random.seed(1)

n = 15
data = pd.DataFrame({'coast': [random.randint(0, 1) for _ in range(n)]})
data['coast'] = data['coast'].astype('category')

g = sns.catplot(x='coast', data=data, kind='count')
ax = g.facet_axis(0, 0)
for n, p in enumerate(ax.patches):
    ax.text(p.get_x() - 0.01, 
            p.get_height() * 1.02, 
           '{}'.format(data['coast'].value_counts(sort=False)[n]),
            color='black', 
            rotation='horizontal', 
            size='large')
plt.show()

结果:

uwopmtnx

uwopmtnx2#

对于常规计数,可以从保存轴控制柄 sns.countplot 然后使用内置的 ax.bar_label (需要版本3.4.0+):

ax = sns.countplot(x='coast', data=data)
ax.bar_label(ax.containers[0])

或者如果您仍然希望使用基于facetgrid的 sns.factorplot (现命名为 sns.catplot ),使用前从栅格中提取轴 ax.bar_label :

grid = sns.catplot(x='coast', kind='count', data=data)
ax = grid.axes[0, 0]
ax.bar_label(ax.containers[0])


对于百分比计数,可以使用 sns.barplot 使用自定义百分比估算器:

ax = sns.barplot(x='coast', y='coast', estimator=lambda x: len(x) / len(data) * 100, data=data)
ax.bar_label(ax.containers[0], fmt='%.f%%')
ax.set_ylabel('%')

相关问题