python - Pandas 中的加权箱线图

标签 python pandas boxplot

对于下面的数据框(df),

     ColA      ColA_weights      ColB   ColB_weights
0  0.038671            1073  1.859599             1
1  20.39974           57362  10.59599             1
2  10.29974            5857  2.859599             1
3  5.040000            1288  33.39599             1
4  1.040000            1064  7.859599             1

我想画一个加权箱线图,其中每个箱子的权重分别由 ColA_weights 和 ColB_weights 给出,我只是这样做

df.boxplot(fontsize=12,notch=0,whis=1.5,vert=1,widths=0.2)

不过好像没有规定要包含权重。有什么解决办法吗?

谢谢!

最佳答案

正如评论中所建议的,这是一种制作列表的方法,其中每个条目的显示次数与权重指示的次数一样多。我认为这不是最聪明的解决方案,有人可以想出更好的解决方案。

我的示例仅适用于 A 列,但您应该能够以相同的方式在 B 列上使用它:

import matplotlib.pyplot as plt

weighted_appearances = []
for index, row in df.iterrows():
    weighted_row = [row.ColA]*row.ColA_weights
    weighted_appearances += weighted_row

plt.boxplot(weighted_appearances)
plt.show()

优点:编写起来非常简单的解决方案,理论上适用于所有情况(如果您的权重不是整数,您将不得不以您认为可以接受的方式转换/舍入它们)

缺点:效率不高,如果您使用非常大的权重,则必须找到一种方法来“缩小”这些权重以获得合理的内存使用量。

关于python - Pandas 中的加权箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23412533/

相关文章:

r - ggplot2 箱线图 : horizontal bar at median?

python - 如何使用 Python 中的 boto 库获取 Amazon SQS 中的消息接收计数?

python - 为使用 Flask 发送的电子邮件创建一个安全的退订链接

python - Sympy 在求解方程时返回 ConditionSet 对象,而 matlab 在求解相同方程时返回单个 float

python - 打印带索引的 Pandas 数据框

r - R 中的箱线图,仅中位数可见

python - py2exe:编译的 Python Windows 应用程序不会运行,因为 DLL

python - 如何从数据帧生成频率表?

python - 索引/多重索引内的字符串替换

r - 如何在箱线图中创建组之间的空间并控制轴标签的大小?