Pandasla ilgili bir soru

Merhaba.pandasda 2006dan 2016ya kadar filmlerin imdb analizini yapiyorum.boyle bir sey yaptim:filmleri yil bazinda grupladim.daha sonra her yilda cikan filmlerin imdb puaninin ortalamsini buldum:

ilgrup = df.groupby("Year")["Rating"].mean()

Buaraya kadar hersey yolunda gayet duzgun calisiyor:

Year
2006    7.125000
2007    7.133962
2008    6.784615
2009    6.960784
2010    6.826667
2011    6.838095
2012    6.925000
2013    6.812088
2014    6.837755
2015    6.602362
2016    6.436700

Daha sonra bunlardan en kucugunu buldum:

ilgrup = df.groupby("Year")["Rating"].mean().min()

cikti:6.436700336700337.daha sonra bu ciktinin hangi yila mahsus oldugunu yazdirmak istedim: ilgrup = df.groupby("Year")["Rating"].mean().min()["Year"]
ama:

Traceback (most recent call last):
  File "/home/linux/Masaüstü/python/imdbanaliz.py", line 32, in <module>
    ilgrup = df.groupby("Year")["Rating"].mean().min()["Year"]
IndexError: invalid index to scalar variable.

diye bir hata aldim.bu hatanin cozumu konusunda yardimci olursaniz sevinirim.

Merhaba,

Bir kaç farklı yoldan Rating değerinin hangi yıla ait olduğunu bulabilirsiniz. Ben size iki tanesini göstereyim.

group_by ile grupladığınız veriyi bir DataFrame'e dönüştürebilir daha sonra bu DataFrame'i kullanarak istenen sütundaki veriye ulaşabilirsiniz.

Örnek:

import pandas as pd

df = pd.read_csv("imdb.csv")

group = df.groupby("Year")["Rating"].mean()
df_group = pd.DataFrame(group)

minimum = group.min()
year = df_group.loc[df_group["Rating"] == minimum].index.item()
print(year)

Diğer yöntemde ise, veri seti group_by edildikten sonra DataFrame'e dönüştürülmeden, group'un elemanları arasında bir arama yapmaktır.

import pandas as pd

df = pd.read_csv("imdb.csv")

group = df.groupby("Year")["Rating"].mean()

minimum = group.min()
year = [item[0] for item in group.items() if minimum == item[1]][0]
print(year)

hocam tesekkurler.bu sekillerde dolayli yollardan yapmistim.ama direkt olarak boyle birseyin olup olmadigini merak etmistim.anladigim kadariyla olmuyor.ama yinede cok tesekkur ederim.