【问题标题】:What are 25%,50%,75% values when we describe a grouped dataframe?当我们描述分组数据框时,25%、50%、75% 的值是什么?
【发布时间】:2020-01-12 03:50:30
【问题描述】:

我正在浏览 pandas groupby 文档,当我在特定列上进行分组时,如下所示:

df:

     A      B         C         D
0  foo    one -0.987674  0.039616
1  bar    one -0.653247 -1.022529
2  foo    two  0.404201  1.308777
3  bar  three  1.620780  0.574377
4  foo    two  1.661942  0.579888
5  bar    two  0.747878  0.463052
6  foo    one  0.070278  0.202564
7  foo  three  0.779684 -0.547192

grouped=df.groupby('A')
grouped.describe(A)

给予

              C                      ...         D                    
          count      mean       std  ...       50%       75%       max
A   B                                ...                              
bar one     1.0  0.224944       NaN  ...  1.107509  1.107509  1.107509
    three   1.0  0.704943       NaN  ...  1.833098  1.833098  1.833098
    two     1.0 -0.091613       NaN  ... -0.549254 -0.549254 -0.549254
foo one     2.0  0.282298  1.554401  ... -0.334058  0.046640  0.427338
    three   1.0  1.688601       NaN  ... -1.457338 -1.457338 -1.457338
    two     2.0  1.206690  0.917140  ... -0.096405  0.039241  0.174888

描述时 25%、50%、75% 表示什么? 请解释一下?

【问题讨论】:

  • 抱歉,我不是在寻找 o/p expand ,当描述 25% 50% 值是什么意思时,它们是如何实现的?
  • @jezrael 可能是一个重复的问题,但重定向的问题没有为我的问题伙伴提供答案
  • @jezrael 我不是在寻找显示选项伴侣.....我正在考虑上述数据框中低于 50% 和 75% 的值
  • 是的,它正在工作,因为 min 以类似的方式给出最小值 50% 和 75% 的值是什么意思?我们如何得到这些?

标签: pandas pandas-groupby


【解决方案1】:

你可以测试DataFrameGroupBy.describe:

注意事项

对于数字数据,结果的索引将包括计数、平均值、标准差、最小值、最大值以及较低、50 和较高的百分位数。 默认下百分位数为 25,上百分位数为 75。 50 个百分位数与中位数相同。


你能解释一下上面的 foo-one 值吗?

它叫Mulitindex

分层/多级索引非常令人兴奋,因为它为一些非常复杂的数据分析和操作打开了大门,特别是对于处理更高维度的数据。从本质上讲,它使您能够在序列 (1d) 和 DataFrame (2d) 等低维数据结构中存储和操作任意维数的数据。

grouped=df.groupby(['A', 'B'])
df = grouped.describe()

print (df.index)
MultiIndex([('bar',   'one'),
            ('bar', 'three'),
            ('bar',   'two'),
            ('foo',   'one'),
            ('foo', 'three'),
            ('foo',   'two')],
           names=['A', 'B'])

print (df.columns)
MultiIndex([('C', 'count'),
            ('C',  'mean'),
            ('C',   'std'),
            ('C',   'min'),
            ('C',   '25%'),
            ('C',   '50%'),
            ('C',   '75%'),
            ('C',   'max'),
            ('D', 'count'),
            ('D',  'mean'),
            ('D',   'std'),
            ('D',   'min'),
            ('D',   '25%'),
            ('D',   '50%'),
            ('D',   '75%'),
            ('D',   'max')],
           )

print (df.loc[('foo','one'), ('C', '75%')])
-0.19421

【讨论】:

  • 你能解释一下上面的 foo-one 值吗?
  • @Codenewbie - 嗯,对于fooone 的组合可能更容易exalin 创建由describe 计数的函数填充的最终数据帧的新行
  • 我的意思是 foo 以及 'C' 和 'D' 的一个各自的 '%' 值
  • @Codenewbie - 是的,因为对于每个数字列CD 又有MultiIndex 列中的countmeanstd 等更多功能 -所以对于df.loc[('foo','one'), ('C', '75%')]DataFrame 获取值
  • 我担心 75% 的值怎么是 -0.19421?它是如何计算的?知道它是分位数的,它并不复杂
【解决方案2】:

您会看到数据框的分位数: https://en.wikipedia.org/wiki/Quantile

例如 25-%-Quantil:

25% 的值低于该值

在你的情况下:

A=条
B=一个

有 75% 的分位数 1.107509,这意味着组(条形和一个)中类型 D 的 75% 的数据条目低于此值。

【讨论】:

  • 有道理,但我想不通,有点复杂!!
【解决方案3】:

要解释最小值、25%、50%、75% 和最大值,想象一下从最低到最高对每一列进行排序。第一个(最小)值是最小值。如果您遍历列表的四分之一,您会发现一个大于 25% 的值且小于 75% 的值的数字。那是 25% 的值(发音为“25th percentile”)。第 50 和第 75 的百分位数定义类似,最大值为最大值。

【讨论】:

    【解决方案4】:

    简单来说...

    您将看到百分位数(25%、50%、75%..等)以及它们前面的一些值。

    意义在于告诉你数据的分布情况。

    例如:

    s = pd.Series([1, 2, 3, 1])
    
    s.describe()   will give
    
    count    4.000000
    mean     1.750000
    std      0.957427
    min      1.000000
    25%      1.000000
    50%      1.500000
    75%      2.250000
    max      3.000000
    

    25% 表示 25% 的数据具有 1.0000 或以下的值。也就是说,如果您要手动查看数据,其中 25% 小于或等于 1。(如果您查看我们的数据 [1、2、3、1],您会同意这一点。[1] 即25% 的数据小于或等于 1。

    50% 表示 50% 的数据具有 1.5 或以下的值。 [1, 1] 占数据的 50% 小于等于 1.5。

    75% 表示 75% 的数据具有 2.25 或更低的值。 [1, 2, 1] 占数据的 75% 小于等于 2.25。

    【讨论】:

      【解决方案5】:

      旧问题,但添加了一个答案以便寻求帮助:

      在我注释版的 Pandas 书籍中,我解释了 .describe() 输出中 25%、50% 和 75% 值的重要性,这正是问题的答案:附:

      如果有人需要我的注释版本,我可以分享。

      【讨论】:

        猜你喜欢
        • 2015-02-21
        • 1970-01-01
        • 1970-01-01
        • 2018-07-22
        • 2013-08-10
        • 2020-04-29
        • 1970-01-01
        • 2022-06-14
        • 1970-01-01
        相关资源
        最近更新 更多