Я получаю сообщение об ошибке при использовании imputer = imputer.fit (X [:, 1: 3]) ValueError: не удалось преобразовать строку в число с плавающей точкой: - PullRequest
0 голосов
/ 12 февраля 2019

Итак, я делаю предварительную обработку данных (заполнение пропущенных значений средними значениями), а следующий код:

Примечание. Вчера все работало должным образом. Это дает мне эту ошибку сегодня

Я получаю следующую ошибку, когда выполняю imputer = imputer (x [:, 1: 3])

    imputer = imputer.fit(X[:, 1:3])
Traceback (most recent call last):

  File "<ipython-input-8-1edbdae0a80f>", line 1, in <module>
    imputer = imputer.fit(X[:, 1:3])

  File "C:\Users\super\Anaconda3\lib\site-packages\sklearn\preprocessing\imputation.py", line 158, in fit
    force_all_finite=False)

  File "C:\Users\super\Anaconda3\lib\site-packages\sklearn\utils\validation.py", line 527, in check_array
    array = np.asarray(array, dtype=dtype, order=order)

  File "C:\Users\super\Anaconda3\lib\site-packages\numpy\core\numeric.py", line 501, in asarray
    return array(a, dtype, copy=False, order=order)

ValueError: could not convert string to float: 

Ниже приведены данные

Country Age Salary  Purchased
France  44  72000   No
Spain   27  48000   Yes
Germany 30  54000   No
Spain   38  61000   No
Germany 40      Yes
France  35  58000   Yes
Spain       52000   No
France  48  79000   Yes
Germany 50  83000   No
France  37  67000   Yes

и здесьмой код:

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

# Importing the dataset
dataset = pd.read_csv('Data.csv')
X = dataset.iloc[:, :-1].values
y = dataset.iloc[:, 3].values

# Taking care of missing data
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values = np.nan, strategy = 'mean', axis = 0)
imputer = imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])</code>

`

1 Ответ

0 голосов
/ 12 февраля 2019

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

import pandas as  pd
import numpy as np

df = pd.DataFrame(data={
    'Country': [
        'France',
        'Spain',
        'Germany',
        'Spain',
        'Germany',
        'France',
        'Spain',
        'France',
        'Germany',
        'France'
    ],
    'Age': [
        44,
        27,
        30,
        38,
        40,
        35,
        np.nan,
        48,
        50,
        37
    ],
    'Salary': [
        72000,
        48000,
        54000,
        61000,
        np.nan,
        58000,
        52000,
        79000,
        83000,
        67000
    ],
    'Purchased': [
        'No',
        'Yes',
        'No',
        'No',
        'Yes',
        'Yes',
        'No',
        'Yes',
        'No',
        'Yes'
    ]
})

df['Age'] = df['Age'].fillna(value=df['Age'].median())
df['Salary'] = df['Salary'].fillna(value=df['Salary'].median())
print(df) 

и это даст вам:

    Age  Country Purchased   Salary
0  44.0   France        No  72000.0
1  27.0    Spain       Yes  48000.0
2  30.0  Germany        No  54000.0
3  38.0    Spain        No  61000.0
4  40.0  Germany       Yes  61000.0
5  35.0   France       Yes  58000.0
6  38.0    Spain        No  52000.0
7  48.0   France       Yes  79000.0
8  50.0  Germany        No  83000.0
9  37.0   France       Yes  67000.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...