大熊猫-从列中提取大于阈值的值

时间:2019-03-18 05:04:14

标签: python pandas group-by

我有一个DataFrame-其快照如下:

enter image description here

我正在尝试获取大于math_score分组的所有reading_scoreschool_name的所有值。

所以我的最终结果应该是这样的:

enter image description here

我正在尝试计算合格的math_scorereading_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

我该怎么做才能做到这一点?非常感谢您的帮助。

谢谢!

2 个答案:

答案 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'进行任何统计信息生成

相关问题