【问题标题】:Calculate summary statistics of columns in dataframe计算数据框中列的汇总统计信息
【发布时间】:2014-04-09 17:22:37
【问题描述】:

我有一个如下形式的数据框(例如)

shopper_num,is_martian,number_of_items,count_pineapples,birth_country,tranpsortation_method
1,FALSE,0,0,MX,
2,FALSE,1,0,MX,
3,FALSE,0,0,MX,
4,FALSE,22,0,MX,
5,FALSE,0,0,MX,
6,FALSE,0,0,MX,
7,FALSE,5,0,MX,
8,FALSE,0,0,MX,
9,FALSE,4,0,MX,
10,FALSE,2,0,MX,
11,FALSE,0,0,MX,
12,FALSE,13,0,MX,
13,FALSE,0,0,CA,
14,FALSE,0,0,US,

如何使用Pandas计算每列的汇总统计(列数据类型可变,有些列没有信息

然后返回表单的一个数据框:

columnname, max, min, median,

is_martian, NA, NA, FALSE

等等等等

【问题讨论】:

    标签: python pandas csv dataframe profiling


    【解决方案1】:

    describe 可能会为您提供所需的一切,否则您可以使用 groupby 执行聚合并传递 agg 函数列表:http://pandas.pydata.org/pandas-docs/stable/groupby.html#applying-multiple-functions-at-once

    In [43]:
    
    df.describe()
    
    Out[43]:
    
           shopper_num is_martian  number_of_items  count_pineapples
    count      14.0000         14        14.000000                14
    mean        7.5000          0         3.357143                 0
    std         4.1833          0         6.452276                 0
    min         1.0000      False         0.000000                 0
    25%         4.2500          0         0.000000                 0
    50%         7.5000          0         0.000000                 0
    75%        10.7500          0         3.500000                 0
    max        14.0000      False        22.000000                 0
    
    [8 rows x 4 columns]
    

    请注意,某些列无法汇总,因为没有逻辑方法可以汇总它们,例如包含字符串数据的列

    您可以随意转置结果:

    In [47]:
    
    df.describe().transpose()
    
    Out[47]:
    
                     count      mean       std    min   25%  50%    75%    max
    shopper_num         14       7.5    4.1833      1  4.25  7.5  10.75     14
    is_martian          14         0         0  False     0    0      0  False
    number_of_items     14  3.357143  6.452276      0     0    0    3.5     22
    count_pineapples    14         0         0      0     0    0      0      0
    
    [4 rows x 8 columns]
    

    【讨论】:

      【解决方案2】:

      现在有了pandas_profiling 包,它是df.describe() 的更完整替代方案。

      如果您的 pandas 数据框是 df,下面将返回一个完整的分析,包括一些关于缺失值、偏度等的警告。它还会显示直方图和相关图。

      import pandas_profiling
      pandas_profiling.ProfileReport(df)
      

      请参阅example notebook 详细说明用法。

      【讨论】:

      • 上面的例子链接失效了,使用this
      【解决方案3】:

      为了澄清@EdChum 回答中的一点,根据文档,您可以使用df.describe(include='all') 包含对象列。它不会提供很多统计信息,但会提供一些信息,包括计数、唯一值的数量、最高值。这可能是一个新功能,我不知道,因为我是一个相对较新的用户。

      【讨论】:

        猜你喜欢
        • 2019-08-18
        • 1970-01-01
        • 2018-08-11
        • 2020-12-03
        • 2023-02-21
        • 1970-01-01
        • 2017-07-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多