нормализуя мой набор данных временных рядов, затем устанавливая метку времени в качестве индекса - PullRequest
0 голосов
/ 29 апреля 2020

здесь мой код пытается нормализовать мой набор данных, код работает, но проблема в том, что когда я создаю новый фрейм данных (последняя строка моего кода), он не включает столбец метки времени, потому что он просто включает масштабированные значения .

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 с временными метками и масштабированными значениями в нем

1 Ответ

1 голос
/ 29 апреля 2020

Вы должны установить индекс нового информационного кадра, который вы создали.

То, что возвращает 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

Это основные манипуляции с 1020 * pandas, ответы на которые вы должны найти в их документации.

...