python - 如何离散化 pandas DataFrame 中的值并转换为二进制矩阵?

标签 python pandas dataframe

我的意思是这样的:

我有一个 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

初始矩阵中的每个变量(列)都被分箱到所有可能的值中。如果它是分类的,那么每个可能的值都会成为一个新列。如果它是一个 float ,那么这些值会以某种方式分箱(比如,总是分成 10 个分箱)。如果它是一个 int,那么它可以是所有可能的 int 值,或者也可以是 binning。

仅供引用:在我的实际应用程序中,表格最多有 200 万行,而完整的“扩展”矩阵可能有数百列。

有没有简单的方法来执行这个操作?

另外,我也愿意跳过这一步,因为我实际上是在尝试计算 Burt 表(这是交叉表的对称矩阵)。有没有一种简单的方法可以用 crosstab 函数做类似的事情?否则,计算交叉表只是一个简单的矩阵乘法。

最佳答案

请注意,我已经实现了新的 cutqcut 函数来离散化连续数据:

http://pandas-docs.github.io/pandas-docs-travis/basics.html#discretization-and-quantiling

关于python - 如何离散化 pandas DataFrame 中的值并转换为二进制矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10791661/

相关文章:

python - 将 Pandas DataFrame 保存到 CSV 文件,无需添加额外的双引号

python - 使用 pandas.read_json 时出现 ValueError

python - Django url 是如何匹配的?

javascript - Jupyter notebook 用不同的颜色为不同的括号着色

Python Pandas read_csv 仅从 CSV 文件中读取单行

python - 如何提高HDF5读取数据的性能?

dataframe - 使用 Julia,我如何读取多个 CSV 并合并列

r - Python Pandas 中是否有像 index_col 这样的 DataFrames 的 R 方法?

python - matplotlib:set_major_formatter() 和 fmt_xdata 有什么区别?

python - pandas 日期列中的不同格式 - 列与行的数据类型