#python #pandas
#python #pandas
Вопрос:
У меня есть фрейм данных, который выглядит следующим образом:
import pandas as pd
df = pd.DataFrame({'Date':[2019-08, 2019-08, 2019-09, 2019-09, 2019-10, 2019-10], 'Name':['A','B','A','C', 'A', 'B'], 'math':[100,90,69,80,0,70], 'science':[100,90,0,80,92,95]})
df['Date'] = pd.to_datetime(df['Date'])
Я хочу перебрать данные и найти оценки по математике и естественным наукам на человека в месяц.
Мой желаемый результат должен выглядеть следующим образом:
df = pd.DataFrame({'Name':['A','B','C'], 'math':[56.3333, 80, 69], 'science':[64, 92.5, 80]})
Чтобы было более понятно, вот шаги, которые я хочу предпринять.
1) get a Name (ex. A)
2) get math grades for that person (100, 69, 0)
3) calculate the average (56.333)
4) get science grades for that person (100, 0, 92)
5) calculate the average (64)
6) repeat the steps for every name (b and c)
Комментарии:
1.
df.groupby('Name')[['math', 'science']].mean()
?
Ответ №1:
Сгруппируйте их по «имени» и вычислите среднее значение для каждого
df.groupby('Name')[['math','science']].mean()
math science
Name
A 56.333333 64.0
B 80.000000 92.5
C 80.000000 80.0
Ответ №2:
вы можете использовать функцию ‘groupby’:
grp_grade=df.groupby(by='Name')
grp_grade.mean()
Out[17]:
math science
Name
A 56.333333 64.0
B 80.000000 92.5
C 80.000000 80.0