繁体   English   中英

Pandas:value_counts 进入数据帧

[英]Pandas: value_counts into a data frame

我有下表:

a       b        c       d       e
1       0        1       0       0
0       1        0       1       1
0       0        0       1       1
1       0        0       1       1
0       0        0       1       1

我需要转换此表,以便对于每一列,我得到 0 和 1 的计数。 我需要下表:

fields    count_1     count_0
------------------------------
a          2           3
b          1           4
c          1           4
d          4           1
e          4           1

我知道如果我使用 value_counts(),我会为我返回每个值的计数。 但是,我真的不知道如何创建这个表。 能否请你帮忙?

让我们使用sumpd.concat

pd.concat([(df==0).sum().rename('count_0'), df.sum().rename('count_1')], axis=1)

Output:

   count_0  count_1
a        3        2
b        4        1
c        4        1
d        1        4
e        1        4

计时

%timeit df.apply(pd.Series.value_counts).transpose().add_prefix('count_')

每个循环 6.4 毫秒 ± 278 微秒(平均值 ± 标准偏差。7 次运行,每次 100 次循环)

%timeit df.stack().groupby(level=[1]).value_counts().unstack().add_prefix('count_')

每个循环 2.78 毫秒 ± 69.5 微秒(平均值 ± 标准偏差。7 次运行,每次 100 次循环)

%%timeit
df_out = pd.DataFrame([
    [x.strip() for x in df.columns], sum(df.values == 1), sum(df.values == 0)
]).T
df_out.columns = ['fields', 'count_1', 'count_0']

每个循环 1.15 毫秒 ± 27.4 微秒(平均值 ± 标准偏差。7 次运行,每次 1000 次循环)

%timeit pd.concat([(df==0).sum().rename('count_0'), df.sum().rename('count_1')], axis=1)

每个循环 1.09 毫秒 ± 9.69 微秒(平均值 ± 标准偏差。7 次运行,每次 1000 次循环)

让我们尝试按列应用value_counts

df.apply(pd.Series.value_counts).transpose().add_prefix('count_')

   count_0  count_1
a        3        2
b        4        1
c        4        1
d        1        4
e        1        4

或者,类似地使用stackunstack

df.stack().groupby(level=[1]).value_counts().unstack().add_prefix('count_')

   count_0  count_1
a        3        2
b        4        1
c        4        1
d        1        4
e        1        4

尝试这个,

import pandas as pd

df = pd.DataFrame([
    [x.strip() for x in df.columns], sum(df.values == 1), sum(df.values == 0)
]).T

df.columns = ['fields', 'count_1', 'count_0']

  fields count_1 count_0
0      a       2       3
1      b       1       4
2      c       1       4
3      d       4       1
4      e       4       1

暂无
暂无

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

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