繁体   English   中英

数据向量化(get_dummies 3列矩阵)

[英]Data vectorization (get_dummies 3 columns to matrix)

我有一个任务,必须最佳解决。 我有50个类别和10,000个商店,这些商店可以提供这些类别的产品,但所有这些都分为3列

id_store  category    qnty
    1         1        50
    1         2        32
    1         15       44
    2         1        333
    2         4        33
    2         5        15
    2         15       12
    2         35       14
    3         3        14
    ....     

必须以此为基础制作矩阵,其中行-id_store,列-类别,以及它们的交集-qnty:

id_shop/category  1   2   3   4 ...15  16... 35   36
   1              50  32  0   0    44  0     0    0
   2              333 0   0   33   12  0     14   0
   3              0   0   14  0    0   0     0    0     

您可以使用pandas ,这是专门为像您这样的数据框设计的库。 pandas文档中 ,我找到了以下示例:

>>> df = pd.DataFrame({'foo': ['one', 'one', 'one', 'two', 'two',
...                            'two'],
...                    'bar': ['A', 'B', 'C', 'A', 'B', 'C'],
...                    'baz': [1, 2, 3, 4, 5, 6],
...                    'zoo': ['x', 'y', 'z', 'q', 'w', 't']})

--

>>> df
    foo   bar  baz  zoo
0   one   A    1    x
1   one   B    2    y
2   one   C    3    z
3   two   A    4    q
4   two   B    5    w
5   two   C    6    t

--

>>> df.pivot(index='foo', columns='bar', values='baz')
bar  A   B   C
foo
one  1   2   3
two  4   5   6

您可以使用稀疏稀疏矩阵来执行此操作。 文档在这里

D = sp.sparse.coo_matrix((qnty,(id_store,category))) # creates a sparse matrix from numpy vectors (np.ndarray)

如果要使其成为密集的np.ndarray ,请使用:

D = D.toarray()

或者,如果您更喜欢numpy np.matrix类型,则只需使用:

D = D.todense()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM