我得到了2列數據框(體積和價格),並且我想根據volume列創建20個bin,並且數據量相等在每個垃圾箱裏。每個bin中y值的python直方圖與相同的數據數量(x)
I.e.如果我得到了音量= [1,6,8,2,6,9,3,6]和4個分檔,我想將數據剪切到第一個分檔:1:2,2:3:6,3:6:如圖8所示,第四:8:9
然後繪製平均相應y值
的直方圖我的數據:
df = pd.DataFrame{'Volume_norm' : [0.92, 2.31, 0.92, 0.018, 0.0454, 0.43, 0.43,0.943,0.543,0.543,0.43] , 'Price' : [2, 4, 5, 1, 5, 1, 2, 4, 2, 3, 6]}
我的代碼:
x = sorted(FilteredTrade_buy['Volume_norm'])
bins=x[0::int(len(x)/50)]
n, bins, patches = plt.hist(x, bins=bins)
plt.show()
這隻給我x(音量)的總和而不是平均y的價格
===============更新代碼=========== ===
df = pd.DataFrame({'Volume_norm' : [0.92,2.31,0.92,0.018,0.0454,0.43,0.43,0.943,0.543,0.543,0.43],
'Price' : [2,4,5,1,5,1,2,4,2,3,6]})
x = df['Volume_norm']
y = df['Price']
nbins = 5
binsize = x.size // nbins
indices = x.argsort()
means = np.zeros((nbins,))
xaxis = np.zeros((nbins,))
for k in range(nbins):
xaxis[k] = x[indices[i * binsize : (i + 1) * binsize]].mean()
for i in range(nbins):
means[i] = y[indices[i * binsize : (i + 1) * binsize]].mean()
plt.loglog(xaxis,means,'r-')
plt.show()
但x軸返回我:陣列([0.9315,0.9315,0.9315,0.9315,0.9315])
此外,纔有可能使用 '計數器' 計數數據的數目在每個區間?
請問您可以將文本添加爲文本嗎?從圖片複製數據並不容易。 –
等一下,所以你想要用'x'填充直方圖的高度,以反映平均的'y'值?這根本不是直方圖,所以你不應該使用'hist'函數,它假設「直方圖」的標準定義。也許只需計算'y'平均值並用plt.plot()調用 – Anonymous
編輯的問題(日期= df)繪製數據。是的,我試圖在plt.plot中的數據,但它的結果是一些邊界/邊緣是相同的,因此'切'功能不起作用 – bing