gpt4 book ai didi

python - 如何将自定义列顺序(在分类上)应用于 Pandas 箱线图?

转载 作者:行者123 更新时间:2023-12-05 07:34:44 26 4
gpt4 key购买 nike

编辑:这个问题早在 2013 年就出现了 pandas ~0.13,并且由于直接支持 boxplot 版本 0.15-0.18 之间的某处而被废弃(根据 @Cireo's late answer ;由于有人提出这个问题,pandas 也大大改进了对分类的支持。)


我可以在 pandas DataFrame 中获取工资列的 boxplot...

train.boxplot(column='Salary', by='Category', sym='')

...但是我不知道如何根据另一个标准定义“类别”列上使用的索引顺序 - 我想提供我自己的自定义顺序:

category_order_by_mean_salary = train.groupby('Category')['Salary'].mean().order().keys()

如何将我的自定义列顺序应用于箱线图列? (除了使用前缀强制排序的丑陋的列名之外)

'Category' 是一个字符串(实际上,应该是一个分类的,但这是在 0.13 中,分类是三等公民)列采用 27 个不同的值:['Accounting & Finance Jobs', '管理工作',...,'旅行工作']。所以它可以很容易地用 pd.Categorical.from_array()

分解

经检查,限制在 pandas.tools.plotting.py:boxplot() 内部,它转换列对象而不允许排序:

我想我可以破解自定义版本的 pandas boxplot(),或者深入对象的内部结构。并提出增强请求。

最佳答案

如果没有工作示例,很难说如何做到这一点。我的第一个猜测是只添加一个包含您想要的订单的整数列。

一种简单、蛮力的方法是一次添加一个箱线图。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.rand(37,4), columns=list('ABCD'))
columns_my_order = ['C', 'A', 'D', 'B']
fig, ax = plt.subplots()
for position, column in enumerate(columns_my_order):
ax.boxplot(df[column], positions=[position])

ax.set_xticks(range(position+1))
ax.set_xticklabels(columns_my_order)
ax.set_xlim(xmin=-0.5)
plt.show()

enter image description here

关于python - 如何将自定义列顺序(在分类上)应用于 Pandas 箱线图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50003272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com