قسمت نوزدهم – استفاده از Pivot و Unpivotدر پانداس

در پانداس، pivot و unpivot دو روش برای تبدیل ساختار داده‌ها هستند که به ترتیب با استفاده از توابع pivot و melt اجرا می‌شوند. در ادامه توضیحات و مثال‌هایی برای این دو ارائه می‌دهم.

  1. pivot در پانداس

تابع pivot در پانداس برای تبدیل یک DataFrame از حالت “طولانی” (long) به حالت “عریض” (wide) استفاده می‌شود. در این ساختار، یک ستون به عنوان شاخص (index) در نظر گرفته می‌شود و ستون‌های دیگر به عنوان ستون‌های جدید یا مقادیر مربوط به آن‌ها تنظیم می‌شوند.

مثال ۱: استفاده از pivot

فرض کنید داده‌هایی درباره‌ی فروش ماهانه محصولات در مناطق مختلف داریم.

import pandas as pd

# داده‌های اولیه در قالب طولانی
data = {
    'Month': ['فروردین', 'فروردین', 'اردیبهشت', 'اردیبهشت', 'خرداد', 'خرداد'],
    'Product': ['محصول A', 'محصول B', 'محصول A', 'محصول B', 'محصول A', 'محصول B'],
    'Amount': [2000, 1500, 3000, 2500, 2200, 1800]
}

df = pd.DataFrame(data)

print(df)

# استفاده از pivot
pivot_df = df.pivot(index='Month', columns='Product', values='Amount')

print(pivot_df)


      Month  Product  Amount
۰   فروردین  محصول A    2000
۱   فروردین  محصول B    1500
۲  اردیبهشت  محصول A    3000
۳  اردیبهشت  محصول B    2500
۴     خرداد  محصول A    2200
۵     خرداد  محصول B    1800
Product   محصول A  محصول B
Month                     
اردیبهشت     ۳۰۰۰     ۲۵۰۰
خرداد        ۲۲۰۰     ۱۸۰۰
فروردین      ۲۰۰۰     ۱۵۰۰

در واقع ما قرار است داده ها را همانند تصویر زیر تغییر دهیم ، داده ها را از سطر به ستون منتقل می کنیم

  1. unpivot در پانداس

تابع melt در پانداس برای تبدیل داده‌ها از حالت “عریض” به حالت “طولانی” (long) استفاده می‌شود و برعکس pivot عمل می‌کند.

مثال ۲: استفاده از unpivot (با melt)

برای مثال، فرض کنید داده‌هایی از فروش محصولات در ماه‌های مختلف داریم و هر ستون نماینده‌ی یک محصول خاص است. با استفاده از melt می‌توانیم این داده‌ها را به حالت طولانی تبدیل کنیم.

import pandas as pd
# داده‌های اولیه در قالب عریض
data = {
    'ماه': ['فروردین', 'اردیبهشت', 'خرداد'],
    'محصول A': [2000, 3000, 2200],
    'محصول B': [1500, 2500, 1800]
}

df = pd.DataFrame(data)
print("داده‌های اولیه:")
print(df)

# استفاده از melt برای unpivot
melt_df = df.melt(id_vars=['ماه'], var_name='محصول', value_name='فروش (تومان)')
print("\nخروجی unpivot:")
print(melt_df)

داده‌های اولیه:
        ماه  محصول A  محصول B
۰   فروردین     ۲۰۰۰     ۱۵۰۰
۱  اردیبهشت     ۳۰۰۰     ۲۵۰۰
۲     خرداد     ۲۲۰۰     ۱۸۰۰

خروجی unpivot:
        ماه    محصول  فروش (تومان)
۰   فروردین  محصول A          2000
۱  اردیبهشت  محصول A          3000
۲     خرداد  محصول A          2200
۳   فروردین  محصول B          1500
۴  اردیبهشت  محصول B          2500
۵     خرداد  محصول B          1800

در واقع در این روش ما می خواهیم داده ها را از ستون به سطر منتقل کنیم همانند تصویر زیر

توضیح کد:

id_vars=[‘ماه’] ستون “ماه” را به عنوان شاخص ثابت نگه می‌دارد.

var_name=’محصول’ نام ستون‌هایی که تبدیل به سطر شده‌اند را به “محصول” تغییر می‌دهد.

value_name=’فروش (تومان)’ مقادیر را در یک ستون با نام “فروش (تومان)” قرار می‌دهد.

کاربردهای pivot و unpivot

pivot: زمانی که می‌خواهیم داده‌ها را برای تحلیل ساده‌تر به فرم عریض تبدیل کنیم (مثلاً مقایسه مقادیر مختلف در هر ستون).

unpivot: زمانی که داده‌ها به صورت عریض هستند و می‌خواهیم آن‌ها را به شکل طولانی برای اعمال تحلیل‌های خاص یا نمایش بهتر تبدیل کنیم.

با استفاده از این دو روش، می‌توانیم داده‌ها را به فرم مورد نیاز برای تحلیل‌های مختلف آماده کنیم.

 

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *