如何在与seaborn的酒吧聊天中获取分类数据的标签值

WF3*_*F30 5 python numpy matplotlib pandas seaborn

下面显示的是用于获取 seaborn 上分类数据的条形字符的语法

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:
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  1. 如何获取下面所示的条形图上的值计数。 在此输入图像描述

  2. 如何获取如下所示的条形图上的百分比值。 在此输入图像描述

tdy*_*tdy 9

百分比计数

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('%')
Run Code Online (Sandbox Code Playgroud)


定期计数

保存轴句柄sns.countplot并使用新的ax.bar_label

ax = sns.countplot(x='coast', data=data)
ax.bar_label(ax.containers[0])
Run Code Online (Sandbox Code Playgroud)

或者对于基于面的sns.catplot(以前的sns.factorplot),在使用之前从面网格中提取轴ax.bar_label

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


Ren*_*ene 0

也许这对你有用:

# imports
import sys # for retreiving package version matplotlib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

# package versions
print('numpy      :', np.__version__)
print('pandas     :', pd.__version__)
print('matplotlib :', sys.modules['matplotlib'].__version__)
print('seaborn    :', np.__version__)

# set seed for reproducibility
np.random.seed(100)

# generate data
n = 15
data = pd.DataFrame({'coast': np.random.randint(low=0, high=2, size=n, dtype=int)})
data['coast'] = data['coast'].astype('category')

# plot data
ax = sns.countplot(x='coast', data=data)
plt.bar_label(ax.containers[0]) # plot bar labels
plt.show()
Run Code Online (Sandbox Code Playgroud)

结果:

numpy      : 1.21.0
pandas     : 1.3.0
matplotlib : 3.4.2
seaborn    : 1.21.0
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述