当前位置: 首页 > 知识库问答 >
问题:

使用scipy.sparse从pandas数据帧创建稀疏矩阵

贺海
2023-03-14

我有一个带有两个变量X和Y的pandas数据帧(大约1M行),并且希望使用scipy,sparse创建一个稀疏矩阵。输出应该是一个n x m矩阵,如果x=x和Y=Y,则其条目为1。
下面是数据结构的示例

import pandas as pd
data = [[1256, 10], [3087, 15], [2199, 14], [2199, 10], [1256, 15], [3087, 14], [1056, 10], [408, 15], [1256, 14]]
  
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['X', 'Y'])
  
# print dataframe.
df

所需的输出为

       10  15  14
1256    1   1   1
3087    0   1   0
2199    1   0   1
3087    0   0   1
1056    1   0   0
408     0   1   0

提前致谢

共有1个答案

景宏朗
2023-03-14

您只需使用value_counts()unstack()fillna()astype()方法即可完成此操作:

result=df.value_counts().unstack().fillna(0).astype(int)
 类似资料:
  • 问题内容: 我正在从Pandas数据框创建矩阵,如下所示: 然后使用以下公式生成稀疏矩阵: 从df直线到稀疏矩阵有什么办法吗? 提前致谢。 问题答案: 是一个numpy数组,以这种方式访问​​值总是比快。 您可能需要先进行移调,例如。在DataFrames中,列为轴0。

  • 稀疏矩阵(Sparse Matrix) 注:压缩存储的矩阵可以分为特殊矩阵和稀疏矩阵。对于那些具有相同元素或零元素在矩阵中分布具有一定规律的矩阵,被称之为特殊矩阵。对于那些零元素数据远远多于非零元素数目,并且非零元素的分布没有规律的矩阵称之为稀疏矩阵。 1. 稀疏矩阵的概念 在矩阵中,若数值为0的元素数目远远多于非0元素的数目时,则称该矩阵为稀疏矩阵。与之相反,若非0元素数目占大多数时,则称该矩阵

  • 我正在实现一个稀疏矩阵类,使用映射向量来存储数据(映射表示矩阵的一行,其中键是列的索引,值是该位置的maitrix的值)我已经编写了计算行列式的函数,但我不知道是否有一种方法可以计算这种节省的时间(因为矩阵是稀疏的,大多数值为零)在这里我的实现: 这是类接口 我计算行列式的方式是什么?假设运算符()以这种方式重载 提前感谢您的帮助

  • 2.5.1 介绍 (密集) 矩阵是: 数据对象 存储二维值数组的数据结构 重要特征: 一次分配所有项目的内存 通常是一个连续组块,想一想Numpy数组 快速访问个项目(*) 2.5.1.1 为什么有稀疏矩阵? 内存,增长是n**2 小例子(双精度矩阵): In [2]: import numpy as np import matplotlib.pyplot as plt x = np.li

  • 问题内容: 我正在尝试创建一个矩阵以显示Pandas数据框中的行之间的差异。 我要这样: 要变成这样(差异垂直): 这是可以通过内置函数实现的,还是需要构建一个循环以获得所需的输出?谢谢你的帮助! 问题答案: 这是numpy广播的标准用例: 我们使用values属性访问基础的numpy数组,并引入了一个新轴,因此结果是二维的。 您可以将其与原始系列结合使用: 由于@Divakar,也可以使用以下命

  • 问题内容: 我注意到Pandas现在已支持稀疏矩阵和数组。目前,我创建这样的: 有没有办法用或创建一个?转换为密集格式会严重破坏RAM。谢谢! 问题答案: 不支持直接转换ATM。欢迎捐款! 试试这个,在内存上应该没问题,因为SpareSeries很像csc_matrix(用于1列),而且空间效率很高