什么是时间序列?
时间序列数据是指按照时间顺序收集的数据,每个数据点都与一个特定的时间点相关联。这些数据点通常按照均匀的时间间隔(如每日、每周、每月等)进行测量和记录。例如,每天的股票价格、每月的销售额、每年的人口总数等都是时间序列数据的例子。
时间序列分析的相关概念
1、趋势:趋势是时间序列数据中长期的上升或下降模式。例如,一个公司的年销售额可能会显示出持续增长的趋势。
2、季节性:季节性是时间序列数据中的周期性波动,这些波动通常与季节或其他固定的时间间隔有关。例如,零售业的销售额可能在节假日期间显著增加。
3、周期性:周期性是时间序列数据中的波动,这些波动的周期不固定,与季节性不同。例如,经济周期就是一种周期性。
4、随机(或不规则)波动:这是时间序列中不可预测的部分,不能被趋势、季节性或周期性解释。
5、自相关性:自相关性是时间序列中相邻观察值之间的相关性。例如,今天的股票价格可能与昨天的股票价格高度相关。
6、平稳性:平稳时间序列的统计特性(如均值、方差等)不随时间变化。许多时间序列模型都假设数据是平稳的,或可以通过某种转换(如差分)变为平稳。
7、滞后值:滞后值是过去的数据值。例如,在t-1时刻的值就是在t时刻的滞后值。滞后值在许多时间序列模型(如自回归模型)中都有应用。
代码——电力需求预测
# 1. 导入需要用到的相关库
# 导入 pandas 库,用于数据处理和分析
import pandas as pd
# 导入 numpy 库,用于科学计算和多维数组操作
import numpy as np
# 2. 读取训练集和测试集
# 使用 read_csv() 函数从文件中读取训练集数据,文件名为 'train.csv'
train = pd.read_csv('./data/data283931/train.csv')
# 使用 read_csv() 函数从文件中读取测试集数据,文件名为 'test.csv'
test = pd.read_csv('./data/data283931/test.csv')
# 3. 计算训练数据最近11-20单位时间内对应id的目标均值
target_mean = train[train['dt']<=20].groupby(['id'])['target'].mean().reset_index()
# 4. 将target_mean作为测试集结果进行合并
test = test.merge(target_mean, on=['id'], how='left')
# 5. 保存结果文件到本地
test[['id','dt','target']].to_csv('submit.csv', index=None)
这里解释一下3
将训练集数据中日期在20日以及20日之前(1-10日的数据)的数据通过房屋号进行分组,然后计算分组后的每个组的target平均值(电力用量平均值)---此处采用的是简单平均法,用10天用电量的平均值,预测未来10天的电量需求,最后把训练集数据和预测的数据集合并起来。