Json 如何按键对dict列表中的数据进行分组?

Json 如何按键对dict列表中的数据进行分组?,json,list,dataframe,dictionary,group-by,Json,List,Dataframe,Dictionary,Group By,我有一份字典清单,每一本都和一个学生有关。我想创建一个表,按学期按每门课程分组,并有与每行相关的值的平均值 课程-学期-平均 当我使用函数.groupby()时,它不起作用,但我找不到该做什么 我名单上的额外部分: [{'matricule': '22000803', 'nom': 'Boyer,André', 'note': 'C+', 'valeur': 2.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TEC

我有一份字典清单,每一本都和一个学生有关。我想创建一个表,按学期按每门课程分组,并有与每行相关的值的平均值

课程-学期-平均

当我使用函数.groupby()时,它不起作用,但我找不到该做什么

我名单上的额外部分:

[{'matricule': '22000803', 'nom': 'Boyer,André', 'note': 'C+', 'valeur': 2.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'},
 {'matricule': '22000829', 'nom': 'Keighan,Maylis', 'note': 'A+', 'valeur': 4.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'},
 {'matricule': '22000869', 'nom': 'Lahaie,Lyes', 'note': 'B+', 'valeur': 3.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'},
 {'matricule': '22000973', 'nom': 'Conerardy,Rawaa', 'note': 'B+', 'valeur': 3.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'},
 {'matricule': '22001034', 'nom': 'Naftanaila,Carla', 'note': 'B+', 'valeur': 3.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'}]
我试过这个:

tableau = info.groupby(["Cours","Trimestre"])[["Valeur"]].mean()
但答案是:
“list”对象没有属性“groupby”

您首先需要创建一个数据帧。您可以使用:


输出

  matricule               nom note valeur  \
0  22000803      Boyer,André   C+    2.3   
1  22000829    Keighan,Maylis   A+    4.3   
2  22000869       Lahaie,Lyes   B+    3.3   
3  22000973   Conerardy,Rawaa   B+    3.3   
4  22001034  Naftanaila,Carla   B+    3.3   

                                   titre       sigle trimestre  
0  La cybersécurité et le gestionnaire  TECH 20701     H2005  
1  La cybersécurité et le gestionnaire  TECH 20701     H2005  
2  La cybersécurité et le gestionnaire  TECH 20701     H2005  
3  La cybersécurité et le gestionnaire  TECH 20701     H2005  
4  La cybersécurité et le gestionnaire  TECH 20701     H2005  
df_means=df.groupby(['matricule','trimestre'],as_index=False).valeur.mean()
print(df_means)

其中
my_list
是您的列表:

my_list=[{'matricule': '22000803', 'nom': 'Boyer,André', 'note': 'C+', 'valeur': 2.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'},
 {'matricule': '22000829', 'nom': 'Keighan,Maylis', 'note': 'A+', 'valeur': 4.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'},
 {'matricule': '22000869', 'nom': 'Lahaie,Lyes', 'note': 'B+', 'valeur': 3.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'},
 {'matricule': '22000973', 'nom': 'Conerardy,Rawaa', 'note': 'B+', 'valeur': 3.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'},
 {'matricule': '22001034', 'nom': 'Naftanaila,Carla', 'note': 'B+', 'valeur': 3.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'}]

现在您可以使用
groupby
您只能按列中存在的列标签进行分组(课程不存在)

输出:

  matricule trimestre  valeur
0  22000803     H2005     2.3
1  22000829     H2005     4.3
2  22000869     H2005     3.3
3  22000973     H2005     3.3
4  22001034     H2005     3.3

您首先需要创建一个数据帧。您可以使用:


输出

  matricule               nom note valeur  \
0  22000803      Boyer,André   C+    2.3   
1  22000829    Keighan,Maylis   A+    4.3   
2  22000869       Lahaie,Lyes   B+    3.3   
3  22000973   Conerardy,Rawaa   B+    3.3   
4  22001034  Naftanaila,Carla   B+    3.3   

                                   titre       sigle trimestre  
0  La cybersécurité et le gestionnaire  TECH 20701     H2005  
1  La cybersécurité et le gestionnaire  TECH 20701     H2005  
2  La cybersécurité et le gestionnaire  TECH 20701     H2005  
3  La cybersécurité et le gestionnaire  TECH 20701     H2005  
4  La cybersécurité et le gestionnaire  TECH 20701     H2005  
df_means=df.groupby(['matricule','trimestre'],as_index=False).valeur.mean()
print(df_means)

其中
my_list
是您的列表:

my_list=[{'matricule': '22000803', 'nom': 'Boyer,André', 'note': 'C+', 'valeur': 2.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'},
 {'matricule': '22000829', 'nom': 'Keighan,Maylis', 'note': 'A+', 'valeur': 4.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'},
 {'matricule': '22000869', 'nom': 'Lahaie,Lyes', 'note': 'B+', 'valeur': 3.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'},
 {'matricule': '22000973', 'nom': 'Conerardy,Rawaa', 'note': 'B+', 'valeur': 3.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'},
 {'matricule': '22001034', 'nom': 'Naftanaila,Carla', 'note': 'B+', 'valeur': 3.3, 'titre': 'La cybersécurité et le gestionnaire', 'sigle': 'TECH 20701', 'trimestre': 'H2005'}]

现在您可以使用
groupby
您只能按列中存在的列标签进行分组(课程不存在)

输出:

  matricule trimestre  valeur
0  22000803     H2005     2.3
1  22000829     H2005     4.3
2  22000869     H2005     3.3
3  22000973     H2005     3.3
4  22001034     H2005     3.3