Matplotlib

دستکاری داده ها در Matplotlib

دستکاری داده ها در Matplotlib

Matplotlib به عنوان کتابخانه ای قدرتمند برای تجسم داده در پایتون، نه تنها امکاناتی برای رسم نمودارهای مختلف ارائه می دهد، بلکه ابزارهایی برای دستکاری داده ها قبل از رسم نمودار نیز در اختیار کاربران قرار می دهد. این امر به شما کمک می کند تا داده های خود را آماده سازی و پیش پردازش کنید تا نمودارهای دقیق تر و گویاتر را ایجاد کنید.

در این راهنما، به بررسی برخی از عملیات رایج دستکاری داده ها در Matplotlib می پردازیم:

۱. انتخاب زیرمجموعه ای از داده ها:

  • انتخاب داده ها بر اساس شرط:
Python
import numpy as np
import matplotlib.pyplot as plt

x = np.array([۱, ۲, ۳, ۴, ۵, ۶, ۷, ۸, ۹, ۱۰])
y = np.array([۲.۷, ۲.۸, ۳.۱, ۳.۴, ۳.۷, ۳.۹, ۴.۲, ۴.۵, ۴.۸, ۵.۱])

# انتخاب داده هایی که x > 5 هستند
filtered_x = x[x > ۵]
filtered_y = y[x > ۵]

# رسم نمودار پراکندگی با داده های فیلتر شده
plt.scatter(filtered_x, filtered_y)
plt.xlabel('محور X')
plt.ylabel('محور Y')
plt.title("نمودار پراکندگی با داده های فیلتر شده")
plt.show()
  • انتخاب داده ها با استفاده از اسلایس ها:
Python
import numpy as np
import matplotlib.pyplot as plt

x = np.array([۱, ۲, ۳, ۴, ۵, ۶, ۷, ۸, ۹, ۱۰])
y = np.array([۲.۷, ۲.۸, ۳.۱, ۳.۴, ۳.۷, ۳.۹, ۴.۲, ۴.۵, ۴.۸, ۵.۱])

# انتخاب داده ها از شاخص ۳ تا ۷ (شامل)
filtered_x = x[۳:۸]
filtered_y = y[۳:۸]

# رسم نمودار خطی با داده های انتخاب شده
plt.plot(filtered_x, filtered_y)
plt.xlabel('محور X')
plt.ylabel('محور Y')
plt.title("نمودار خطی با داده های انتخاب شده")
plt.show()

۲. تبدیل مقادیر داده ها:

  • تغییر واحد:
Python
import numpy as np
import matplotlib.pyplot as plt

# داده های دما بر حسب درجه سانتیگراد
temperatures_C = np.array([۲۰, ۲۵, ۳۰, ۲۲, ۲۷])

# تبدیل به درجه فارنهایت
temperatures_F = temperatures_C * ۹/۵ + ۳۲

# رسم نمودار خطی با مقادیر تبدیل شده
plt.plot(temperatures_F)
plt.xlabel('زمان')
plt.ylabel('دمای فارنهایت')
plt.title("نمودار خطی با مقادیر تبدیل شده")
plt.show()
  • ایجاد مقیاس های جدید:
Python
import numpy as np
import matplotlib.pyplot as plt

# داده های مربوط به فروش
sales = np.array([۱۰۰۰, ۱۲۰۰, ۱۵۰۰, ۱۳۰۰, ۱۴۵۰])

# محاسبه درصد تغییر نسبت به ماه اول
percent_change = (sales - sales[۰]) / sales[۰] * ۱۰۰

# رسم نمودار خطی با مقیاس درصد تغییر
plt.plot(percent_change)
plt.xlabel('ماه')
plt.ylabel('درصد تغییر فروش')
plt.title("نمودار خطی با مقیاس درصد تغییر")
plt.show()

۴. محاسبه مقادیر آماری:

  • محاسبه میانگین، انحراف معیار، واریانس و …:
Python
import numpy as np
import matplotlib.pyplot as plt

# داده های مربوط به قد
heights = np.array([۱۷۰, ۱۶۵, ۱۸۰, ۱۷۲, ۱۷۵])

# محاسبه میانگین و انحراف معیار
mean_height = np.mean(heights)
std_height = np.std(heights)

# رسم نمودار هیستوگرام با میانگین و انحراف معیار
plt.hist(heights, bins=۱۰, edgecolor='black')
plt.axvline(mean_height, color='red', linestyle='dashed', linewidth=۲, label='میانگین')
plt.axvline(mean_height + std_height, color='green', linestyle='dashed', linewidth=۲, label='انحراف معیار+')
plt.axvline(mean_height - std_height, color='green', linestyle='dashed', linewidth=۲, label='انحراف معیار-')
plt.xlabel('قد (سانتی متر)')
plt.ylabel('تعداد افراد')
plt.title("نمودار هیستوگرام با میانگین و انحراف معیار")
plt.legend()
plt.show()
  • محاسبه مقادیر آماری برای هر گروه از داده ها:
Python
import numpy as np
import matplotlib.pyplot as plt

# داده های مربوط به قد و جنسیت
heights = np.array([۱۷۰, ۱۶۵, ۱۸۰, ۱۷۲, ۱۷۵, ۱۶۸, ۱۷۱, ۱۷۴, ۱۸۲, ۱۶۹])
genders = np.array(['M', 'F', 'M', 'F', 'M', 'F', 'F', 'M', 'M', 'F'])

