قسمت نهم – استفاده از lambda در پانداس
در پانداس، lambda به عنوان توابع ناشناس برای انجام عملیات ساده و سریع روی دادهها بسیار مفید است. این توابع معمولاً در ترکیب با متدهای apply, applymap, و map استفاده میشوند. در ادامه، مثالهای متنوعی از استفادههای lambda در پانداس آورده شده است.
- استفاده از lambda برای اعمال عملیات ریاضی ساده روی ستون
در این مثال، میخواهیم هر مقدار از ستون را دو برابر کنیم:
import pandas as pd # ایجاد یک DataFrame نمونه df = pd.DataFrame({'A': [1, 2, 3, 4, 5]}) # استفاده از lambda برای دو برابر کردن هر مقدار df['A_doubled'] = df['A'].apply(lambda x: x * 2) print(df) A A_doubled ۰ ۱ ۲ ۱ ۲ ۴ ۲ ۳ ۶ ۳ ۴ ۸ ۴ ۵ ۱۰
۲.استفاده از lambda برای اعمال شرط روی ستون
اگر بخواهیم یک شرط روی ستون اعمال کنیم، میتوانیم از lambda استفاده کنیم. به عنوان مثال، اگر مقدار ستون بزرگتر از ۲ بود، ۱ قرار دهیم و در غیر این صورت ۰:
import pandas as pd # ایجاد یک DataFrame نمونه df = pd.DataFrame({'A': [1, 2, 3, 4, 5]}) df['A_condition'] = df['A'].apply(lambda x: 1 if x > 2 else 0) print(df) A A_condition ۰ ۱ ۰ ۱ ۲ ۰ ۲ ۳ ۱ ۳ ۴ ۱ ۴ ۵ ۱
۳.استفاده از lambda برای ترکیب ستونها در یک سطر
فرض کنید دو ستون داریم و میخواهیم مقادیر هر سطر را جمع کنیم:
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) # استفاده از lambda برای جمع مقادیر هر سطر df['Sum'] = df.apply(lambda row: row['A'] + row['B'], axis=1) print(df) A B Sum ۰ ۱ ۴ ۵ ۱ ۲ ۵ ۷ ۲ ۳ ۶ ۹
۴.استفاده از lambda برای فرمتدهی رشتهها
فرض کنید ستونی از رشتهها داریم و میخواهیم همه حروف آنها را به حروف بزرگ تبدیل کنیم:
import pandas as pd df = pd.DataFrame({'Names': ['alice', 'bob', 'charlie']}) # تبدیل حروف به حروف بزرگ با lambda df['Uppercase'] = df['Names'].apply(lambda x: x.upper()) print(df) Names Uppercase ۰ alice ALICE ۱ bob BOB ۲ charlie CHARLIE
۵.استفاده از lambda برای اعمال عملیات شرطی پیچیده
در اینجا، بر اساس مقدار ستونها، مقدار دیگری را در یک ستون جدید قرار میدهیم. اگر A بزرگتر از ۲ و B کوچکتر از ۶ باشد، مقدار Yes و در غیر این صورت No مینویسیم:
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) df['Condition'] = df.apply(lambda row: 'Yes' if row['A'] > 2 and row['B'] < 6 else 'No', axis=1) print(df) A B Condition ۰ ۱ ۴ No ۱ ۲ ۵ No ۲ ۳ ۶ No
۶.استفاده از lambda برای پردازش دادههای عددی خاص
میتوانیم یک شرط خاص ایجاد کنیم که مثلاً اعداد زوج را به خودشان و اعداد فرد را به مربعشان تبدیل کند:
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) df['Processed'] = df['A'].apply(lambda x: x if x % 2 == 0 else x**2) print(df) A B Processed ۰ ۱ ۴ ۱ ۱ ۲ ۵ ۲ ۲ ۳ ۶ ۹
۷.استفاده از lambda برای محاسبه طول لیست یا رشته در هر سلول
در این مثال، ستونی داریم که شامل لیستهاست و میخواهیم طول هر لیست را محاسبه کنیم:
import pandas as pd df = pd.DataFrame({'Lists': [[1, 2, 3], [4, 5], [6, 7, 8, 9]]}) # محاسبه طول هر لیست با lambda df['Length'] = df['Lists'].apply(lambda x: len(x)) print(df) Lists Length ۰ [۱, ۲, ۳] ۳ ۱ [۴, ۵] ۲ ۲ [۶, ۷, ۸, ۹] ۴
۸.استفاده از lambda برای جایگزینی مقادیر خاص
اگر بخواهیم مقدار خاصی را در ستون با مقدار دیگری جایگزین کنیم، میتوانیم از lambda استفاده کنیم. به عنوان مثال، همه مقادیر ۰ را با NaN جایگزین میکنیم:
import pandas as pd import numpy as np df = pd.DataFrame({'A': [0, 2, 3], 'B': [4, 0, 6]}) # جایگزینی ۰ با NaN df = df.applymap(lambda x: np.nan if x == 0 else x) print(df) A B ۰ NaN 4.0 ۱ ۲.۰ NaN ۲ ۳.۰ ۶.۰
lambda در پانداس یک ابزار قدرتمند است که به شما اجازه میدهد تا توابع ساده و سریع را روی دادهها اعمال کنید. با استفاده از این توابع میتوانید عملیاتهای متنوعی مانند فرمتدهی، اعمال شرط، جایگزینی مقادیر خاص و بسیاری دیگر را پیادهسازی کنید.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.