内容简介:翻译自:https://stackoverflow.com/questions/10791661/how-do-i-discretize-values-in-a-pandas-dataframe-and-convert-to-a-binary-matrix
我的意思是这样的:
我有一个DataFrame,列可以是分类或名义.对于每个观察(行),我想生成一个新行,其中变量的每个可能值现在都是它自己的二进制变量.例如,这个矩阵(第一行是列标签)
'a' 'b' 'c' one 0.2 0 two 0.4 1 two 0.9 0 three 0.1 2 one 0.0 4 two 0.2 5
会被转换成这样的东西:
'a' 'b' 'c' one two three [0.0,0.2) [0.2,0.4) [0.4,0.6) [0.6,0.8) [0.8,1.0] 0 1 2 3 4 5 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1
初始矩阵中的每个变量(列)都被分成所有可能的值.如果它是分类的,那么每个可能的值将成为新列.如果它是一个浮点数,则值会以某种方式进行分箱(例如,总是分成10个箱).如果它是一个int,那么它可以是每个possibel int值,或者也可能是binning.
仅供参考:在我的实际应用中,该表最多有200万行,完整的“扩展”矩阵可能有数百列.
有没有简单的方法来执行此操作?
另外,我也愿意跳过这一步,因为我真的想要计算一个Burt表(它是交叉表的对称矩阵).是否有一种简单的方法可以使用交叉表函数执行类似的操作?否则,计算交叉列表只是一个简单的矩阵乘法.
你可以使用某种广播:
In [58]: df Out[58]: a b c 0 one 0.2 0 1 two 0.4 1 2 two 0.9 0 3 three 0.1 2 4 one 0.0 4 5 two 0.2 5 In [41]: (df.a.values[:,numpy.newaxis] == df.a.unique()).astype(int) Out[41]: array([[1, 0, 0], [0, 1, 0], [0, 1, 0], [0, 0, 1], [1, 0, 0], [0, 1, 0]]) In [54]: ((0 <= df.b.values[:,numpy.newaxis]) & (df.b.values[:,numpy.newaxis] < 0.2)).astype(int) Out[54]: array([[0], [0], [0], [1], [1], [0]]) In [59]: (df.c.values[:,numpy.newaxis] == df.c.unique()).astype(int) Out[59]: array([[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [1, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]])
然后与pandas.concat或类似的东西一起加入所有部分.
翻译自:https://stackoverflow.com/questions/10791661/how-do-i-discretize-values-in-a-pandas-dataframe-and-convert-to-a-binary-matrix
以上所述就是小编给大家介绍的《python – 如何对pandas DataFrame中的值进行离散化并转换为二进制矩阵?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 分析实现-离散请求
- 用R语言实现数据离散化
- OpenCV 离散傅里叶变换
- 从离散到分布,盘点常见的文本表示方法
- 强化学习:如何处理大规模离散动作空间
- Python连续数据离散化处理和pandas.cut函数用法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
MySQL入门很简单
黄缙华 / 清华大学出版社 / 2011-1 / 59.50元
《MySQL入门很简单》从初学者的角度出发,由浅入深,循序渐进地介绍了mysql数据库应用与开发的相关知识。书中提供了大量操作mysql数据库的示例,还提供了大量实例和上机实践内容,供读者演练。《MySQL入门很简单》附带1张dvd光盘,内容为与《MySQL入门很简单》内容完全配套的多媒体教学视频和《MySQL入门很简单》涉及的源代码。 《MySQL入门很简单》共分5篇。第1篇介绍数据库的基......一起来看看 《MySQL入门很简单》 这本书的介绍吧!
随机密码生成器
多种字符组合密码
HTML 编码/解码
HTML 编码/解码