python - 如何对 Pandas Dataframe 中的所有值进行 value_counts

标签 python pandas numpy

例如,我得到一个dataframe如下:

df

     col1 col2 col3
row1 1    2    3    
row2 1    0    0    
row3 1    0    0    

do_value_counts(df)
   value_count
0  4
1  3
2  1
3  1

我尝试将数据帧 reshape 为 (n,1),但这对 Pandas 来说并不容易,因此我尝试用它初始化一个 numpy 数组并将其 reshape 为 (n, 1)。
然后我使用 np.bincount() 来执行类似 pd.value_counts() 的操作。
但是当我尝试在其上使用 np.bincount 时,我得到 (31280, 1) shape numpy array 和 object too deep for desired array
所以我想知道有没有更好的实现方式?
如果不介意谁能帮助我?
提前致谢。

最佳答案

尝试在之前融化数据框:

df.melt().value.value_counts()
# 0     4
# 1     3
# 2     1
# 3     1

一个 numpy 的方式是:


unique, counts = np.unique(df.values.ravel(), return_counts=True)
counts_df = pd.DataFrame({"counts":counts}, index=unique) 
#    counts
# 0     4
# 1     3
# 2     1
# 3     1

关于python - 如何对 Pandas Dataframe 中的所有值进行 value_counts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57219521/

相关文章:

Python日志记录: Can I pass arguments to a custom handler in json config file

python - 如何过滤列表中的元素并生成频率表

python - KernelRidge 估计器支持的内核列表

python - 在列表中查找 !=0 的值组

python - getattr() 与 __dict__ 查找,哪个更快?

python-3.x - Pandas 通过取列之间的平均值来合并两个数据帧

python - 如何从 Quandl 获取带有句号的股票数据? Python

python - 快速检查 Pandas 系列是否包含负值的方法

python - 传递集合时 numpy.in1d 的行为是否发生了变化?

python - 在 Pandas 数据框中进行行相关的正确方法