以下语句的作用 - df.groupby("level")["attempt"].mean()?
What does the following statement do - df.groupby("level")["attempt"].mean()?
好的,所以我正在查看一些数据分析(非常基础)项目。我遇到了这条线-
print(df.groupby("level")["attempt"].mean())
其中 df 是文件的数据框 https://raw.githubusercontent.com/whitehatjr/Data-Analysis-by-visualisation/master/data.csv
基本上,据我所知,这是三年级学生尝试测验的数据,这是有水平的。现在,我知道的 groupby() 的唯一用法是 -
#First Usage
q = df.groupby('')
#Second Usage
w = df.groupby(['', ''])
谁能给我解释一下,语句 print(df.groupby("level")["attempt"].mean()) 到底是什么?
假设数据框像
df = pd.DataFrame(np.array([[1,1,1,1,2,2,3,3,3,3,4,4,5,5,6,6,6,6],
[1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9]]).T,
columns=['level', 'attempt'])
现在,df.groupby("level")
正在根据“级别”列的值对您的数据框进行分组:您将有一组用于 level==1
,一组用于 level==2
,等等。
In [1]: df.groupby("level").get_group(1)
Out[1]:
level attempt
0 1 1
1 1 2
2 1 3
3 1 4
那么你要的是“attempt”栏(这里我们只有两栏,但你可能有更多)。对于 level==1
:
In [2]: df.groupby("level")["attempt"].get_group(1)
Out[2]:
0 1
1 2
2 3
3 4
最后,您将计算分组列的平均值。对于 level==1
:
In [3]: df.groupby("level")['attempt'].mean()[1]
Out[3]: 2.5
最终结果为:
In [4]: df.groupby("level")["attempt"].mean()
Out[4]:
level
1 2.50
2 5.50
3 6.25
4 2.50
5 4.50
6 7.50
这是来自 pandas pandas.DataFrame.groupby
文档的顶级描述:
groupby 操作涉及拆分对象、应用函数和组合结果的某种组合。这可用于对大量数据进行分组并对这些组进行计算操作。
在此上下文中,您使用 'level' 列的值来拆分数据框。
然后 select 仅“尝试”列并应用均值函数,然后将其值组合在一起。
所以在英语中,您的结果是每个 'level' 的所有记录的平均值。也就是说,在下面的示例中,级别 1 的所有记录的平均尝试值是 0.75144
import pandas as pd
import io
import requests
resp = requests.get('https://raw.githubusercontent.com/whitehatjr/Data-Analysis-by-visualisation/master/data.csv')
df = pd.read_csv(io.BytesIO(resp.content))
df.groupby("level")["attempt"].mean().reset_index()
输出:
level attempt
0 Level 1 0.751445
1 Level 2 0.863281
2 Level 3 0.698113
3 Level 4 0.734694
好的,所以我正在查看一些数据分析(非常基础)项目。我遇到了这条线-
print(df.groupby("level")["attempt"].mean())
其中 df 是文件的数据框 https://raw.githubusercontent.com/whitehatjr/Data-Analysis-by-visualisation/master/data.csv
基本上,据我所知,这是三年级学生尝试测验的数据,这是有水平的。现在,我知道的 groupby() 的唯一用法是 -
#First Usage
q = df.groupby('')
#Second Usage
w = df.groupby(['', ''])
谁能给我解释一下,语句 print(df.groupby("level")["attempt"].mean()) 到底是什么?
假设数据框像
df = pd.DataFrame(np.array([[1,1,1,1,2,2,3,3,3,3,4,4,5,5,6,6,6,6],
[1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9]]).T,
columns=['level', 'attempt'])
现在,df.groupby("level")
正在根据“级别”列的值对您的数据框进行分组:您将有一组用于 level==1
,一组用于 level==2
,等等。
In [1]: df.groupby("level").get_group(1)
Out[1]:
level attempt
0 1 1
1 1 2
2 1 3
3 1 4
那么你要的是“attempt”栏(这里我们只有两栏,但你可能有更多)。对于 level==1
:
In [2]: df.groupby("level")["attempt"].get_group(1)
Out[2]:
0 1
1 2
2 3
3 4
最后,您将计算分组列的平均值。对于 level==1
:
In [3]: df.groupby("level")['attempt'].mean()[1]
Out[3]: 2.5
最终结果为:
In [4]: df.groupby("level")["attempt"].mean()
Out[4]:
level
1 2.50
2 5.50
3 6.25
4 2.50
5 4.50
6 7.50
这是来自 pandas pandas.DataFrame.groupby
文档的顶级描述:
groupby 操作涉及拆分对象、应用函数和组合结果的某种组合。这可用于对大量数据进行分组并对这些组进行计算操作。
在此上下文中,您使用 'level' 列的值来拆分数据框。
然后 select 仅“尝试”列并应用均值函数,然后将其值组合在一起。
所以在英语中,您的结果是每个 'level' 的所有记录的平均值。也就是说,在下面的示例中,级别 1 的所有记录的平均尝试值是 0.75144
import pandas as pd
import io
import requests
resp = requests.get('https://raw.githubusercontent.com/whitehatjr/Data-Analysis-by-visualisation/master/data.csv')
df = pd.read_csv(io.BytesIO(resp.content))
df.groupby("level")["attempt"].mean().reset_index()
输出:
level attempt
0 Level 1 0.751445
1 Level 2 0.863281
2 Level 3 0.698113
3 Level 4 0.734694