[英]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.