Проблема с Series и последующем нахождении минимума и т.д

Не понял как правильно это задание делать и сделал как трети классник через цикл, что не есть хорошо.

Как тут вообще надо было правильно делать?

'''
Для каждого года вычислите среднегодовую температуру и общее количество
осадков. Запишите результаты в объекты Series.
8.1. Какой год можно считать самым теплым? Какой самым холодным?
8.2. В какой год выпало больше всего осадков? В какой меньше всего?
'''

years = set(df['year'])

dates = []


for y in years:
    tempa = 0
    osadki = 0
    count = 0
    artas = df.loc[df['year']==y]
    for index,row in artas.iterrows():
        if row['year']==y:
            count = count +1
            tempa = tempa + row['average_t']
            osadki = osadki+row['rainfall']
    #dates = pd.concat([dates,pd.Series([y,tempa/count,osadki/count],index=['a', 'b', 'c'])])
    dates.append(pd.Series([y,tempa/count,osadki/count],dtype='float64'))
    #print([y,tempa/count,osadki/count,count])
    #print(dates)

#print(dates)

tempMax = 0
tempMin = 1000
osadkiMax = 0
osadkiMin = 1000

for i in dates:
    if i[1]>tempMax:
        tempMax=i[1]
    #print(str(i[1])+' '+str(i[2]))   
    if i[1]<tempMin:
        tempMin=i[1]
        
    if i[2]>osadkiMax:
        osadkiMax=i[2]
        
    if i[2]<osadkiMin:
        osadkiMin=i[2] 
        
#print(tempMax)
#print(tempMin)
#print(osadkiMax)
#print(osadkiMin)


for i in dates:
    if i[1]==tempMax:
        print('Самый тёплый год это '+str(i[0]))
    if i[1]==tempMin:
        print('Самый холодный год это '+str(i[0]))
    if i[2]==osadkiMax:
        print('Самый дождливый год это '+str(i[0]))
    if i[2]==osadkiMin:
        print('Самый сухой год это '+str(i[0]))        


Ответы (1 шт):

Автор решения: CrazyElf

Посмотрел датафрейм. Как я и говорил, нужно использовать groupby. Например:

g = df[['year','average_t','rainfall']].groupby('year')
avg_t = g.mean()['average_t']
sum_rain = g.sum()['rainfall']
print(avg_t)
print(sum_rain)
print(pd.DataFrame(avg_t).sort_values('average_t').iloc[0])
→ Ссылка