我有两个来自Excel的数据框,如下所示。第一个数据帧具有多索引标头。
我正在尝试根据货币(即KRW,THB,USD,INR)找到数据框中各列与相应数据框之间的相关性。目前,我正在循环遍历每一列,在找到相关性之前按索引和相应的标头进行匹配。
for stock_name in index_data.columns.get_level_values(0):
stock_prices = index_data.xs(stock_name, level=0, axis=1)
stock_prices = stock_prices.dropna()
fx = currency_data[stock_prices.columns.get_level_values(1).values[0]]
fx = fx[fx.index.isin(stock_prices.index)]
merged_df = pd.merge(stock_prices, fx, left_index=True, right_index=True)
merged_df[0].corr(merged_df[1])
还有其他类似的方法吗?
答案 0 :(得分:1)
因此,您希望找到股价与其相关货币之间的相关性。 (或股价与所有货币的相关性?)
ggplot()+ geom_line(data=df,aes(x=fecha,y=result_NS))+
geom_point(aes(x = fecha, y = result_PP), data = fil_PP_LP, colour ="red")+
geom_point(aes(x = fecha, y = result_NS), data = fil_PP_LLP, colour = "blue")+ ylab("Nivel de Stock")
这是它的样子,由于该数据是随机的,因此在此数据上计算相关性没有多大意义。
# dummy data
date_range = pd.date_range('2019-02-01', '2019-03-01', freq='D')
stock_prices = pd.DataFrame(
np.random.randint(1, 20, (date_range.shape[0], 4)),
index=date_range,
columns=[['BYZ6DH', 'BLZGSL', 'MBT', 'BAP'],
['KRW', 'THB', 'USD', 'USD']])
fx = pd.DataFrame(np.random.randint(1, 20, (date_range.shape[0], 3)),
index=date_range, columns=['KRW', 'THB', 'USD'])
使用apply计算具有相同货币的列之间的相关性。
>>> print(stock_prices.head())
BYZ6DH BLZGSL MBT BAP
KRW THB USD USD
2019-02-01 15 10 19 19
2019-02-02 5 9 19 5
2019-02-03 19 7 18 10
2019-02-04 1 6 7 18
2019-02-05 11 17 6 7
>>> print(fx.head())
KRW THB USD
2019-02-01 15 11 10
2019-02-02 6 5 3
2019-02-03 13 1 3
2019-02-04 19 8 14
2019-02-05 6 13 2