Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算稀疏向量之间的距离_Python_Pandas - Fatal编程技术网

Python 计算稀疏向量之间的距离

Python 计算稀疏向量之间的距离,python,pandas,Python,Pandas,我想计算两个向量之间的余弦(scipy)距离。我最初为每个人提供了一个带有“类别”和值的数据框 我想使用向量计算人与人之间的距离,向量值按类别索引 我可以通过如下方式创建一个透视表来实现这一点: pivot = df.pivot_table(index=['person'], columns='category', values='value', aggfunc='sum', fill_value=0) index person A B C D E F 0 1

我想计算两个向量之间的余弦(scipy)距离。我最初为每个人提供了一个带有“类别”和的数据框

我想使用向量计算人与人之间的距离,向量值按类别索引

我可以通过如下方式创建一个透视表来实现这一点:

pivot = df.pivot_table(index=['person'], columns='category', values='value', aggfunc='sum', fill_value=0)

index person  A  B  C  D  E  F
0          1  1  1  1  0  0  0
1          2  0  1  0  1  0  0
2          3  0  0  0  0  1  1
3          4  0  0  0  1  0  1
但是,我不想这样做(我正在处理大向量,因此pd.pivot_表可能需要一些时间)

如何使用df中的原始“稀疏”格式执行此操作?

尝试以下操作:

In [30]: pd.crosstab(df.person, df.category).reset_index().rename_axis(None, 1)
Out[30]:
  person  A  B  C  D  E  F
0      1  1  1  1  0  0  0
1      2  0  1  0  1  0  0
2      3  0  0  0  0  1  1
3      4  0  0  0  1  0  1

从何处以及如何加载数据?原始数据来自csv或txr文件,因此我使用pd.read\u csv创建原始数据帧。您可以提供一个具有稀疏数据类型列的可复制样本吗?您的数据来自csv文件。很可能加载过程中最慢的部分就是从这种低效的格式加载数据。如果是我,我会在加载时进行转换。@MaxU也许我不应该说我有一个“稀疏向量”。我所拥有的就是我在df中展示的。
In [30]: pd.crosstab(df.person, df.category).reset_index().rename_axis(None, 1)
Out[30]:
  person  A  B  C  D  E  F
0      1  1  1  1  0  0  0
1      2  0  1  0  1  0  0
2      3  0  0  0  0  1  1
3      4  0  0  0  1  0  1