Python Pandas - แอปพลิเคชันฟังก์ชัน

ในการนำฟังก์ชันของคุณเองหรือไลบรารีอื่นไปใช้กับอ็อบเจ็กต์ Pandas คุณควรทราบถึงสามวิธีที่สำคัญ วิธีการได้รับการกล่าวถึงด้านล่าง วิธีใช้ที่เหมาะสมขึ้นอยู่กับว่าฟังก์ชันของคุณคาดว่าจะทำงานบน DataFrame ทั้งแถวหรือคอลัมน์หรือองค์ประกอบที่ชาญฉลาด

  • แอปพลิเคชั่นฟังก์ชันตารางที่ชาญฉลาด: ท่อ ()
  • Row หรือ Column Wise Function Application: apply ()
  • แอปพลิเคชันฟังก์ชัน Element wise: applymap ()

แอปพลิเคชั่นฟังก์ชั่นที่ชาญฉลาด

การดำเนินการแบบกำหนดเองสามารถทำได้โดยการส่งผ่านฟังก์ชันและจำนวนพารามิเตอร์ที่เหมาะสมเป็นอาร์กิวเมนต์ไปป์ ดังนั้นการดำเนินการจะดำเนินการกับ DataFrame ทั้งหมด

ตัวอย่างเช่นเพิ่มค่า 2 ให้กับองค์ประกอบทั้งหมดใน DataFrame จากนั้น

ฟังก์ชัน adder

ฟังก์ชัน adder จะเพิ่มค่าตัวเลขสองค่าเป็นพารามิเตอร์และส่งกลับผลรวม

def adder(ele1,ele2):
   return ele1+ele2

ตอนนี้เราจะใช้ฟังก์ชันที่กำหนดเองเพื่อดำเนินการกับ DataFrame

df = pd.DataFrame(np.random.randn(5,3),columns=['col1','col2','col3'])
df.pipe(adder,2)

มาดูโปรแกรมเต็ม -

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)

มัน output มีดังนี้ -

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

แอปพลิเคชันฟังก์ชัน Row หรือ Column Wise

สามารถใช้ฟังก์ชัน Arbitrary ตามแกนของ DataFrame หรือ Panel โดยใช้ไฟล์ apply()วิธีการซึ่งเช่นเดียวกับวิธีการสถิติเชิงพรรณนาใช้อาร์กิวเมนต์แกนที่เป็นทางเลือก ตามค่าเริ่มต้นการดำเนินการจะดำเนินการคอลัมน์อย่างชาญฉลาดโดยให้แต่ละคอลัมน์เป็นเหมือนอาร์เรย์

ตัวอย่าง 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)

มัน output มีดังนี้ -

col1   -0.288022
col2    1.044839
col3   -0.187009
dtype: float64

โดยผ่าน axis พารามิเตอร์การดำเนินการสามารถดำเนินการแถวที่ชาญฉลาด

ตัวอย่าง 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)

มัน output มีดังนี้ -

col1    0.034093
col2   -0.152672
col3   -0.229728
dtype: float64

ตัวอย่างที่ 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)

มัน output มีดังนี้ -

col1   -0.167413
col2   -0.370495
col3   -0.707631
dtype: float64

แอพพลิเคชั่น Element Wise Function

ไม่ใช่ฟังก์ชันทั้งหมดที่สามารถเป็นเวกเตอร์ได้ (อาร์เรย์ NumPy ที่ส่งคืนอาร์เรย์อื่นหรือค่าใด ๆ ) applymap() บน DataFrame และ analogously map() on Series ยอมรับฟังก์ชัน Python ที่รับค่าเดียวและส่งคืนค่าเดียว

ตัวอย่าง 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)

มัน output มีดังนี้ -

col1    0.480742
col2    0.454185
col3    0.266563
dtype: float64

ตัวอย่าง 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)

มัน output มีดังนี้ -

col1    0.395263
col2    0.204418
col3   -0.795188
dtype: float64