Skip to content

输入数据集合

导入CSV

import pandas as pd

df = pd.read_csv(
    "book_sales.csv",
    index_col='Date',
    parse_dates=['Date'],
)

返回一个 Dataframe 类型

  • index_colDate 这一列设置为 DataFrame 的索引(行标签)
  • parse_datesDate 这一列解析为 日期类型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.index index的那一列

去除一列

df.drop('Paperback', axis=1)
X = df.drop(columns=["quality"]) # 或者
  • axis=1 表示删除的是 (如果是 axis=0 表示删除行)。
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)

生成一个从 0n-1 的整数数组。