【问题标题】:Using pandas in python I am trying to group data from price ranges在 python 中使用 pandas 我正在尝试对价格范围内的数据进行分组
【发布时间】:2018-01-19 21:04:57
【问题描述】:

这是我正在运行的代码,它创建了一个条形图,但我想将图表中每个条形的 5 美元内的值组合在一起。条形图当前将所有 50 个值显示为单独的条形,使数据几乎不可读。直方图是更好的选择吗?另外,bdf 是出价,adf 是要价。

import gdax
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from gdax import *
from pandas import *
from numpy import *
s= 'sequence'
b= 'bids'
a= 'asks'
public_client = gdax.PublicClient()
o = public_client.get_product_order_book('BTC-USD', level=2)
df = pd.DataFrame(o)
bdf = pd.DataFrame(o[b],columns = ['price','size','null'], dtype='float')
adf = pd.DataFrame(o[b],columns = ['price','size','null'], dtype='float')

del bdf['null'] bdf.plot.bar(x='price', y='size')
plt.show() 
pause = input('pause')

这是我作为 DataFrame 对象接收到的数据示例。

       price       size
0   11390.99  13.686618
1   11389.40   0.002000
2   11389.00   0.090700
3   11386.53   0.060000
4   11385.26   0.010000
5   11385.20   0.453700
6   11381.33   0.006257
7   11380.06   0.011100
8   11380.00   0.001000
9   11378.61   0.729421
10  11378.60   0.159554
11  11375.00   0.012971
12  11374.00   0.297197
13  11373.82   0.005000
14  11373.72   0.661006
15  11373.39   0.001758
16  11373.00   1.000000
17  11370.00   0.082399
18  11367.22   1.002000
19  11366.90   0.010000
20  11364.67   1.000000
21  11364.65   6.900000
22  11364.37   0.002000
23  11361.23   0.250000
24  11361.22   0.058760
25  11360.89   0.001760
26  11360.00   0.026000
27  11358.82   0.900000
28  11358.30   0.020000
29  11355.83   0.002000
30  11355.15   1.000000
31  11354.72   8.900000
32  11354.41   0.250000
33  11353.00   0.002000
34  11352.88   1.313130
35  11352.19   0.510000
36  11350.00   1.650228
37  11349.90   0.477500
38  11348.41   0.001762
39  11347.43   0.900000
40  11347.18   0.874096
41  11345.42   7.800000
42  11343.21   1.700000
43  11343.02   0.001754
44  11341.73   0.900000
45  11341.62   0.002000
46  11341.00   0.024900
47  11340.00   0.400830
48  11339.77   0.002946
49  11337.00   0.050000

熊猫是处理这些数据的最佳方式吗?

【问题讨论】:

    标签: python pandas matplotlib gdax-api


    【解决方案1】:

    不确定我是否理解正确,但如果您想以 5 美元的步长计算出价数量,您可以这样做:

    > df["size"].groupby((df["price"]//5)*5).sum()
    price
    11335.0     0.052946
    11340.0     3.029484
    11345.0    10.053358
    11350.0    12.625358
    11355.0     1.922000
    11360.0     8.238520
    11365.0     1.012000
    11370.0     2.047360
    11375.0     0.901946
    11380.0     0.018357
    11385.0     0.616400
    11390.0    13.686618
    Name: size, dtype: float64
    

    【讨论】:

      【解决方案2】:

      你可以在这里使用cut

      df['bin']=pd.cut(df.price,bins=3)
      df.groupby('bin')['size'].sum().plot(kind='bar')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-23
        • 1970-01-01
        • 2016-01-09
        • 1970-01-01
        • 2019-10-09
        • 1970-01-01
        • 2017-12-30
        • 1970-01-01
        相关资源
        最近更新 更多