Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 系列的直方图值_Python_Pandas_Numpy_Matplotlib - Fatal编程技术网

Python 系列的直方图值

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) 我现在不知道如何获得

我在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)
我现在不知道如何获得频率(每个间隔内的值的数量)。。。 我确信没有必要定义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:)