首页 > 解决方案 > 在 pandas 和 NDFrame 中找到相似的序列(逐行)

问题描述

我仍在学习 python,但我对数据框越来越熟练。我正在尝试在熊猫数据框中进行测量,这些数据框是不同长度的最常见行。例如,对于 5 列的表: - 找出 5 列中出现频率最高的 3 个元素,依此类推。

然后在我自己研究这个之后,我能够发现 groupby 和聚合。下面是我写的一些代码,你也可以执行

smallData=pd.DataFrame(np.array([[1,2,3,4,5],[4,5,6,7,8],[1,2,3,3,3],[1,2,2,3,3],[1,2,3,5,3],[1,2,3,5,3]]),columns=['1', '2','3','4','5'])
keep=smallData.groupby(['1', '2','3','4','5']).size() 

这给我返回了这张漂亮的表格,同时显示了不同行的相似程度:

keep
Out[414]: 
1  2  3  4  5
1  2  2  3  3    1
      3  3  3    1
         4  5    1
         5  3    2
4  5  6  7  8    1
dtype: int64

现在最后一列是每个系列的频率。我的真实数据集要大得多,我想选择最后一列并对其进行排序,以找出最常见的序列。

虽然 keep 变量似乎不再是数据框,但我第一次看到。

keep.describe
Out[413]: 
<bound method NDFrame.describe of 1  2  3  4  5
1  2  2  3  3    1
      3  3  3    1
         4  5    1
         5  3    2
4  5  6  7  8    1
dtype: int64>

此外,这种结构的形状似乎不是类似矩阵的结构

keep.shape
Out[412]: (5,)

您能帮我在这里访问这些值或以其他方式找到最常见的相似序列吗?

我要提前感谢您的帮助。问候亚历克斯

标签: pythonpandasrow

解决方案


尝试使用这个:

数据框。模式(轴=0,numeric_only=False,dropna=True)[来源]

获取沿选定轴的每个元素的模式。

一组值的众数是出现频率最高的值。它可以是多个值。

{0 或“索引”,1 或“列”},默认 0

搜索模式时要迭代的轴:

  • 0 或 'index' : 获取每列的模式
  • 1 或 'columns' : 获取每一行的模式

numeric_only : bool,默认为 False

如果为 True,则仅适用于数字列。

dropna : bool,默认为 True

不要考虑 NaN/NaT 的计数。

资源


推荐阅读