小编Joh*_*ohn的帖子

麻烦多个"groupby"与变量和类别(分类数据)

df.dtypes

Close       float64
eqId          int64
date         object
IntDate       int64
expiry        int64
delta         int64
ivMid       float64
conf        float64
Skew        float64
psc         float64
vol_B      category
dtype: object

gb = df.groupby([df['vol_B'],df['expiry']])

gb.describe()
Run Code Online (Sandbox Code Playgroud)

我得到一个很长的错误消息,最后一行是

AttributeError: 'Categorical' object has no attribute 'flags'
Run Code Online (Sandbox Code Playgroud)

当我groupby分别对它们中的每一个执行时,它们各自(独立地)工作得很好,我只是不能执行多个groupby,其中一个变量是"bin".

此外,当我使用其他2个变量时,我能够执行多次groupby&ndash,我成功执行了此操作:

gb = df.groupby([df['delta'],df['expiry']])
Run Code Online (Sandbox Code Playgroud)

python group-by pandas

3
推荐指数
1
解决办法
881
查看次数

Pandas/Python - 确定范围内多项式方程的局部最小值和最大值

我有一个四阶回归方程,我想找到因变量(y)的值和给出它的相应的自变量(x).本质上,我正在寻找给定范围内曲线斜率为零的点(曲线最低点).

我的等式是:

y = 2661x^5 + 637x^4 + 9.32x^3 - 3.88x^2 - 0.62x + .21
Run Code Online (Sandbox Code Playgroud)

我对x [-0.155,0.103]范围内的最小值感兴趣.

实际的方程变量如下:

     In [54]:

df3.dtypes
Out[54]:
date       datetime64[ns]
expDate    datetime64[ns]
X^5               float64
X^4               float64
X^3               float64
X^2               float64
X                 float64
Const             float64
minls             float64
maxls             float64
dtype: object

In [55]: 
df3

Out[55]:
        date    expDate          X^5         X^4       X^3       X^2  \
5 2008-01-02 2008-01-19  2661.368357  637.214501  9.320573 -3.884286   

          X    Const     minls     maxls  
5 -0.621015  0.21083 -0.154444  0.102655  
Run Code Online (Sandbox Code Playgroud)

其中minls和maxls是范围变量

有一种优雅的方式来做到这一点?我确实看过scipy.optimize.brent,但是无法按照它的实现.

我还想提一下,我已经在数据框上按[date,expDate]执行了一个组,以防它对解决方案很重要.我的愿望是有一个新变量df3.zerols包含[minls,maxls]范围内的"ls"值

在此先感谢您的任何帮助

约翰

更新:我得到了一些帮助,当我只有一行数据时,能够执行所需的过程.以下是我约会的代码.在执行group-by on date和expDate之后,我需要能够在许多行上执行相同的分析.

In …
Run Code Online (Sandbox Code Playgroud)

python polynomial-math pandas

2
推荐指数
1
解决办法
2111
查看次数

矩阵未对齐错误消息

我有以下返回数据框

ret
Out[3]: 
Symbol            FX      OGDC       PIB       WTI
Date                                              
2010-03-02  0.000443  0.006928  0.000000  0.012375
2010-03-03 -0.000690 -0.007873  0.000171  0.014824
2010-03-04 -0.001354  0.001545  0.000007 -0.008195
2010-03-05 -0.001578  0.008796 -0.000164  0.015955
Run Code Online (Sandbox Code Playgroud)

以及每个符号的以下权重:

df3
Out[4]: 
  Symbol    Weight
0   OGDC  0.182022
1    WTI  0.534814
2     FX  0.131243
3    PIB  0.151921
Run Code Online (Sandbox Code Playgroud)

我试图获得每天的加权回报并尝试:

port_ret = ret.dot(df3)
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误消息:

ValueError: matrices are not aligned
Run Code Online (Sandbox Code Playgroud)

我的目标是对每个日期进行加权回报,例如 2010-03-02 如下:

weighted_ret = 0.000443*.131243+.006928*.182022+0.000*0.151921+0.012375*.534814 = 0.007937512
Run Code Online (Sandbox Code Playgroud)

我不确定为什么我会收到此错误,但会很高兴为加权回报提供替代解决方案

python matrix np pandas

2
推荐指数
2
解决办法
8367
查看次数

标签 统计

pandas ×3

python ×3

group-by ×1

matrix ×1

np ×1

polynomial-math ×1