熊猫获得列平均值/平均值
Posted
技术标签:
【中文标题】熊猫获得列平均值/平均值【英文标题】: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()
【参考方案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())
【讨论】:
以上是关于熊猫获得列平均值/平均值的主要内容,如果未能解决你的问题,请参考以下文章