小编tho*_*mac的帖子

在pandas df python中滚动计算斜率

我有一个数据帧:

            CAT         ^GSPC
Date        
2012-01-06  80.435059   1277.810059
2012-01-09  81.560600   1280.699951
2012-01-10  83.962914   1292.079956
....
2017-09-16  144.56653   2230.567646
Run Code Online (Sandbox Code Playgroud)

我想找到每个时期最近63天的股票/和标准普尔指数的斜率.我试过了 :

x = 0
temp_dct = {}
for date in df.index:
      x += 1
      max(x, (len(df.index)-64))    
      temp_dct[str(date)] = np.polyfit(df['^GSPC'][0+x:63+x].values, 
                                     df['CAT'][0+x:63+x].values, 
                                     1)[0]
Run Code Online (Sandbox Code Playgroud)

但是我觉得这是非常"单声道"的,但我在将滚动/移位功能整合到这里时遇到了麻烦.

我的预期输出是有一个名为"Beta"的列,其具有所有可用日期的S&P(x值)和库存(y值)的斜率

python dataframe yahoo-finance

8
推荐指数
1
解决办法
631
查看次数

pandas groupby 使用字典值,应用 sum

我有一个 defaultdict:

dd = defaultdict(list,
        {'Tech': ['AAPL','GOOGL'],
         'Disc': ['AMZN', 'NKE']  }
Run Code Online (Sandbox Code Playgroud)

和一个看起来像这样的数据框:

         AAPL AMZN GOOGL NKE
1/1/10   100  200  500   200
1/2/10   100  200  500   200
1/310    100  200  500   200
Run Code Online (Sandbox Code Playgroud)

我想要的输出是根据字典的值对数据框求和,以键为列:

         TECH DISC 
1/1/10   600  400 
1/2/10   600  400  
1/3/10   600  400 
Run Code Online (Sandbox Code Playgroud)

pandas groupby 文档说,如果您传递字典,它会执行此操作,但我最终得到的只是使用以下代码的空 df:

df.groupby(by=dd).sum()   ##returns empty df
Run Code Online (Sandbox Code Playgroud)

python pandas

5
推荐指数
1
解决办法
554
查看次数

无论如何保存熊猫造型器对象

这是一个带有背景渐变的样式器对象:

在此处输入图片说明

无论如何,我只是在寻找按原样保存它。已尝试使用 .render() 但不确定如何处理该 HTML 代码,并且从阅读有关该主题的其他问题来看,目前似乎没有保存这些的方法。有没有黑客的方法来做到这一点?

这是数组:

array([[ 0.264     ,  0.271     ,  0.285     ,  0.289     ,  0.329     ],
   [ 0.053     ,  0.051     ,  0.045     ,  0.038     ,  0.031     ],
   [ 0.006     ,  0.007     ,  0.009     ,  0.01      ,  0.01      ],
   [-3.98650106, -3.95728537, -3.99767582, -4.20624136, -3.54186842],
   [-3.22600677, -2.87623307, -2.03420988, -1.54443176, -1.41006671]])
Run Code Online (Sandbox Code Playgroud)

和我有的代码行:

df.style.background_gradient(cmap='RdYlGn',low=.09,high=.18,axis=1)
Run Code Online (Sandbox Code Playgroud)

python pandas

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

使用 matplotlib 在单个 pdf 页面上保存多个图

我正在尝试将所有 11 个扇区的图形从扇区列表保存到 1 个 pdf 表。到目前为止,下面的代码在单独的工作表(11 个 pdf 页)上给了我一个图表。

每日回报函数是我正在绘制的数据。每个图形上有 2 条线。

with PdfPages('test.pdf') as pdf:
n=0
for i in sectorlist:
    fig = plt.figure(figsize=(12,12))
    n+=1
    fig.add_subplot(4,3,n)
    (daily_return[i]*100).plot(linewidth=3)
    (daily_return['^OEX']*100).plot()
    ax = plt.gca()
    ax.set_ylim(0, 100)
    plt.legend()
    plt.ylabel('Excess movement (%)')
    plt.xticks(rotation='45')
    pdf.savefig(fig)
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib yahoo-finance pandas

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

Matplotlib基于值的条形图的不同颜色

我正在绘制部门及其所有股票的收益。我希望值> 100为绿色,而<100为红色。这是我的代码:

sector_lst = ['XLK','XLF','XLE']  ## etc.

for i in sector_lst:                   
    fig = plt.figure(figsize=(12, 8)) 

    for x in sectordict[i]:                #sectordict[i] is all the stocks in a sector (so AAPL, GOOG, etc. for tech) 
        if pct_change[x] > 1:              
             pct_change[sectordict[i]].plot(kind='bar',color='g') 

        ##if pct_chg < 1
        else:                              
             pct_change[sectordict[i]].plot(kind='bar',color='r') 


plt.title(i)
Run Code Online (Sandbox Code Playgroud)

到目前为止,这会将整个扇区图形返回为绿色或红色。如果第一个值大于100,则所有库存均为绿色,反之亦然。

我的预期输出是有11张图(当前它会这样做),但是图中的每种股票都有不同的颜色,如果股票的回报率> 100%,则显示绿色,而<100%,则显示红色。

python matplotlib yahoo-finance pandas

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

为 pandas 数据框中的每一行创建热图

下面是一个名为“compmatrix”的 df:

             -3.0        -5.0       -7.0    
Gain/DD*DD%  0.009000    0.034000   0.088000    
Gain/Expsr%  0.487000    0.927000   1.628000    
Gain/MaxDD   0.015000    0.021000   0.025000    
MaxDD*iBeta  32.633      193.536    856.520
Run Code Online (Sandbox Code Playgroud)

由于值差异很大,我想对每一行(相对于整个数据框)应用热图。

import seaborn as sns
sns.heatmap(compmatrix,cmap='RdYlGn_r',annot=True)
Run Code Online (Sandbox Code Playgroud)

但事实上没有 axis=1 让我感到困惑。似乎无法在文档中找到我正在寻找的解决方案。

python pandas seaborn

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

将字符转换为数据框中的数值

我有一个名为'XLK'的df:

       Market Cap   PE  
AAN     3.25B      23.6 
AAPL    819.30B    18.44    
ACFN    6.18M      2.1  
ACIW    2.63B      103.15   
Run Code Online (Sandbox Code Playgroud)

我只想要价值> 1亿的市值,所以预期产量是:

       Market Cap   PE  
AAN     3.25B      23.6 
AAPL    819.30B    18.44    
ACIW    2.63B      103.15   
Run Code Online (Sandbox Code Playgroud)

我已经尝试将字母转换为适当的0而没有成功:

XLK['Market Cap'].replace('M','000000')
XLK.drop[XLK_quote['Market Cap'] < '100M'].index
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

将值插入 np.empty 数组,如何替换?

我有一个名为 fajita 的美味空数组:

fajita = np.empty(2)
array([  2.00000000e+00,   1.72723382e-77])
Run Code Online (Sandbox Code Playgroud)

当我使用:

np.insert(fajita,0,[2,2])
Run Code Online (Sandbox Code Playgroud)

我得到:

array([  2.00000000e+00, 2.00000000e+00,   2.00000000e+00,   1.72723382e-77])
Run Code Online (Sandbox Code Playgroud)

这里的问题是我只想要插入的 2 个值,我不想保留空数组中的先前值。预期的输出应该是一个只插入了 2 个值的数组。就像是:

array([  2.00000000e+00, 2.00000000e+00])
Run Code Online (Sandbox Code Playgroud)

python arrays numpy

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

将df中的许多列减去另一df中的一列

我正在尝试用df“ p_df”(144行x 1列)减去df“ stock_returns”(144行x 517列)。

我试过了;

stock_returns - p_df

stock_returns.rsub(p_df,axis=1)
stock_returns.substract(p_df)
Run Code Online (Sandbox Code Playgroud)

但是它们都不起作用,并且都返回Nan值。

我正在通过此fnc传递它,并使用for循环获取args:

def disp_calc(returns, p, wi):    #apply(disp_calc, rows = ...)
    wi = wi/np.sum(wi)
    rp = (col_len(returns)*(returns-p)**2).sum()      #returns - p causing problems    
    return np.sqrt(rp)

for i in sectors:
    stock_returns = returns_rolling[sectordict[i]]#.apply(np.mean,axis=1)          
    portfolio_return = returns_rolling[i]; p_df = portfolio_return.to_frame()
    disp_df[i] = stock_returns.apply(disp_calc,args=(portfolio_return,wi))
Run Code Online (Sandbox Code Playgroud)

我的预期输出是将第一个df中的所有517个cols减去p_df中的1个col。因此最终结果仍为517列。谢谢

python pandas

0
推荐指数
1
解决办法
2402
查看次数

标签 统计

python ×9

pandas ×7

yahoo-finance ×3

dataframe ×2

matplotlib ×2

arrays ×1

numpy ×1

seaborn ×1