处理 NaN 的成对距离
Posted
技术标签:
【中文标题】处理 NaN 的成对距离【英文标题】:Pairwise Distance Dealing with NaNs 【发布时间】:2019-11-24 22:17:31 【问题描述】:我有一个数据透视表,我想从中计算每天之间的成对距离矩阵。由于我的数据集包含 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: Input conains NaN, infinity or a value too large for dtype('float64')
【问题讨论】:
【参考方案1】:简单的解决方法是用一些估算值填充那些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. ]])
【讨论】:
感谢您的回复,我正在寻找一种方法来忽略 NaN 而不是归咎于它们... @amirhossein,您找到解决方案了吗?以上是关于处理 NaN 的成对距离的主要内容,如果未能解决你的问题,请参考以下文章