# 注:该代码块读取远程平台数据文件,且变量名与下方代码不匹配,渲染时无法正确执行
# ⚠️ 平台原始代码 - 请原样输入至教学平台(注释除外),平台才会判定答案正确
import pandas as pd # 导入Pandas数据分析库
#读取黄金期货历史数据.csv和美国十年期国债收益率历史数据.csv
df1 = pd.read_csv('https://huoran.oss-cn-shenzhen.aliyuncs.com/20230411/csv/1645737586192834560.csv', thousands=',')
# 从CSV文件读取数据存入df2
df2 = pd.read_csv('https://huoran.oss-cn-shenzhen.aliyuncs.com/20230411/csv/1645737641935134720.csv', thousands=',')
#将index设置为日期,并转换为datetime类型
df1.set_index('日期', inplace=True)
df1.index = pd.to_datetime(df1.index) # 转换为日期时间格式
df2.set_index('日期', inplace=True) # 将日期列设为df2数据框的索引
df2.index = pd.to_datetime(df2.index) # 转换为日期时间格式
#数据倒转
df1 = df1.iloc[::-1]
df2 = df2.iloc[::-1] # 将数据按逆序排列
#提取黄金期货历史数据.csv中的收盘价,并转换为float类型
df1 = df1['收盘']
df1 = df1.astype(float) # 转换数据类型
#提取美国十年期国债收益率历史数据.csv中的收盘价,并转换为float类型
df2 = df2['收盘']
df2 = df2.astype(float) # 转换数据类型
#计算相关系数
result = df1.corr(df2)
print(result) # 输出分析结果数据pd.read_csv() 从URL加载远程数据set_index('日期') 将日期列设为行索引pd.to_datetime() 将字符串转为日期格式iloc[::-1] 将时间序列按正序排列df1.corr(df2) 计算Pearson相关系数\[ \rho = \frac{\text{Cov}(X, Y)}{\sigma_X \times \sigma_Y} \]
# 注:该代码块依赖的数据来自上方平台任务代码块,因其未执行,本块也无法执行
print('\n相关性解读:')
if correlation < -0.5:
# 强负相关:符合金融理论预期
print(' 强负相关,符合理论预期')
print(' 国债收益率上升时,黄金价格下跌')
elif correlation < -0.3:
# 中度负相关:方向正确但关系不强
print(' 中度负相关')
print(' 大部分时候符合负相关关系')
elif correlation < 0.3:
# 弱相关:其他因素影响更大
print(' 弱相关')
print(' 其他因素影响更大')
else:
# 正相关:与理论预期相反
print(' 正相关或接近0')
print(' 不符合经典理论,可能有其他主导因素')if correlation < -0.5:强负相关,完全符合理论elif correlation < -0.3:中度负相关,方向正确elif correlation < 0.3:弱相关,其他因素主导else(≥ 0.3):正相关,与经典理论相悖核心思路:根据相关系数的阈值区间,给出不同的经济学解释
# 注:该代码块依赖的数据来自上方平台任务代码块,因其未执行,本块也无法执行
fig, ax1 = plt.subplots(figsize=(14, 6))
# 左轴:黄金价格(蓝色)
ax1.plot(gold_price.index, gold_price.values,
'b-', label='黄金价格', linewidth=2)
ax1.set_xlabel('日期', fontsize=12)
ax1.set_ylabel('黄金价格', fontsize=12, color='b')
ax1.tick_params(axis='y', labelcolor='b')
ax1.legend(loc='upper left')
# 右轴:国债收益率(红色)
ax2 = ax1.twinx()
ax2.plot(treasury_yield.index, treasury_yield.values,
'r-', label='国债收益率', linewidth=2)
ax2.set_ylabel('国债收益率(%)', fontsize=12, color='r')
ax2.tick_params(axis='y', labelcolor='r')
ax2.legend(loc='upper right')
plt.title('黄金价格与国债收益率趋势', fontsize=14)
fig.tight_layout()
plt.show()plt.subplots():创建画布和主坐标轴ax1.twinx():创建共享X轴的次Y轴| 机制 | 传导路径 | 效果 |
|---|---|---|
| 替代效应 | 国债收益率↑ → 国债吸引力↑ | 黄金需求↓ |
| 机会成本 | 国债收益率↑ → 持有黄金成本↑ | 金价承压 |
| 美元汇率 | 国债收益率↑ → 美元升值 | 金价下跌 |
这些特殊情况可能导致黄金与国债收益率同向变动
Series.corr() 方法可快速计算Pearson相关系数if-elif-else 结构用于对相关系数进行区间判断twinx() 双Y轴技术解决量纲差异可视化问题[商业大数据分析与应用]