有些匯總統(tǒng)計(jì)(如相關(guān)系數(shù)和協(xié)方差)是通過參數(shù)對(duì)計(jì)算出來的。我們來看幾個(gè)DataFrame萨咕,它們的數(shù)據(jù)來自Yahoo!Finance的股票價(jià)格和成交量,使用的是pandas-datareader包(可以用conda或pip安裝):
conda install pandas-datareader
我使用pandas_datareader模塊下載了一些股票數(shù)據(jù):
import pandas_datareader.data as web
all_data = {ticker: web.get_data_yahoo(ticker)
for ticker in ['AAPL', 'IBM', 'MSFT', 'GOOG']}
price = pd.DataFrame({ticker: data['Adj Close']
for ticker, data in all_data.items()})
volume = pd.DataFrame({ticker: data['Volume']
for ticker, data in all_data.items()})
此時(shí)Yahoo! Finance已經(jīng)不存在了火本,因?yàn)?017年Yahoo!被Verizon收購(gòu)了危队。參閱pandas-datareader文檔,可以學(xué)習(xí)最新的功能钙畔。
現(xiàn)在計(jì)算價(jià)格的百分?jǐn)?shù)變化茫陆,時(shí)間序列的操作會(huì)在第11章介紹:
In [242]: returns = price.pct_change()
In [243]: returns.tail()
Out[243]:
AAPL GOOG IBM MSFT
Date
2016-10-17 -0.000680 0.001837 0.002072 -0.003483
2016-10-18 -0.000681 0.019616 -0.026168 0.007690
2016-10-19 -0.002979 0.007846 0.003583 -0.002255
2016-10-20 -0.000512 -0.005652 0.001719 -0.004867
2016-10-21 -0.003930 0.003011 -0.012474 0.042096
Series的corr方法用于計(jì)算兩個(gè)Series中重疊的、非NA的擎析、按索引對(duì)齊的值的相關(guān)系數(shù)簿盅。與此類似,cov用于計(jì)算協(xié)方差:
In [244]: returns['MSFT'].corr(returns['IBM'])
Out[244]: 0.49976361144151144
In [245]: returns['MSFT'].cov(returns['IBM'])
Out[245]: 8.8706554797035462e-05
因?yàn)镸STF是一個(gè)合理的python屬性揍魂,我們還可以用更簡(jiǎn)潔的語(yǔ)法選擇列:
In [246]: returns.MSFT.corr(returns.IBM)
Out[246]: 0.49976361144151144
另一方面桨醋,DataFrame的corr和cov方法將以DataFrame的形式分別返回完整的相關(guān)系數(shù)或協(xié)方差矩陣:
利用DataFrame的corrwith方法,你可以計(jì)算其列或行跟另一個(gè)Series和DataFrame之間的相關(guān)系數(shù)值Series(針對(duì)各列進(jìn)行計(jì)算):
In [249]: returns.corrwith(returns.IBM)
Out[249]:
AAPL 0.386817
GOOG 0.405099
IBM 1.000000
MSFT 0.499764
dtype: float64
傳入axis='columns'即可按行進(jìn)行計(jì)算现斋。無論如何喜最,在計(jì)算相關(guān)系數(shù)之前,所有的數(shù)據(jù)項(xiàng)都會(huì)按標(biāo)簽對(duì)齊步责。
文章代碼引用自:《利用Python進(jìn)行數(shù)據(jù)分析·第2版》第5章 Pandas入門
作者:SeanCheney
感謝SeanCheney同意引用返顺。