Başka bir panda sorunu var.pandas 'dönüşümü, groupby çıktısını sıralamada çalışmıyor
varsayalım Ben ipuçları hakkında biraz bilgi vardır: Veri Analizi ve Pandas hakkında Okuma Wes McKinney mükemmel kitabı
, ben işe gerektiğini düşündüm aşağıdaki şeyi karşılaştı.
In [119]:
tips.head()
Out[119]:
total_bill tip sex smoker day time size tip_pct
0 16.99 1.01 Female False Sun Dinner 2 0.059447
1 10.34 1.66 Male False Sun Dinner 3 0.160542
2 21.01 3.50 Male False Sun Dinner 3 0.166587
3 23.68 3.31 Male False Sun Dinner 2 0.139780
4 24.59 3.61 Female False Sun Dinner 4 0.146808
ve ben yani içenler ve içmeyenler için tip_pct
ayrı, toplam fatura ile ilgili olarak beş büyük ipuçları bilmek istiyorum. Böyle aynısını yapmaya dönüşümü panda kullanmak istedi sonra
def top(df, n=5, column='tip_pct'):
return df.sort_index(by=column)[-n:]
In [101]:
tips.groupby('smoker').apply(top)
Out[101]:
total_bill tip sex smoker day time size tip_pct
smoker
False 88 24.71 5.85 Male False Thur Lunch 2 0.236746
185 20.69 5.00 Male False Sun Dinner 5 0.241663
51 10.29 2.60 Female False Sun Dinner 2 0.252672
149 7.51 2.00 Male False Thur Lunch 2 0.266312
232 11.61 3.39 Male False Sat Dinner 2 0.291990
True 109 14.31 4.00 Female True Sat Dinner 2 0.279525
183 23.17 6.50 Male True Sun Dinner 4 0.280535
67 3.07 1.00 Female True Sat Dinner 1 0.325733
178 9.60 4.00 Female True Sun Dinner 2 0.416667
172 7.25 5.15 Male True Sun Dinner 2 0.710345
yeterince iyi
ama: Yani bu işleri
def top_all(df):
return df.sort_index(by='tip_pct')
tips.groupby('smoker').transform(top_all)
ama bunun yerine bu olsun:
TypeError: Transform function invalid for data types
Niye ya? Dönüşümün, girdi olarak kabul ettiği aynı boyutlarda bir dizi döndürmeyi gerektirdiğini biliyorum, bu yüzden, bu gereksinimle, kendi boyutlarını değiştirmeden, orijinal DataFrame'in her iki dilimini (sigara içenler ve sigara içmeyenler) sıraya koyacağımı düşündüm. . Herkes neden başarısız olduğunu açıklayabilir mi?
Mükemmel cevap. Çok teşekkürler! –
Dönüştürme neden bu kadar zayıf belgeleniyor? Beni deli ediyor.Eğer baskı kayıtlarını sizin fonksiyonlarınıza koyduğunuzda (aslında nasıl çalıştığını bilmemekle birlikte) oldukça doğru bir şekilde çalıştığınızı düşünmüyorum; dönüşümün aslında dizileri ve veri çerçeveleri olarak sütunları geçtiğini açıkça görüyoruz. Gerçekten garip ve sahnelerin ardında neler olup bittiğini tam olarak anlamak istiyorum ancak dönüşümün gerçekte nasıl uygulandığı hakkında hiçbir bilgi bulamıyor. –