【问题标题】:how to count occurrence of each unique value in pandas如何计算熊猫中每个唯一值的出现次数
【发布时间】:2017-12-29 03:16:35
【问题描述】:

我有大熊猫数据框,我想计算其中每个唯一值的出现次数,我尝试跟踪,但需要大量时间和内存使用。我怎样才能以pythonic的方式做到这一点?

pack=[]
for index,row in packets.iterrows ():
    pack.extend(pd.Series(row).dropna().values.tolist())

unique, count= np.unique(pack, return_counts=True)
counts= np.asarray((unique, count))

【问题讨论】:

  • packets.value_counts() 怎么样?
  • 另外,你为什么要创建pack 列表而不用它做任何事情?
  • AttributeError: 'DataFrame' 对象没有属性 'value_counts'
  • 呃,我还以为是一个系列。您想一起查找每列中每个值的计数吗?就做u,c = np.unique(packets.values.ravel(), return_counts=True)
  • pd.Series(packets.values.ravel()).dropna().value_counts() 那么呢?

标签: python dataframe count


【解决方案1】:

您似乎想要计算所有列的值计数。您可以将其展平为一系列,删除 NaN,然后​​调用 value_counts。这是一个示例 -

df

     a    b
0  1.0  NaN
1  1.0  NaN
2  3.0  3.0
3  NaN  4.0
4  5.0  NaN
5  NaN  4.0
6  NaN  5.0
pd.Series(df.values.ravel()).dropna().value_counts()

5.0    2
4.0    2
3.0    2
1.0    2
dtype: int64

另一种方法是np.unique -

u, c = np.unique(pd.Series(df.values.ravel()).dropna().values, return_counts=True)
pd.Series(c, index=u)

1.0    2
3.0    2
4.0    2
5.0    2
dtype: int64

请注意,第一种方法按计数的降序对结果进行排序,而后者则没有。

【讨论】:

    猜你喜欢
    • 2018-07-17
    • 2011-05-12
    • 2020-10-09
    • 2019-02-22
    • 2021-08-03
    • 2012-10-25
    • 2020-09-12
    • 2019-05-13
    • 2013-02-14
    相关资源
    最近更新 更多