我有一个DataFrame-其快照如下:
我正在尝试获取大于math_score
分组的所有reading_score
和school_name
的所有值。
所以我的最终结果应该是这样的:
我正在尝试计算合格的math_score
和reading_score
的学生百分比,即得分> 70的百分比。
有关如何解决此问题的任何帮助?
这是我尝试过的:
school_data_grouped = school_data_complete.groupby('school_name')
passing_math_score = school_data_grouped.loc[(school_data_grouped['math_score'] >= 70)]
我收到这样的错误消息:
AttributeError: Cannot access callable attribute 'loc' of 'DataFrameGroupBy' objects, try using the 'apply' method
我该怎么做才能做到这一点?非常感谢您的帮助。
谢谢!
答案 0 :(得分:0)
您可以为每个学生是否通过创建一个列,例如:
school_data['passed_math'] = school_data['math_score'] >= 70
school_data['passed_both'] = (school_data['math_score'] >= 70) & (school_data['reading_score'] >= 70)
然后您可以使用groupby
通过学校获得通过率:
pass_rate = school_data.groupby('school_name').mean()
答案 1 :(得分:0)
您需要先过滤math_score和reading_score,然后应用groupby,因为groupby不返回数据框。
要解决您的问题,我从此链接获取数据
https://www.kaggle.com/aljarah/xAPI-Edu-Data/
虽然我更改了列名。
import pandas as pd
school_data_df = pd.read_csv('xAPI-Edu-Data 2.csv')
school_data_df.head()
df_70_math_score = school_data_df[school_data_df.math_score > 70]
df_70_reading_math_score = df_70_math_score[df_70_math_score.reading_score >70]
df_70_reading_math_score.head()
grouped_grade = df_70_reading_math_score.groupby('GradeID')
您可以从此groupby_object'grouped_grade'进行任何统计信息生成