قسمت نوزدهم – استفاده از Pivot و Unpivotدر پانداس
در پانداس، pivot و unpivot دو روش برای تبدیل ساختار دادهها هستند که به ترتیب با استفاده از توابع pivot و melt اجرا میشوند. در ادامه توضیحات و مثالهایی برای این دو ارائه میدهم.
- 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 اردیبهشت ۳۰۰۰ ۲۵۰۰ خرداد ۲۲۰۰ ۱۸۰۰ فروردین ۲۰۰۰ ۱۵۰۰
در واقع ما قرار است داده ها را همانند تصویر زیر تغییر دهیم ، داده ها را از سطر به ستون منتقل می کنیم
- 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: زمانی که دادهها به صورت عریض هستند و میخواهیم آنها را به شکل طولانی برای اعمال تحلیلهای خاص یا نمایش بهتر تبدیل کنیم.
با استفاده از این دو روش، میتوانیم دادهها را به فرم مورد نیاز برای تحلیلهای مختلف آماده کنیم.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.