# گروه بندی داده ها بر اساس جنسیت
male_heights = heights[genders == 'M']
female_heights = heights[genders == 'F']

# محاسبه میانگین قد برای هر جنسیت
mean_male_height = np.mean(male_heights)
mean_female_height = np.mean(female_heights)

# رسم نمودار جعبه ای با میانگین قد برای هر جنسیت
plt.boxplot([male_heights, female_heights], labels=['مردان', 'زنان'], vert=False, patch_artist=True)
plt.axhline(y=mean_male_height, color='red', linestyle='--', label='میانگین مردان')
plt.axhline(y=mean_female_height, color='blue', linestyle='--', label='میانگین زنان')
plt.xlabel('جنسیت')
plt.ylabel('قد (سانتی متر)')
plt.title("نمودار جعبه ای قد با میانگین برای هر جنسیت")
plt.legend()
plt.show()

۵. مرتب سازی داده ها:

  • مرتب سازی آرایه بر اساس یک ستون:
Python
import numpy as np
import matplotlib.pyplot as plt

# داده های مربوط به نام، سن و قد
data = np.array([
    ['Alice', ۳۰, ۱۷۰],
    ['Bob', ۲۵, ۱۸۲],
    ['Charlie', ۲۲, ۱۶۸],
    ['David', ۳۳, ۱۷۵],
    ['Emily', ۲۷, ۱۷۱]
])

# مرتب سازی بر اساس سن به ترتیب صعودی
sorted_data = data[data[:, ۱].argsort()]

# چاپ داده های مرتب شده
print(sorted_data)
  • مرتب سازی داده ها با معیارهای سفارشی:
Python
import numpy as np
import matplotlib.pyplot as plt

# داده های مربوط به نام، سن و قد
data = np.array([
    ['Alice', ۳۰, ۱۷۰],
    ['Bob', ۲۵, ۱۸۲],
    ['Charlie', ۲۲, ۱۶۸],
    ['David', ۳۳, ۱۷۵],
    ['Emily', ۲۷, ۱۷۱]
])

# مرتب سازی بر اساس سن و سپس قد به ترتیب

نکات کلیدی:

  • از توابع NumPy مانند np.where(), np.slice(), np.mean(), np.std(), np.sort() و … برای دستکاری داده ها قبل از رسم نمودار استفاده کنید.
  • Matplotlib امکاناتی برای ترکیب داده ها از منابع مختلف و محاسبه مقادیر آماری برای گروه های مختلف از داده ها را فراهم می کند.
  • انتخاب ابزار مناسب برای دستکاری داده ها به ساختار داده ها و نیازهای شما بستگی دارد.
  • برای اطلاعات بیشتر در مورد توابع NumPy و Matplotlib، به مستندات آنها مراجعه کنید.

مثال کامل:

Python
import numpy as np
import matplotlib.pyplot as plt

# داده های مربوط به فروش ماهانه
sales_data = np.array([
    [۲۰۲۳, ۱, ۱۰۰۰],
    [۲۰۲۳, ۲, ۱۲۰۰],
    [۲۰۲۳, ۳, ۱۵۰۰],
    [۲۰۲۳, ۴, ۱۳۰۰],
    [۲۰۲۳, ۵, ۱۴۵۰],
    [۲۰۲۳, ۶, ۱۶۰۰],
    [۲۰۲۳, ۷, ۱۵۲۰],
    [۲۰۲۳, ۸, ۱۷۵۰],
    [۲۰۲۳, ۹, ۱۸۳۰],
    [۲۰۲۳, ۱۰, ۱۹۰۰],
    [۲۰۲۳, ۱۱, ۱۸۵۰],
    [۲۰۲۳, ۱۲, ۲۰۲۰]
])

# استخراج سال، ماه و میزان فروش
year = sales_data[:, ۰]
month = sales_data[:, ۱]
sales = sales_data[:, ۲]

# محاسبه میانگین فروش برای هر ماه
monthly_avg_sales = sales.reshape((۱۲,)).mean()

# مرتب سازی ماه ها بر اساس میانگین فروش
sorted_months = month[monthly_avg_sales.argsort()]
sorted_avg_sales = monthly_avg_sales[monthly_avg_sales.argsort()]

# رسم نمودار خطی با میانگین فروش ماهانه
plt.plot(sorted_months, sorted_avg_sales)
plt.xlabel('ماه')
plt.ylabel('میانگین فروش')
plt.title("میانگین فروش ماهانه در سال ۲۰۲۳")
plt.xticks(sorted_months)  # تنظیم نام ماه ها روی محور X
plt.grid(True)
plt.show()

در این مثال، داده های فروش ماهانه را از یک آرایه NumPy استخراج می کنیم، میانگین فروش برای هر ماه را محاسبه می کنیم، ماه ها را بر اساس میانگین فروش مرتب می کنیم و نمودار خطی با میانگین فروش ماهانه رسم می کنیم.

با استفاده از Matplotlib و ابزارهای دستکاری داده ها، می توانید داده های خود را به طور موثرتری تجزیه و تحلیل کرده و نمودارهای گویا و آموزنده ای ایجاد کنید.

۰/۵ ( ۰ امتیاز )
نمایش بیشتر

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

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

دکمه بازگشت به بالا