Создание редактируемой копии набора данных с сохранением оригинала без изменений, используя Python - PullRequest
1 голос
/ 23 апреля 2020

Я недавно начал изучать машинное обучение и сосредоточился на стадии предварительной обработки. Я создаю блокнот Jupyter, в котором поэтапно описываются этапы предварительной обработки. В исходном наборе данных есть некоторые пропущенные значения, которые я заменю средним значением. Так как это пошаговая записная книжка, которую я создаю, я хотел бы иметь возможность сохранять исходный набор данных в такте, имея при этом копию набора данных, которая будет обновляться на разных этапах процесса, т.е. отсутствующие ячейки будут заменены на значения величин. Посмотрите код ниже для того, что я сделал до сих пор. Он делает то, что я хочу сделать до сих пор, просто отсутствует скопированная часть набора данных.

Буду признателен за любые советы или ссылки на учебные пособия. Спасибо.

#libraries
import matplotlib.pyplot as plt
import numpy as np 
import pandas as pd 

from sklearn.impute import SimpleImputer

#Importing dataset
dataset = pd.read_csv('example.csv')

# Splitting the attributes into independent and dependent attributes
X = dataset.iloc[:, :-1].values # attributes to determine dependent variable
Y = dataset.iloc[:, 4].values # dependent variable / Class variable, final column


#printing and displaying dataset
print(dataset)
display(dataset.describe())

#check how many null values in dataset and output value
print('Number of null/NaN values in dataset: ',dataset.isnull().values.sum())

#show how many null values per column
print(dataset.isnull().sum())

#DEALING WITH MISSING VALUES USING MEAN
from sklearn.impute import SimpleImputer

#creating SimpleImputer object, specifying to change missing values to mean
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')

#MEAN
imputer = imputer.fit(X[:, 3:4])
X[:,3:4] = imputer.transform(X[:,3:4])

print(X)

Ответы [ 2 ]

2 голосов
/ 23 апреля 2020

Я бы предпочел использовать copy class в python, позвонив по номеру deepcopy

import copy
df_edit = copy.deepcopy(df_original)

Теперь вы можете играть с df_edit и вносить изменения без помех df_original

или

, вы можете напрямую использовать pandas модуль копирования как df_edit = df_original.copy(deep = True)

0 голосов
/ 23 апреля 2020

То есть вы просто хотите создать копию dataset, чтобы вернуться к ней позже?

Вы можете создать блок в своей записной книжке для его резервного копирования, например

dataset_backup = dataset

, а затем другой, чтобы перезаписать набор данных с помощью резервной копии набора данных

dataset = dataset_backup

Затем запустить каждый как и если вы хотите сделать резервную копию набора данных или вернуться к резервной копии

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

Это то, что вы спрашивали?

...