导入模块
import numpy as np
import pandas as pd
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()})
returns = price.pct_change()
returns.tail()
计算相关系数、协方差
# 计算两个列属性的相关系数
returns['MSFT'].corr(returns['IBM'])
# 计算协方差
returns['MSFT'].cov(returns['IBM'])
# 可以使用带点的属性方式
returns.MSFT.corr(returns.IBM)
image.png
计算某个DF数据的协方差和相关系数
print(returns.corr)
returns.cov
returns.corrwith(returns.IBM)
returns.corrwith(volume)
returns.corrwith(volume, axis="columns").head()
image.png
唯一值、值计数和成员资格
obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
obj
image.png
唯一值unique
uniques = obj.unique()
uniques
array(['c', 'a', 'd', 'b'], dtype=object)
>>obj.value_counts()
a 3
c 3
b 2
d 1
dtype: int64
>>pd.value_counts(obj.values, sort=False)
c 3
a 3
b 2
d 1
dtype: int64
mask = obj.isin(['b', 'c'])
mask
image.png
to_match = pd.Series(['c', 'a', 'b', 'b', 'c', 'a'])
unique_vals = pd.Series(['c', 'b', 'a'])
pd.Index(unique_vals).get_indexer(to_match)
array([0, 2, 1, 1, 0, 2], dtype=int64)
pd.Index(unique_vals).get_indexer(to_match)
array([0, 2, 1, 1, 0, 2], dtype=int64)
data = pd.DataFrame({'Qu1': [1, 3, 4, 3, 4],
'Qu2': [2, 3, 1, 2, 3],
'Qu3': [1, 5, 2, 4, 4]})
data
image.png
apply函数用法
result = data.apply(pd.value_counts).fillna(0)
result
image.png