输入数据集合
导入CSV
import pandas as pd
df = pd.read_csv(
"book_sales.csv",
index_col='Date',
parse_dates=['Date'],
)
返回一个 Dataframe 类型
index_col把 Date 这一列设置为 DataFrame 的索引(行标签)parse_dates把 Date 这一列解析为 日期类型(datetime),而不是普通字符串。
如果没有命名
df = pd.read_csv("data.csv", header=None, names=["sugars", "fiber", "protein", "calories"])
period
tunnel = tunnel.to_period()
默认 Pandas 使用 DatetimeIndex(时间戳,表示一个具体时刻)。
.to_period() 转换为 PeriodIndex(时间段,表示一个统计周期,比如“2020-01”表示整个 1 月)。
在一些时间序列分析场景下,PeriodIndex 更直观和方便,比如按月份、季度分析数据。
DataFrame
信息查看
df.indexindex的那一列
去除一列
df.drop('Paperback', axis=1)
X = df.drop(columns=["quality"]) # 或者
axis=1表示删除的是 列(如果是axis=0表示删除行)。
查看数据head
df.head()
显示 DataFrame 的前 5 行,方便快速查看数据内容和格式。
添加一列
df['Time'] = np.arange(len(df.index))
在 df 中新增一列 Time,内容就是上面生成的序号。
每一行对应一个按顺序递增的数字。
这样相当于给数据增加了一个“时间步”变量,可以用于建模或绘图。
向下移动shift
这常用于 时间序列分析,表示“前一期的值”(lag = 滞后值)。这样就能让模型使用过去的信息来预测未来的结果。
df['Hardcover'].shift(1)
.shift(1) 表示把这一列整体向 下移动 1 行:
- 原来第 1 行的数据会变成 NaN(因为它“前面”没有值)。
- 原来第 2 行的数据会移到第 1 行,依此类推。
取出一列
X = df.loc[:, ['Time']] # features
返回二维的DataFrame, shape: (747, 1)
y = df.loc[:, 'NumVehicles']
返回向量 Series, shape: (747,)
取出某些列
X = df[['sugars', 'fiber', 'protein']]
X = df[['sugars', 'fiber', 'protein']].values # 输入特征
y = df[['calories']].values
- values 可以转换成array
把数组转换成竖着的vector
在 PyTorch 中,损失函数要求预测值和真实标签的形状一致 因为:
y_pred的形状是[3, 1]y的形状是[3]
它们不能直接相减。需要reshape
X.reshape(-1, 1)
-1表示 “自动推断这维度的大小”1表示 “新的一维长度是 1”
Numpy
生成数据
np.arange(n)
生成一个从 0 到 n-1 的整数数组。