python-3.x - 基于范围的分组的数据框定义不起作用
问题描述
我有一个数据框并想绘制一个树形图。但是,我想定义每个树形图类的边界的方式是基于一个范围而不是单个数字。我正在使用的示例使用单个数字。
这是指定它的代码:
df = pd.DataFrame({'nb_people':[8,3,4,2], 'group':["group A", "group B", "group C", "group D"] })
相反,我想这样分组:
A 组:0-2
B 组:3-5
C 组:>6
我找不到在数据框定义中包含基于范围的分组的解决方案。希望有人指导。先感谢您。
pip install squarify
import matplotlib.pyplot as plt
import squarify
MODIFY THIS PART! df = pd.DataFrame({'nb_people':[8,3,4,2], 'group':["group A", "group B", "group C", "group D"] })
squarify.plot(sizes=df['nb_people'], label=df['group'], alpha=.8 )
plt.show()
解决方案
您需要单独提供要在 DataFrame 定义本身中使用的数组。
nb =[8,3,4,2]
df = pd.DataFrame({'nb_people':nb, 'group':["GROUP A" if 0 <= x <= 2 else "GROUP B" if 3 <= x <= 5 else "GROUP C" if x > 6 else "NO_GROUP" for x in nb]})
您还可以加载“nb_people”列,然后使用应用功能。这更具可读性。
def my_func(row):
if 0 <= row <= 2:
return "GROUP A"
elif 3 <= row <= 5:
return "GROUP B"
elif row > 6:
return "GROUP C"
else:
return "NO_GROUP"
df = pd.DataFrame({'nb_people':[8,3,4,2]})
df['group'] = df['nb_people'].apply(myfunc)
输出(双向)
df
nb_people group
0 8 GROUP C
1 3 GROUP B
2 4 GROUP B
3 2 GROUP A
推荐阅读
- css - 在 css 中将多个 id 与单个类合并的最佳实践是什么?
- visual-studio-code - 扩展如何获取当前连接的远程服务器中文件的远程 URL?
- php - PHP - 验证空表单字段的问题
- php - 如何在回声下使用这个 if 条件?
- mpi - MPI_OP_Create 函数
- php - 为什么我的测验不与 mysql 数据库交互?
- powershell - Powershell 脚本,它将使用正则表达式搜索文件夹并删除早于 XX 的文件
- babylonjs - 在 babylon.js 中为 3d 模型添加按钮
- sql-server - Liquibase generateChangeLog 抛出异常:SQLServerException: Cannot resolve the collation conflict between ... in the INTERSECT operation
- python - 如何在由任意函数创建的 seaborn 散点图中添加一条线