【问题标题】:normalizing my timeseries dataset then setting the timestamp as Index规范化我的时间序列数据集,然后将时间戳设置为索引
【发布时间】:2020-08-13 08:51:46
【问题描述】:

这是我的代码试图规范化我的数据集,代码有效,但问题是当我创建新数据框(代码的最后一行)时,它不包括时间戳列,因为它只包括缩放值.

data_consumption2 = pd.read_excel(r"C:\Users\user\Desktop\Thesis\Tarek\Parent.xlsx", sheet_name="Consumption")
data_consumption2['Timestamp'] = pd.to_datetime(data_consumption2['Timestamp'], unit='s')
data_consumption2.fillna(0,inplace=True)
data_consumption2 = data_consumption2.set_index('Timestamp')
#returns a numpy array

min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(data_consumption2.values)
data_consumption2 = pd.DataFrame(x_scaled)

我希望任何人都可以帮助我制作带有时间戳和缩放值的原始 dframe

【问题讨论】:

  • database-normalization 是关于规范化表,而不是碰巧存储在数据库中的数据集。通过点击标签来添加标签并阅读维基。
  • 请在代码问题中给出minimal reproducible example--cut & paste & runnable code,包括最小的代表性示例输入为代码;期望和实际输出(包括逐字错误消息);标签和版本;明确的规范和解释。给出您可以给出的最少代码,即您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于包含 DBMS 和 DDL(包括约束和索引)和输入为格式化为表格的代码的 R/SQL。 How to Ask 停止尝试编写您的总体目标并从给定的代码中解释您的期望以及原因。

标签: python pandas normalization


【解决方案1】:

您必须设置您创建的新数据框的索引。

min_max_scaler.fit_transform 返回的是一个缩放值的 numpy 数组(因此丢失了索引)。

所以你可以这样做:

data_consumption2 = pd.DataFrame(data=x_scaled, index=data_consumption2.index)

如果您还想检索列,也可以传递它们:

data_consumption2 = pd.DataFrame(data=x_scaled,
                                 index=data_consumption2.index, 
                                 columns=data_consumption2.columns)

DataFrame 的文档中的更多详细信息:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html

这些是 pandas 的基本操作,您应该在他们的文档中找到有关它的所有答案。

【讨论】:

  • 非常感谢,如果我也想恢复原始列名怎么办?
  • 我用附加信息编辑了答案,请不要偏离原来的问题太多:)
猜你喜欢
  • 1970-01-01
  • 2019-04-03
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多