首页 > 解决方案 > 如何绘制直方图以获取所有唯一值的计数?

问题描述

我有一个 Pandas 列,其中包含 .0001 独有的数据

我想绘制一个直方图,其中每个唯一的 .0001 数据都有一个条形图。

我通过以下方式实现了很多粒度

plt.hist(df['data'], bins=500)

但我想查看每个唯一值的计数。

我该怎么做呢?谢谢你

标签: pythonpandasmatplotlib

解决方案


由于您的值是离散的,因此在这些值之间很好地设置 bin 边界很重要。如果边界与值一致,则可能会出现奇怪的舍入伪影。下面的示例将每个值设置为 10 次,但边界位于值顶部的直方图将最后两个值放入同一个 bin 中:

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

df = pd.DataFrame({'data': np.repeat(np.arange(0.0005, 0.0030, 0.0001), 10)})

fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(15, 4))
ax1.hist(df['data'], bins=np.arange(df['data'].min(), df['data'].max(), 0.0001), ec='w')
ax1.set_title('bin boundaries on top of the values')
ax2.hist(df['data'], bins=np.arange(df['data'].min() - 0.00005, df['data'].max() + 0.0001, 0.0001), ec='w')
ax2.set_title('bin boundaries in-between the values')
plt.show()

示例图

请注意,边界在两半的版本也将 x-ticks 很好地放在了 bin 的中心。


推荐阅读