python binning:如何增加范围

时间:2017-09-08 14:33:30

标签: python

我得到了体积(x轴)与Price(dMidP,y轴)散点图的散点图,我想将x轴分成30个均匀间隔的部分,用于整个范围并平均值,然后绘制平均值Ie红点 enter image description here

但是,如果bin = 30:该图仅覆盖了一小部分x bin=30

然后我将bin增加到100(线条不太平滑 enter image description here

然后到500: enter image description here

你知道为什么x范围在变化吗?

------------------更新---------------------------- -------------

代码:

df = pd.DataFrame({'X' : np.log(TradeNa['Volume']), 'Y' : TradeNa['dMidP']}) 
data_cut = pd.cut(df.X, np.linspace(df.X.min(), df.X.max(), 30))          #we cut the data following the bins
grp = df.groupby(by = data_cut)        #we group the data by the cut

ret = grp.aggregate(np.mean)         #we produce an aggregate representation (median) of each bin

plt.loglog(np.log(TradeNa['Volume']),TradeNa['dMidP'],'o')
plt.loglog(ret.X,ret.Y,'r-')

plt.show()

enter image description here

1 个答案:

答案 0 :(得分:0)

pd.cut(df.X,bins)将您的数据分成大致相等的块。

我认为你想要的是,你需要做pd.cut(df.X, np.linspace(df.X.min(), df.X.max(), 30))