Проблема с 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])