【问题标题】:pandas get column average/mean熊猫获得列平均值/平均值
【发布时间】:2015-09-11 06:57:08
【问题描述】:

我无法获得 pandas 中列的平均值或平均值。 A 有一个数据框。我在下面尝试过的任何事情都没有给我weight列的平均值@

>>> allDF 
         ID           birthyear  weight
0        619040       1962       0.1231231
1        600161       1963       0.981742
2      25602033       1963       1.3123124     
3        624870       1987       0.94212

以下返回几个值,而不是一个:

allDF[['weight']].mean(axis=1)

也是这样:

allDF.groupby('weight').mean()

【问题讨论】:

  • df.groupby('weight') 不是您想要的,因为它将 df 拆分为单独的列,每列都有不同的权重值。而不仅仅是df['weight'].mean()
  • allDF。 weight.mean()

标签: python pandas


【解决方案1】:

如果您只想要weight 列的平均值,请选择该列(这是一个系列)并调用.mean()

In [479]: df
Out[479]: 
         ID  birthyear    weight
0    619040       1962  0.123123
1    600161       1963  0.981742
2  25602033       1963  1.312312
3    624870       1987  0.942120

In [480]: df["weight"].mean()
Out[480]: 0.83982437500000007

【讨论】:

  • 如果我想获得每一列的平均值怎么办?
  • @Chris df.describe()
  • @Chris df.mean() 为您提供每列的权重并以系列的形式返回。
【解决方案2】:

尝试使用 df.mean(axis=0)axis=0 参数计算数据帧的列平均值,因此结果将是 axis=1 是行平均值,因此您将获得多个值。

【讨论】:

  • 这适用于大多数列,但它会忽略任何日期时间列。
【解决方案3】:

请尝试给print (df.describe()) 一个机会。我希望对您的数据框进行全面描述会很有帮助。

【讨论】:

【解决方案4】:

df 中每一列的平均值:

    A   B   C
0   5   3   8
1   5   3   9
2   8   4   9

df.mean()

A    6.000000
B    3.333333
C    8.666667
dtype: float64

如果你想要所有列的平均值:

df.stack().mean()
6.0

【讨论】:

    【解决方案5】:

    你可以使用

    df.describe() 
    

    您将获得数据框的基本统计信息,并获得可以使用的特定列的平均值

    df["columnname"].mean()
    

    【讨论】:

    • 这是上述答案的副本。
    【解决方案6】:

    您还可以使用点表示法访问列(也称为属性访问),然后计算其平均值:

    df.your_column_name.mean()
    

    【讨论】:

      【解决方案7】:

      另外,如果您想在找到mean 后获取round 值。

      #Create a DataFrame
      df1 = {
          'Subject':['semester1','semester2','semester3','semester4','semester1',
                     'semester2','semester3'],
         'Score':[62.73,47.76,55.61,74.67,31.55,77.31,85.47]}
      df1 = pd.DataFrame(df1,columns=['Subject','Score'])
      
      rounded_mean = round(df1['Score'].mean()) # specified nothing as decimal place
      print(rounded_mean) # 62
      
      rounded_mean_decimal_0 = round(df1['Score'].mean(), 0) # specified decimal place as 0
      print(rounded_mean_decimal_0) # 62.0
      
      rounded_mean_decimal_1 = round(df1['Score'].mean(), 1) # specified decimal place as 1
      print(rounded_mean_decimal_1) # 62.2
      

      【讨论】:

        【解决方案8】:

        您可以使用以下两种语句中的任何一种:

        numpy.mean(df['col_name'])
        # or
        df['col_name'].mean()
        

        【讨论】:

        • 请用适当的 cmets 丰富您的答案。否则很可能会被标记为删除
        【解决方案9】:

        您可以简单地选择: df.describe() 这将为您提供所需的所有相关详细信息,但要查找特定列的最小值、最大值或平均值(在您的情况下为“权重”),请使用:

            df['weights'].mean(): For average value
            df['weights'].max(): For maximum value
            df['weights'].min(): For minimum value
        

        【讨论】:

          【解决方案10】:

          请注意,它首先必须是数字数据类型。

           import pandas as pd
           df['column'] = pd.to_numeric(df['column'], errors='coerce')
          

          接下来使用describe() 查找一列或所有数字列的平均值。

          df['column'].mean()
          df.describe()
          

          描述的结果示例:

                    column 
          count    62.000000 
          mean     84.678548 
          std     216.694615 
          min      13.100000 
          25%      27.012500 
          50%      41.220000 
          75%      70.817500 
          max    1666.860000
          

          【讨论】:

            【解决方案11】:

            您可以轻松按照以下代码进行操作

            import pandas as pd 
            import numpy as np 
                    
            classxii = {'Name':['Karan','Ishan','Aditya','Anant','Ronit'],
                        'Subject':['Accounts','Economics','Accounts','Economics','Accounts'],
                        'Score':[87,64,58,74,87],
                        'Grade':['A1','B2','C1','B1','A2']}
            
            df = pd.DataFrame(classxii,index = ['a','b','c','d','e'],columns=['Name','Subject','Score','Grade'])
            print(df)
            
            #use the below for mean if you already have a dataframe
            print('mean of score is:')
            print(df[['Score']].mean())
            

            【讨论】:

              猜你喜欢
              • 2023-02-17
              • 2021-04-04
              • 2017-01-28
              • 2021-08-16
              • 1970-01-01
              • 2012-03-18
              • 2015-07-18
              • 1970-01-01
              相关资源
              最近更新 更多