Python 系列的直方图值
我在Python Pandas系列中有一些值(类型:Python 系列的直方图值,python,pandas,numpy,matplotlib,Python,Pandas,Numpy,Matplotlib,我在Python Pandas系列中有一些值(类型:Pandas.core.Series.Series) 我想得到直方图的值(不需要绘制直方图)。。。我只需要得到每个间隔的频率 假设我的时间间隔是从[-200;-150]到[950;1000] 所以下限是 lwb = range(-200,1000,50) upb = range(-150,1050,50) 上界是 lwb = range(-200,1000,50) upb = range(-150,1050,50) 我现在不知道如何获得
Pandas.core.Series.Series
)
我想得到直方图的值(不需要绘制直方图)。。。我只需要得到每个间隔的频率
假设我的时间间隔是从[-200;-150]到[950;1000]
所以下限是
lwb = range(-200,1000,50)
upb = range(-150,1050,50)
上界是
lwb = range(-200,1000,50)
upb = range(-150,1050,50)
我现在不知道如何获得频率(每个间隔内的值的数量)。。。
我确信没有必要定义lwb和upb。。。但我不知道是什么
我应该使用的函数来执行此操作!
(在深入熊猫文档之后,我认为cut
函数可以帮助我,因为这是一个离散化问题……但我不知道如何使用它)
完成此操作后,我将查看显示直方图的方法(但这是另一个问题)您只需使用NumPy
:
import numpy as np
count, division = np.histogram(series)
其中,division是自动计算的存储箱边界,count是每个存储箱中的人口
count, division = np.histogram(series, bins = [-201,-149,949,1001])
如果需要固定一定数量的存储箱,可以使用参数存储箱并指定存储箱数量,或者直接为其指定每个存储箱之间的边界
count, division = np.histogram(series, bins = [-201,-149,949,1001])
要绘制结果,可以使用matplotlib函数hist,但如果在熊猫中工作,则每个系列都有其自己的hist函数句柄,并且可以为其指定所选的装箱:
series.hist(bins=division)
编辑: 正如另一张海报所提到的,
Pandas
构建在NumPy
之上。由于OP明确使用了Pandas
,我们可以通过Pandas
访问NumPy
来取消额外的导入:
count,division=pd.np.直方图(系列)
如果你说你想得到直方图的值,如果我没弄错的话,你只是在寻找序列中每个唯一值的频率。在这种情况下,您只需执行serie.value\u counts()
,即可获得:
0.0 16
-90.0 8
-100.0 5
-80.0 3
63.0 1
-50.0 1
130.0 1
190.0 1
840.0 1
-48.0 1
208.0 1
-64.0 1
812.0 1
-70.0 1
950.0 1
为了获得给定间隔装箱范围内的值的频率计数,我们可以使用它返回每个元素的半开装箱索引,并计算它们各自的计数 要绘制其计数,可以绘制条形图
step = 50
bin_range = np.arange(-200, 1000+step, step)
out, bins = pd.cut(s, bins=bin_range, include_lowest=True, right=False, retbins=True)
out.value_counts(sort=False).plot.bar()
按计数降序排列的每个间隔的频率:
out.value_counts().head()
[-100, -50) 18
[0, 50) 16
[800, 850) 2
[-50, 0) 2
[950, 1000) 1
dtype: int64
为了美观起见,要修改绘图以仅包括范围的较低闭合间隔,可以执行以下操作:
out.cat.categories = bins[:-1]
out.value_counts(sort=False).plot.bar()
序列的单数是“序列”:接近-但直方图是在每个箱子中寻找频率,它可能包含几个唯一的值。例如,-50和-48可能在同一个箱子中。OP的问题指定他的直方图中有间隔为50的箱子。@FemtoTrader-Pandas是建立在numpy上的!!!:-)请注意,
pd.np
已被弃用。请直接导入numpy:)