Python Pandas - İşlev Uygulaması
Kendinizin veya başka bir kitaplığın işlevlerini Pandas nesnelerine uygulamak için, üç önemli yöntemin farkında olmalısınız. Yöntemler aşağıda tartışılmıştır. Kullanılacak uygun yöntem, işlevinizin tüm DataFrame üzerinde, satır veya sütun bazında veya öğe bazında çalışıp çalışmayacağına bağlıdır.
- Tablo bilge İşlev Uygulama: boru ()
- Satır veya Sütun Bilge İşlev Uygulaması: uygula ()
- Element wise Function Uygulaması: applymap ()
Masa Üstü İşlev Uygulaması
Özel işlemler, işlevi ve uygun sayıda parametreyi boru bağımsız değişkenleri olarak ileterek gerçekleştirilebilir. Böylece, tüm DataFrame üzerinde işlem gerçekleştirilir.
Örneğin, DataFrame'deki tüm öğelere 2 değeri ekleyin. Sonra,
toplayıcı işlevi
Toplayıcı işlevi, parametre olarak iki sayısal değer ekler ve toplamı döndürür.
def adder(ele1,ele2):
return ele1+ele2
Şimdi DataFrame üzerinde işlem yapmak için özel işlevi kullanacağız.
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)
Tam programı görelim -
import pandas as pd
import numpy as np
def adder(ele1,ele2):
return ele1+ele2
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)
print df.apply(np.mean)
Onun output aşağıdaki gibidir -
col1 col2 col3
0 2.176704 2.219691 1.509360
1 2.222378 2.422167 3.953921
2 2.241096 1.135424 2.696432
3 2.355763 0.376672 1.182570
4 2.308743 2.714767 2.130288
Satır veya Sütun Bilge Fonksiyon Uygulaması
Rasgele işlevler, bir DataFrame veya Panelin eksenleri boyunca, apply()tanımlayıcı istatistik yöntemleri gibi, isteğe bağlı bir eksen argümanı alan yöntem. Varsayılan olarak, işlem her bir sütunu bir dizi benzeri alarak sütun bazında gerçekleştirilir.
örnek 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(np.mean)
print df.apply(np.mean)
Onun output aşağıdaki gibidir -
col1 -0.288022
col2 1.044839
col3 -0.187009
dtype: float64
Geçerek axis parametre, işlemler satır bazında gerçekleştirilebilir.
Örnek 2
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(np.mean,axis=1)
print df.apply(np.mean)
Onun output aşağıdaki gibidir -
col1 0.034093
col2 -0.152672
col3 -0.229728
dtype: float64
Örnek 3
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.apply(lambda x: x.max() - x.min())
print df.apply(np.mean)
Onun output aşağıdaki gibidir -
col1 -0.167413
col2 -0.370495
col3 -0.707631
dtype: float64
Element Wise Fonksiyon Uygulaması
Tüm işlevler vektörleştirilemez (ne başka bir dizi döndüren NumPy dizileri ne de herhangi bir değer), yöntemler applymap() DataFrame üzerinde ve analogously map() on Series, tek bir değer alıp tek bir değer döndüren herhangi bir Python işlevini kabul eder.
örnek 1
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
# My custom function
df['col1'].map(lambda x:x*100)
print df.apply(np.mean)
Onun output aşağıdaki gibidir -
col1 0.480742
col2 0.454185
col3 0.266563
dtype: float64
Örnek 2
import pandas as pd
import numpy as np
# My custom function
df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.applymap(lambda x:x*100)
print df.apply(np.mean)
Onun output aşağıdaki gibidir -
col1 0.395263
col2 0.204418
col3 -0.795188
dtype: float64