pandas - извлекает значения, превышающие порог, из столбца - PullRequest
0 голосов
/ 18 марта 2019

У меня есть DataFrame - снимок которого выглядит следующим образом:

enter image description here

Я пытаюсь захватить все math_score и reading_score значения больше 70 сгруппированы по school_name.

Таким образом, мой конечный результат должен выглядеть примерно так:

enter image description here

Я пытаюсь рассчитать% студентов с прохождением 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

Что я могу сделать, чтобы добиться этого?Любая помощь очень ценится.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Вам необходимо сначала отфильтровать math_score & reading_score, а затем применить groupby, потому что groupby не возвращает Dataframe.

Для работы над вашим вопросом я получил данные по этой ссылке

DATA

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'

0 голосов
/ 18 марта 2019

Вы можете создать столбец для того, сдал ли каждый учащийся, например:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...