我有一个数据框列,其中包含通过以下函数获得的相应行血压收缩值和舒张值的类别:

def classify_bp(row):
    if row.SYS < 120 and row.DIA < 80:
        return "normal"
    elif (row.SYS >= 120 and row.SYS <= 129) and row.DIA < 80:
        return "elevated"
    elif (row.SYS >= 130 and row.SYS <= 139) or (row.DIA >= 80 and row.DIA <= 89):
        return "stage1"
    elif (row.SYS >= 140 and row.SYS <= 179) or (row.DIA >= 90 and row.DIA <= 119):
        return "stage2"
    elif row.SYS > 180 or row.DIA > 120:
        return "crisis"

如果我将此函数应用于血压读数数据帧,我可以生成一个名为"bp_class"的新df列,每行具有适当的血压读数分类.

如果我将value_counts()函数应用于该列,则得到以下结果:

df_simple["bp_class"].value_counts(sort=False)
normal      37
stage1      34
elevated    15

我想制作一个x轴上有5个类别的seaborn柱状图,可能总是以相同的函数顺序(正常、升高、阶段1、阶段2、危机)和每个的频率,包括观察值为零的类别(value_counts()函数不知道).

推荐答案

您可以使用所有可能类别的列表:

# your sample data
s = pd.Series(index=['normal', 'stage1', 'elevated'], data=[37, 34, 15], name='bp_class')

plot_data = s.reindex(['normal', 'elevated', 'stage1', 'stage2', 'crisis'])
sns.barplot(x=plot_data.index, y=plot_data.values)

enter image description here

Python相关问答推荐

运行总计基于多列pandas的分组和总和

pyscript中的压痕问题

Pandas:将多级列名改为一级

Odoo 16使用NTFS使字段只读

字符串合并语法在哪里记录

用砂箱开发Web统计分析

如何更改groupby作用域以找到满足掩码条件的第一个值?

将scipy. sparse矩阵直接保存为常规txt文件

网格基于1.Y轴与2.x轴显示在matplotlib中

在Python中从嵌套的for循环中获取插值

并行编程:同步进程

应用指定的规则构建数组

如何在Airflow执行日期中保留日期并将时间转换为00:00

按条件添加小计列

使用SQLAlchemy从多线程Python应用程序在postgr中插入多行的最佳方法是什么?'

如何在SQLAlchemy + Alembic中定义一个"Index()",在基表中的列上

Scipy.linprog的可行性有问题吗?(A_ub@x0<;=b_ub).all()为True-但是-linprog(np.zeros_like(X0),A_ub=A_ub,b_ub=b_ub)不可行

Django-修改后的管理表单返回对象而不是文本

如何将ManyToManyfield用于Self类

判断字典键、值对是否满足用户定义的搜索条件