You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python按年份与季节计算海域温度平均值并优化R²值?

解决方案:按季节分组计算均值并分别拟合趋势

1. 数据加载与分组均值计算

假设你的数据集为CSV格式,使用pandas加载后,按年份+季节分组计算温度均值,确保每个年份的春、秋季各有一个独立的均值,避免不同季节数据混杂。

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression

# 加载数据集(替换为你的文件路径)
df = pd.read_csv('temperature_data.csv')

# 按年份和季节分组,计算温度均值
seasonal_mean = df.groupby(['年份', '季节'])['温度'].mean().reset_index()

# 拆分春季、秋季数据集
spring_data = seasonal_mean[seasonal_mean['季节'] == '春季']
autumn_data = seasonal_mean[seasonal_mean['季节'] == '秋季']

2. 分季节拟合趋势并计算R²

对春、秋季数据分别做线性回归拟合,单独计算每个季节的R²值,避免跨季节数据干扰导致拟合精度下降。

# 定义线性拟合工具函数
def fit_trend(x, y):
    x = x.values.reshape(-1, 1)
    model = LinearRegression()
    model.fit(x, y)
    y_pred = model.predict(x)
    r_squared = model.score(x, y)
    return model.coef_[0], model.intercept_, y_pred, r_squared

# 拟合春季温度趋势
spring_slope, spring_intercept, spring_pred, spring_r2 = fit_trend(spring_data['年份'], spring_data['温度'])
# 拟合秋季温度趋势
autumn_slope, autumn_intercept, autumn_pred, autumn_r2 = fit_trend(autumn_data['年份'], autumn_data['温度'])

3. 可视化分季节趋势图

用不同颜色区分春、秋季的散点和拟合线,同时标注各自的R²值,清晰展示两个季节的温度变化趋势。

plt.figure(figsize=(10, 6))

# 绘制春季散点与拟合线
plt.scatter(spring_data['年份'], spring_data['温度'], color='forestgreen', label=f'春季 (R²={spring_r2:.3f})')
plt.plot(spring_data['年份'], spring_pred, color='forestgreen', linestyle='--')

# 绘制秋季散点与拟合线
plt.scatter(autumn_data['年份'], autumn_data['温度'], color='darkorange', label=f'秋季 (R²={autumn_r2:.3f})')
plt.plot(autumn_data['年份'], autumn_pred, color='darkorange', linestyle='--')

plt.xlabel('年份')
plt.ylabel('海域温度')
plt.title('1963-2021年春秋季海域温度变化趋势')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()

关键注意点

  • 核心逻辑是拆分季节分组计算均值,从根源解决同一年份不同季节数据混杂导致R²偏低的问题。
  • 若数据集季节字段为英文(如Spring/Autumn),修改代码中季节判断的匹配字符串即可。
  • 如需更复杂的趋势拟合(如多项式回归),替换LinearRegression为对应模型即可。

内容的提问来源于stack exchange,提问作者Christina Ziccardi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:45:32