Matplotlib

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

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

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

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

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

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

x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y = np.array([2.7, 2.8, 3.1, 3.4, 3.7, 3.9, 4.2, 4.5, 4.8, 5.1])

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

# رسم نمودار پراکندگی با داده های فیلتر شده
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([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y = np.array([2.7, 2.8, 3.1, 3.4, 3.7, 3.9, 4.2, 4.5, 4.8, 5.1])

# انتخاب داده ها از شاخص 3 تا 7 (شامل)
filtered_x = x[3:8]
filtered_y = y[3:8]

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

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

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

# داده های دما بر حسب درجه سانتیگراد
temperatures_C = np.array([20, 25, 30, 22, 27])

# تبدیل به درجه فارنهایت
temperatures_F = temperatures_C * 9/5 + 32

# رسم نمودار خطی با مقادیر تبدیل شده
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([1000, 1200, 1500, 1300, 1450])

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

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

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

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

# داده های مربوط به قد
heights = np.array([170, 165, 180, 172, 175])

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

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

# داده های مربوط به قد و جنسیت
heights = np.array([170, 165, 180, 172, 175, 168, 171, 174, 182, 169])
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()

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

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

# داده های مربوط به نام، سن و قد
data = np.array([
    ['Alice', 30, 170],
    ['Bob', 25, 182],
    ['Charlie', 22, 168],
    ['David', 33, 175],
    ['Emily', 27, 171]
])

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

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

# داده های مربوط به نام، سن و قد
data = np.array([
    ['Alice', 30, 170],
    ['Bob', 25, 182],
    ['Charlie', 22, 168],
    ['David', 33, 175],
    ['Emily', 27, 171]
])

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

نکات کلیدی:

  • از توابع 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([
    [2023, 1, 1000],
    [2023, 2, 1200],
    [2023, 3, 1500],
    [2023, 4, 1300],
    [2023, 5, 1450],
    [2023, 6, 1600],
    [2023, 7, 1520],
    [2023, 8, 1750],
    [2023, 9, 1830],
    [2023, 10, 1900],
    [2023, 11, 1850],
    [2023, 12, 2020]
])

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

# محاسبه میانگین فروش برای هر ماه
monthly_avg_sales = sales.reshape((12,)).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("میانگین فروش ماهانه در سال 2023")
plt.xticks(sorted_months)  # تنظیم نام ماه ها روی محور X
plt.grid(True)
plt.show()

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

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

0/5 ( 0 امتیاز )
نمایش بیشتر

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

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

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