Преобразование списков с плавающей точкой для панд - PullRequest
0 голосов
/ 04 октября 2018

Я впервые задаю вопрос, и я новичок в python.Я попытался подключить «list1» и «list2» к «x» и «y» в приведенной ниже формуле, и произошла ошибка, например

(«Не удалось преобразовать 1.16041.16001.16351.17491.17661.17501.17461.17471.1779 в числовой ')

import numpy as np
import pandas as pd
from scipy import stats
from pandas import *

list1 = ['1.1575', '1.1604', '1.1600', '1.1635', '1.1749', '1.1766', '1.1750', '1.1746', '1.1747', '1.1779']
list2 = ['6604.11341382', '6688.01480364', '6668.72146384', '6553.56452794', '6499.18728419', '6629.18122154', '6724.42744078', '6737.98000228', '6755.31691870', '6556.66000350']

# Method 2 (Correlation, p-value)
def pcc(x,y):
    x = x - x.mean(0)
    y = y - y.mean(0)
    x /= x.std(0)
    y /= y.std(0)
    return np.mean(x*y)

x = np.array(x)
y = np.array(y)
print(linregress(x,y))

Ответы [ 3 ]

0 голосов
/ 04 октября 2018
[float(i) for i in list1]

создает новый список со значениями с плавающей запятой.

Надеюсь, что его справка.

0 голосов
/ 04 октября 2018
import numpy as np
list1 = ['1.1575', '1.1604', '1.1600', '1.1635', '1.1749', '1.1766', '1.1750', '1.1746', '1.1747', '1.1779']
list2 = ['6604.11341382', '6688.01480364', '6668.72146384', '6553.56452794', '6499.18728419', '6629.18122154', '6724.42744078', '6737.98000228', '6755.31691870', '6556.66000350']

list1=list(map(float,list1)) #convert into float
list2=list(map(float,list2))
# Method 2 (Correlation, p-value)
def pcc(x,y):
    x = x - x.mean(0)
    y = y - y.mean(0)
    x /= x.std(0)
    y /= y.std(0)
    return np.mean(x*y)
print(pcc(np.array(list1),np.array(list2))) # pass numpy array

Вывод:

0.04183992052616166

ИЛИ Лучше хранить все в массиве

import numpy as np
list1 = ['1.1575', '1.1604', '1.1600', '1.1635', '1.1749', '1.1766', '1.1750', '1.1746', '1.1747', '1.1779']
list2 = ['6604.11341382', '6688.01480364', '6668.72146384', '6553.56452794', '6499.18728419', '6629.18122154', '6724.42744078', '6737.98000228', '6755.31691870', '6556.66000350']

list1 = np.array(list1).astype(np.float) # or np.asarray(list1, dtype=np.float64)
list2 = np.array(list2).astype(np.float)
# Method 2 (Correlation, p-value)
def pcc(x,y):
    x = x - x.mean(0)
    y = y - y.mean(0)
    x /= x.std(0)
    y /= y.std(0)
    return np.mean(x*y)
print(pcc(list1,list2)) # directly pass numpy float arrays

Вывод

0.04183992052616166
0 голосов
/ 04 октября 2018

Попробуйте добавить нижеприведенную инициализацию list1 и 2:

list1 = [ float(z) for z in list1 ]
list2 = [ float(z) for z in list2 ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...