3

我有一个数据透视表,我想从中计算每天之间的成对距离矩阵。由于我的数据集包含 NaN 值,因此当我使用 sklearn 成对距离时,它对我产生了影响。

我喜欢是否有办法克服这个问题?

数据透视表 X 是这样的:

 time   04:45:00    05:00:00   05:15:00
 date     
 01-01    61           NaN        44
 01-02    23            70         NaN

from sklearn.metrics.pairwise import pairwise_distances
pairwise_distances(X)

我面临以下错误:

ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 而言太大的值

4

1 回答 1

0

简单的解决方法将用一些估算值填充这些NaN值。它可以是0, mean, 沿行向前/向后填充值等。

试试这样的东西!

d = """ time   04:45:00    05:00:00   05:15:00
 date     
 01-01    61           NaN        44
 01-02    23            70        NaN
"""


import pandas as pd
from io import StringIO

df = pd.read_csv(StringIO(d), sep='\s+')
data = df.iloc[1:,1:].fillna(method='ffill', axis=1)
data
    04:45:00    05:00:00    05:15:00
1   61.0    61.0    44.0
2   23.0    70.0    70.0

现在应用pairwise_distances

from sklearn.metrics.pairwise import pairwise_distances
pairwise_distances(data)

# array([[ 0.        , 46.91481642],
#       [46.91481642,  0.        ]])

于 2019-07-18T17:54:32.263 回答