Почему я получаю значение Nan при попытке распечатать эту переменную? - PullRequest
0 голосов
/ 25 мая 2020

Это мой код:

import numpy as np
import pandas as pd

df = pd.read_csv('dataset2.csv')
x = []
y = []

# Populate x and y values from csv :

for z in df['x'][0:]:
    x.append(float(z))

for z in df['y'][0:]:
    y.append(float(z))

x_mean = float(np.array(x).mean())
y_mean = float(np.array(y).mean())

num = 0.0
den = 0.0

print("type of num",type(num))

for z in range(len(x)):
    num += float(y[z]) - float(y_mean)
    den += float(x[z]) - float(x_mean)

print("type of num",type(num))

print("Numerator is",num)
print("Denominator is",den)

Далее в этом пункте на протяжении всего моего кода я получаю значения Nan.

Output :
type of num <class 'float'>
type of num <class 'float'>
Numerator is nan
Denominator is 1.8836487925000256e-11

Process finished with exit code 0

файл dataset2.csv: dataset2 .csv

Я пытался принудительно преобразовывать типы с плавающей запятой буквально везде, но безрезультатно.

Ответы [ 2 ]

0 голосов
/ 25 мая 2020

Похоже, в вашем наборе данных есть значение NaN. df.info () возвращает:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 700 entries, 0 to 699
Data columns (total 2 columns):
x    700 non-null float64
y    699 non-null float64
dtypes: float64(2)
memory usage: 11.0 KB

Если вы можете заменить NaN нулями, вы можете добавить это:

y = np.nan_to_num(y)

После этого шага:

for z in df['y'][0:]:
    y.append(float(z))

Я проверил ваш код после этого изменения и получил следующий результат:

type of num <class 'float'>
type of num <class 'float'>
Numerator is -2.4726887204451486e-12
Denominator is 1.8836487925000256e-11
0 голосов
/ 25 мая 2020

Согласно вашему исходному коду:

num += float(y[z]) - float(y_mean)

num зависит от двух переменных, вы должны распечатать их или добавить чек:

if math.isnan(y[z]) or math.isnan(y_mean) :
    # sound the alarm
...