Femto Trader - 1 year ago 119

Python Question

I have some values in a Python Pandas Serie (type: pandas.core.series.Series)

`In [1]: serie = pd.Series([0.0,950.0,-70.0,812.0,0.0,-90.0,0.0,0.0,-90.0,0.0,-64.0,208.0,0.0,-90.0,0.0,-80.0,0.0,0.0,-80.0,-48.0,840.0,-100.0,190.0,130.0,-100.0,-100.0,0.0,-50.0,0.0,-100.0,-100.0,0.0,-90.0,0.0,-90.0,-90.0,63.0,-90.0,0.0,0.0,-90.0,-80.0,0.0,])`

In [2]: serie.min()

Out[2]: -100.0

In [3]: serie.max()

Out[3]: 950.0

I would like to get values of histogram (not necessary plotting histogram)... I just need to get the frequency for each interval.

Let's say that my intervals are going from [-200; -150] to [950; 1000]

so lower bounds are

`lwb = range(-200,1000,50)`

and upper bounds are

`upb = range(-150,1050,50)`

I don't know how to get frequency (the number of values that are inside each interval) now...

I'm sure that defining lwb and upb is not necessary... but I don't know what

function I should use to perform this!

(after diving in Pandas doc, I think

`cut`

After being able to do this, I will have a look at the way to display histogram (but that's an other problem)

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

You just need to use the histogram function of numpy:

```
import numpy as np
count,division = np.histogram(serie)
```

where division is the automatically calculated border for your bins and count is the population inside each bin.

If you need to fix a certain number of bins, you can use the argument bins and specify a number of bins, or give it directly the boundaries between each bin.

```
count,division = np.histogram(serie,bins = [-201,-149,949,1001])
```

to plot the results you can use the matplotlib function hist, but if you are working in pandas each Series has its own handle to the hist function, and you can give it the chosen binning:

```
serie.hist(bins=division)
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**