Çözüldü Python Pandas kodu neden çalışmıyor?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
26 Ocak 2020
Mesajlar
6.332
Makaleler
1
Çözümler
13
Yer
İstanbul
1723118930881.png


İçinde nan olan satırları filtrelemek istedim fakat Jupyter işlemi bitiremiyor takılır kalıyor "*" işaretinde. Nerede hata yaptım?
 
Son düzenleyen: Moderatör:
Kullandığınız datasetin şu olduğunu tahmin ediyorum:


Anladığım kadarıyla koseli parantez DataFrame yapıyor. O yüzden mi hata?

İlgili kısma bakalım:

Python:
netflix.iloc[0:8806, [x]].isna()

Burada x bir tam sayı ve [x], tek elemanlı bir tam sayı listesi. Peki şununla aradaki fark ne?

Python:
netflix.iloc[0:8806, x].isna()

Burada liste yerine direkt sayı var ve sırf bundan dolayı döndürdükleri fark ediyor. İlki bir DataFrame döndürürken ikincisi bir Series döndürüyor. Dokümandaki örnekle de teyit edebilirsiniz bunu: pandas.DataFrame.iloc — pandas 2.2.2 documentation

Doğru anlamışsınız burayı. Peki bir "hata" mı var? Hem evet hem hayır. Yalnızca işler istemediğiniz şekilde ilerliyor ve aslında sonuç da istemediğiniz gibi geleceği için hata olduğunu söyleyebiliriz. Görünüşe göre | operatörünü DataFrame ile kullanmak tehlikeli, ben de ilk kez görüyorum. İki tarafın da Series olması hayat kurtarıyormuş.

Şu örneği gözlemleyin:

Python:
import pandas as pd

df = pd.DataFrame({"x": range(1000)})

print(df | df["x"]) # Jupyter'de print'siz yazin.

Sonuç şöyle geliyor:

1723130978123.png


Açıkçası ben tam anlamlandıramadım ama sizde de böyle bir durum yaşandığını söyleyebiliriz. Çok pahalı bir işlem yapmaya çalışıyor, bu yüzden hem hafızayı hem de zamanı fena harcıyor.

Bu arada 0:8806 yerine direkt : yazabilirsiniz tüm satırları dahil etmek için.
 
Kullandığınız datasetin şu olduğunu tahmin ediyorum:




İlgili kısma bakalım:

Python:
netflix.iloc[0:8806, [x]].isna()

Burada x bir tam sayı ve [x], tek elemanlı bir tam sayı listesi. Peki şununla aradaki fark ne?

Python:
netflix.iloc[0:8806, x].isna()

Burada liste yerine direkt sayı var ve sırf bundan dolayı döndürdükleri fark ediyor. İlki bir DataFrame döndürürken ikincisi bir Series döndürüyor. Dokümandaki örnekle de teyit edebilirsiniz bunu: pandas.DataFrame.iloc — pandas 2.2.2 documentation

Doğru anlamışsınız burayı. Peki bir "hata" mı var? Hem evet hem hayır. Yalnızca işler istemediğiniz şekilde ilerliyor ve aslında sonuç da istemediğiniz gibi geleceği için hata olduğunu söyleyebiliriz. Görünüşe göre | operatörünü DataFrame ile kullanmak tehlikeli, ben de ilk kez görüyorum. İki tarafın da Series olması hayat kurtarıyormuş.

Şu örneği gözlemleyin:

Python:
import pandas as pd

df = pd.DataFrame({"x": range(1000)})

print(df | df["x"]) # Jupyter'de print'siz yazin.

Sonuç şöyle geliyor:

Eki Görüntüle 2278277

Açıkçası ben tam anlamlandıramadım ama sizde de böyle bir durum yaşandığını söyleyebiliriz. Çok pahalı bir işlem yapmaya çalışıyor, bu yüzden hem hafızayı hem de zamanı fena harcıyor.

Bu arada 0:8806 yerine direkt : yazabilirsiniz tüm satırları dahil etmek için.
Cok teşekkürlerler hocam ayrıntılı cevap icin. DataSet kullandigim kurs ile geldi kendim bulmadim. Eğer bu konuda bilginiz varsa birkaç sorum olabilir mi?

çok pahalı bir işlem yapmaya çalışıyor
Büyük ihtimalle öyle oldu. Acemi işi biraz yeni öğrendiğimden. Kursta yoktu kendim deneyeyim olduğu kadar dedim.
 
Son düzenleme:

Technopat Haberler

Yeni konular

Geri
Yukarı