2017-04-24 73 views
0

目的平均先前和當前行 - 熊貓

  • 計算avg_tot_assets其中avg_tot_assets =(現有年資產+當前年資產)/ 2
  • 計算return_on_asset(ROA)= net income/avg_total_assets

APPROACH

  1. 使用Quandl的API提取波音公司財務信息
  2. 創建數據幀
  3. 使用熊貓通過數據幀迭代並計算每年的平均總資產
  4. 用熊貓來計算ROA

工作代碼

df = data[['per_fisc_year', 
      'consol_net_income_loss', 
      'tot_asset', 
      'curr_portion_debt', 
      'tot_lterm_debt', 
      'tot_share_holder_equity']] 
df 

輸出

dataframe

質詢

  1. 我想通過數據幀的循環是不是最有效的/優雅的方式。我研究過使用groupby或index,但我不確定如何執行。
  2. 同樣,如果我要計算ROA - 我可以並行計算return_on_asset,同時計算avg_tot_asset,還是這些必須獨立運行?

回答

1

對於第一個問題,請看Pandas Window Functions。這將處理您avg_tot_assets有:

df['avg_tot_assets'] = df.tot_asset.rolling(window=2).mean() 

至於計算並行另一列,有可能是一個辦法,但你不可能通過這樣做來獲得任何性能。你會更好地按順序進行。像這樣:

df['ROA'] = df.net_income/df.avg_tot_assets 

你可以嘗試浪費寫一個複雜的函數,將通過數據幀逐行和計算反過來然後將輸出到原始數據幀的每個值很多時間,但這會是DRASTICALLY比內置方法慢。

+1

哇 - 這是令人難以置信的簡單化。我曾見過其他人嘗試.groupby和.index,但這非常優雅。這次真是萬分感謝! – jonplaca