استفاده از کتابخانه‌های پایتون: ایده با Pandas، NumPy، Matplotlib و SciPy

فهرست مطالب

“`html





استفاده از کتابخانه‌های پایتون: ایده با Pandas، NumPy، Matplotlib و SciPy



استفاده از کتابخانه‌های پایتون: ایده با Pandas، NumPy، Matplotlib و SciPy

پایتون به عنوان یکی از محبوب‌ترین زبان‌های برنامه‌نویسی، اکوسیستمی غنی از کتابخانه‌ها را در اختیار توسعه‌دهندگان قرار می‌دهد. در این میان، کتابخانه‌های Pandas، NumPy، Matplotlib و SciPy نقش کلیدی در حوزه‌های تحلیل داده، محاسبات علمی، تصویرسازی و مهندسی دارند. این مقاله به بررسی عمیق این کتابخانه‌ها و نحوه استفاده از آن‌ها در پروژه‌های تخصصی می‌پردازد.

Pandas: ستون فقرات تحلیل داده در پایتون

Pandas کتابخانه‌ای قدرتمند برای دستکاری و تحلیل داده‌ها است. این کتابخانه ساختارهای داده‌ای انعطاف‌پذیر مانند DataFrame و Series را ارائه می‌دهد که امکان کار با داده‌های جدولی و سری‌های زمانی را فراهم می‌کنند. Pandas ابزارهای متنوعی برای خواندن، نوشتن، پاکسازی، تبدیل و تجمیع داده‌ها ارائه می‌کند.

ساختارهای داده‌ای Pandas: DataFrame و Series

DataFrame: یک ساختار داده‌ای جدولی دو بعدی با ستون‌هایی که می‌توانند انواع مختلفی داشته باشند (مانند عددی، رشته‌ای، بولی و غیره). DataFrame شبیه به یک صفحه گسترده یا جدول SQL است.


import pandas as pd

# ایجاد یک DataFrame از دیکشنری
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 27],
        'City': ['New York', 'London', 'Paris']}
df = pd.DataFrame(data)
print(df)

Series: یک ساختار داده‌ای یک بعدی که می‌تواند انواع مختلفی از داده‌ها را در خود جای دهد. Series شبیه به یک ستون در یک DataFrame است.


import pandas as pd

# ایجاد یک Series از لیست
ages = pd.Series([25, 30, 27], name='Age')
print(ages)

عملیات کلیدی در Pandas

Pandas امکان انجام عملیات متنوعی بر روی داده‌ها را فراهم می‌کند:

  • خواندن و نوشتن داده‌ها: خواندن داده‌ها از فایل‌های مختلف (CSV، Excel، SQL و غیره) و نوشتن داده‌ها در فایل‌ها.
  • پاکسازی داده‌ها: حذف داده‌های تکراری، پر کردن مقادیر گمشده، تبدیل انواع داده‌ها و غیره.
  • فیلتر کردن و انتخاب داده‌ها: انتخاب زیرمجموعه‌ای از داده‌ها بر اساس شرایط خاص.
  • گروه‌بندی و تجمیع داده‌ها: گروه‌بندی داده‌ها بر اساس یک یا چند ستون و انجام محاسباتی مانند میانگین، مجموع، شمارش و غیره.
  • مرتب‌سازی داده‌ها: مرتب‌سازی داده‌ها بر اساس یک یا چند ستون.
  • ادغام و پیوند داده‌ها: ادغام DataFrame‌ها و Series‌ها بر اساس کلیدهای مشترک.

مثال: تحلیل داده‌های فروش با Pandas

فرض کنید داده‌های فروش یک فروشگاه در یک فایل CSV ذخیره شده است. می‌توانیم از Pandas برای خواندن این داده‌ها، پاکسازی آن‌ها و انجام تحلیل‌های مختلف استفاده کنیم.


import pandas as pd

# خواندن داده‌ها از فایل CSV
df = pd.read_csv('sales_data.csv')

# بررسی داده‌ها
print(df.head())
print(df.info())

# پاکسازی داده‌ها (مثلا، حذف سطرهایی با مقادیر گمشده)
df = df.dropna()

# تبدیل نوع داده ستون 'Date' به datetime
df['Date'] = pd.to_datetime(df['Date'])

# محاسبه مجموع فروش به ازای هر محصول
sales_by_product = df.groupby('Product')['Sales'].sum()
print(sales_by_product)

# یافتن پرفروش‌ترین محصول
best_selling_product = sales_by_product.idxmax()
print(f"پرفروش‌ترین محصول: {best_selling_product}")

NumPy: محاسبات عددی در پایتون

NumPy کتابخانه‌ای اساسی برای محاسبات عددی در پایتون است. این کتابخانه آرایه‌های چندبعدی (ndarray) را فراهم می‌کند که امکان انجام عملیات ریاضی و منطقی بر روی داده‌ها را به صورت کارآمد و سریع فراهم می‌کنند. NumPy ابزارهای متنوعی برای ایجاد، دستکاری و محاسبات بر روی آرایه‌ها ارائه می‌دهد.

آرایه‌های NumPy (ndarray)

آرایه‌های NumPy ساختارهای داده‌ای همگن هستند که می‌توانند انواع مختلفی از داده‌ها را در خود جای دهند (مانند اعداد صحیح، اعداد اعشاری، اعداد مختلط و غیره). آرایه‌ها می‌توانند یک‌بعدی، دوبعدی یا چندبعدی باشند.


import numpy as np

# ایجاد یک آرایه یک‌بعدی از لیست
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)

# ایجاد یک آرایه دوبعدی از لیست
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)

# ایجاد یک آرایه با صفرها
zeros_arr = np.zeros((2, 3))
print(zeros_arr)

# ایجاد یک آرایه با یک‌ها
ones_arr = np.ones((3, 2))
print(ones_arr)

# ایجاد یک آرایه با اعداد تصادفی
random_arr = np.random.rand(2, 2)
print(random_arr)

عملیات کلیدی در NumPy

NumPy امکان انجام عملیات متنوعی بر روی آرایه‌ها را فراهم می‌کند:

  • عملیات ریاضی: جمع، تفریق، ضرب، تقسیم، توان، جذر، توابع مثلثاتی و غیره.
  • عملیات منطقی: مقایسه، AND، OR، NOT و غیره.
  • شکل‌دهی مجدد آرایه‌ها: تغییر ابعاد آرایه بدون تغییر داده‌ها.
  • برش و نمایه سازی آرایه‌ها: دسترسی به زیرمجموعه‌ای از داده‌ها در آرایه.
  • پخش (Broadcasting): انجام عملیات بر روی آرایه‌هایی با ابعاد مختلف.
  • جبر خطی: ضرب ماتریسی، معکوس ماتریس، دترمینان ماتریس، تجزیه مقادیر منفرد (SVD) و غیره.

مثال: محاسبات آماری با NumPy

می‌توانیم از NumPy برای انجام محاسبات آماری بر روی داده‌ها استفاده کنیم.


import numpy as np

# ایجاد یک آرایه از اعداد تصادفی
data = np.random.rand(100)

# محاسبه میانگین
mean = np.mean(data)
print(f"میانگین: {mean}")

# محاسبه انحراف معیار
std = np.std(data)
print(f"انحراف معیار: {std}")

# محاسبه میانه
median = np.median(data)
print(f"میانه: {median}")

# محاسبه صدک 25 و 75
percentile_25 = np.percentile(data, 25)
percentile_75 = np.percentile(data, 75)
print(f"صدک 25: {percentile_25}")
print(f"صدک 75: {percentile_75}")

Matplotlib: تصویرسازی داده‌ها در پایتون

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

انواع نمودارها در Matplotlib

Matplotlib از انواع مختلفی از نمودارها پشتیبانی می‌کند:

  • نمودار خطی (Line Plot): برای نمایش تغییرات داده‌ها در طول زمان یا در برابر یک متغیر دیگر.
  • نمودار میله‌ای (Bar Plot): برای مقایسه مقادیر مختلف.
  • نمودار پراکندگی (Scatter Plot): برای نمایش رابطه بین دو متغیر.
  • هیستوگرام (Histogram): برای نمایش توزیع داده‌ها.
  • نمودار دایره‌ای (Pie Chart): برای نمایش سهم هر بخش از یک کل.
  • نمودار جعبه‌ای (Box Plot): برای نمایش خلاصه آماری داده‌ها (میانگین، میانه، چارک‌ها و غیره).

import matplotlib.pyplot as plt
import numpy as np

# ایجاد داده‌ها
x = np.linspace(0, 10, 100)
y = np.sin(x)

# ایجاد نمودار خطی
plt.plot(x, y)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('نمودار سینوسی')
plt.show()

# ایجاد نمودار پراکندگی
x = np.random.rand(50)
y = np.random.rand(50)
plt.scatter(x, y)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('نمودار پراکندگی')
plt.show()

#ایجاد نمودار میله‌ای
categories = ['A', 'B', 'C', 'D']
values = [25, 40, 30, 35]
plt.bar(categories, values)
plt.xlabel('Categories')
plt.ylabel('Values')
plt.title('نمودار میله‌ای')
plt.show()

#ایجاد هیستوگرام
data = np.random.randn(1000)
plt.hist(data, bins=30)
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('هیستوگرام')
plt.show()

سفارشی‌سازی نمودارها

Matplotlib امکان سفارشی‌سازی نمودارها را فراهم می‌کند:

  • تغییر رنگ‌ها و سبک خطوط: تغییر رنگ خطوط، سبک خطوط، ضخامت خطوط و غیره.
  • افزودن برچسب‌ها و عنوان: افزودن برچسب برای محورها، عنوان برای نمودار و غیره.
  • تغییر محدوده‌های محورها: تغییر محدوده‌های محورهای X و Y.
  • افزودن راهنما (Legend): افزودن راهنما برای نمایش اطلاعات مربوط به هر خط یا میله در نمودار.
  • ذخیره نمودارها: ذخیره نمودارها در فرمت‌های مختلف (PNG، JPEG، PDF و غیره).

مثال: تصویرسازی داده‌های فروش با Matplotlib

فرض کنید داده‌های فروش یک فروشگاه در یک فایل CSV ذخیره شده است. می‌توانیم از Pandas برای خواندن این داده‌ها و از Matplotlib برای تصویرسازی آن‌ها استفاده کنیم.


import pandas as pd
import matplotlib.pyplot as plt

# خواندن داده‌ها از فایل CSV
df = pd.read_csv('sales_data.csv')

# تبدیل نوع داده ستون 'Date' به datetime
df['Date'] = pd.to_datetime(df['Date'])

# گروه‌بندی داده‌ها بر اساس ماه و محاسبه مجموع فروش
sales_by_month = df.groupby(df['Date'].dt.month)['Sales'].sum()

# ایجاد نمودار خطی
plt.plot(sales_by_month.index, sales_by_month.values)
plt.xlabel('ماه')
plt.ylabel('مجموع فروش')
plt.title('نمودار فروش ماهانه')
plt.xticks(sales_by_month.index)
plt.show()

SciPy: محاسبات علمی و مهندسی در پایتون

SciPy کتابخانه‌ای جامع برای محاسبات علمی و مهندسی در پایتون است. این کتابخانه شامل ابزارهای متنوعی برای حل مسائل ریاضی، آماری، بهینه‌سازی، انتگرال‌گیری، معادلات دیفرانسیل، پردازش سیگنال، پردازش تصویر و غیره است. SciPy بر پایه NumPy ساخته شده است و از آرایه‌های NumPy برای ذخیره و پردازش داده‌ها استفاده می‌کند.

ماژول‌های کلیدی در SciPy

SciPy شامل ماژول‌های مختلفی است که هر کدام برای حل مسائل خاصی طراحی شده‌اند:

  • scipy.integrate: برای انتگرال‌گیری عددی و حل معادلات دیفرانسیل.
  • scipy.optimize: برای بهینه‌سازی توابع و یافتن ریشه‌های معادلات.
  • scipy.interpolate: برای درون‌یابی و برون‌یابی داده‌ها.
  • scipy.fft: برای تبدیل فوریه سریع (FFT).
  • scipy.signal: برای پردازش سیگنال.
  • scipy.linalg: برای جبر خطی.
  • scipy.stats: برای آمار و احتمال.
  • scipy.sparse: برای کار با ماتریس‌های خلوت.
  • scipy.spatial: برای محاسبات فضایی.
  • scipy.ndimage: برای پردازش تصویر.

مثال: بهینه‌سازی یک تابع با SciPy

می‌توانیم از SciPy برای یافتن مقدار کمینه یک تابع استفاده کنیم.


import numpy as np
from scipy.optimize import minimize

# تعریف تابع
def objective_function(x):
    return x[0]**2 + x[1]**2

# تعریف محدودیت‌ها
def constraint(x):
    return x[0] + x[1] - 1

# تعریف شرایط اولیه
x0 = np.array([0, 0])

# تعریف محدودیت‌ها به صورت دیکشنری
cons = {'type': 'eq', 'fun': constraint}

# بهینه‌سازی تابع
result = minimize(objective_function, x0, constraints=cons)

# نمایش نتیجه
print(result)

مثال: پردازش سیگنال با SciPy

می‌توانیم از SciPy برای فیلتر کردن یک سیگنال استفاده کنیم.


import numpy as np
from scipy.signal import butter, lfilter, freqz
import matplotlib.pyplot as plt

# تعریف تابع فیلتر Butterworth
def butter_lowpass(cutoff, fs, order=5):
    nyq = 0.5 * fs
    normal_cutoff = cutoff / nyq
    b, a = butter(order, normal_cutoff, btype='low', analog=False)
    return b, a

def butter_lowpass_filter(data, cutoff, fs, order=5):
    b, a = butter_lowpass(cutoff, fs, order=order)
    y = lfilter(b, a, data)
    return y

# ایجاد یک سیگنال نمونه
fs = 1000.0  # نرخ نمونه‌برداری
T = 5.0       # مدت زمان سیگنال
ns = fs * T
t = np.linspace(0, T, ns, endpoint=False)
a = 0.2
f0 = 60.0     # فرکانس سیگنال
f1 = 250.0    # فرکانس نویز
x = 0.1 * np.sin(2*np.pi*f0*t) + a * np.random.normal(0,1,t.shape) + 0.2 * np.sin(2*np.pi*f1*t)


# فیلتر کردن سیگنال
cutoff = 70.0  # فرکانس قطع
order = 6       # مرتبه فیلتر
y = butter_lowpass_filter(x, cutoff, fs, order)

# نمایش سیگنال اصلی و فیلتر شده
plt.figure(figsize=(12, 6))
plt.plot(t, x, label='سیگنال اصلی')
plt.plot(t, y, label='سیگنال فیلتر شده')
plt.xlabel('زمان (ثانیه)')
plt.ylabel('دامنه')
plt.title('فیلتر پایین‌گذر Butterworth')
plt.legend()
plt.grid(True)
plt.show()

ادغام Pandas، NumPy، Matplotlib و SciPy

این چهار کتابخانه اغلب به صورت ترکیبی در پروژه‌ها استفاده می‌شوند. Pandas برای دستکاری و پاکسازی داده‌ها، NumPy برای محاسبات عددی، Matplotlib برای تصویرسازی داده‌ها و SciPy برای حل مسائل علمی و مهندسی استفاده می‌شوند. با ترکیب این کتابخانه‌ها می‌توان طیف گسترده‌ای از پروژه‌ها را پیاده‌سازی کرد، از جمله تحلیل داده‌های مالی، پیش‌بینی آب و هوا، پردازش تصویر و غیره.

مثال: تحلیل داده‌های بازار سهام

فرض کنید داده‌های بازار سهام در یک فایل CSV ذخیره شده است. می‌توانیم از Pandas برای خواندن این داده‌ها، NumPy برای انجام محاسبات آماری، Matplotlib برای تصویرسازی داده‌ها و SciPy برای انجام تحلیل‌های پیشرفته استفاده کنیم.


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.fft import fft

# خواندن داده‌ها از فایل CSV
df = pd.read_csv('stock_data.csv')

# تبدیل نوع داده ستون 'Date' به datetime
df['Date'] = pd.to_datetime(df['Date'])

# محاسبه میانگین متحرک
df['SMA_50'] = df['Close'].rolling(window=50).mean()

# محاسبه بازده روزانه
df['Daily_Return'] = df['Close'].pct_change()

# حذف سطرهای با مقادیر گمشده
df = df.dropna()

# ایجاد نمودار قیمت سهام و میانگین متحرک
plt.figure(figsize=(12, 6))
plt.plot(df['Date'], df['Close'], label='قیمت سهام')
plt.plot(df['Date'], df['SMA_50'], label='میانگین متحرک 50 روزه')
plt.xlabel('تاریخ')
plt.ylabel('قیمت')
plt.title('نمودار قیمت سهام')
plt.legend()
plt.grid(True)
plt.show()

# تحلیل فرکانسی با استفاده از FFT
close_price = df['Close'].values
N = len(close_price)
yf = fft(close_price)
xf = np.fft.fftfreq(N, 1)  # Assuming daily data, sampling interval is 1

# Plot the FFT results
plt.figure(figsize=(12, 6))
plt.plot(xf, np.abs(yf))
plt.xlabel('Frequency (1/day)')
plt.ylabel('Amplitude')
plt.title('FFT of Stock Close Price')
plt.xlim(0, 0.5) # Zoom in on lower frequencies
plt.grid(True)
plt.show()


# محاسبه همبستگی بین بازده روزانه و شاخص بازار
market_data = pd.read_csv('market_index.csv')
market_data['Date'] = pd.to_datetime(market_data['Date'])
merged_data = pd.merge(df, market_data, on='Date')
correlation = merged_data['Daily_Return'].corr(merged_data['Market_Return'])
print(f"همبستگی بین بازده روزانه سهام و شاخص بازار: {correlation}")

منابع تکمیلی

برای یادگیری بیشتر در مورد این کتابخانه‌ها، می‌توانید از منابع زیر استفاده کنید:

نتیجه‌گیری

کتابخانه‌های Pandas، NumPy، Matplotlib و SciPy ابزارهای قدرتمندی هستند که امکان انجام تحلیل داده، محاسبات علمی، تصویرسازی و مهندسی را در پایتون فراهم می‌کنند. با یادگیری و استفاده از این کتابخانه‌ها می‌توانید پروژه‌های تخصصی خود را به طور کارآمد و مؤثر پیاده‌سازی کنید.



“`

“تسلط به برنامه‌نویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT”

قیمت اصلی 2.290.000 ریال بود.قیمت فعلی 1.590.000 ریال است.

"تسلط به برنامه‌نویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT"

"با شرکت در این دوره جامع و کاربردی، به راحتی مهارت‌های برنامه‌نویسی پایتون را از سطح مبتدی تا پیشرفته با کمک هوش مصنوعی ChatGPT بیاموزید. این دوره، با بیش از 6 ساعت محتوای آموزشی، شما را قادر می‌سازد تا به سرعت الگوریتم‌های پیچیده را درک کرده و اپلیکیشن‌های هوشمند ایجاد کنید. مناسب برای تمامی سطوح با زیرنویس فارسی حرفه‌ای و امکان دانلود و تماشای آنلاین."

ویژگی‌های کلیدی:

بدون نیاز به تجربه قبلی برنامه‌نویسی

زیرنویس فارسی با ترجمه حرفه‌ای

۳۰ ٪ تخفیف ویژه برای دانشجویان و دانش آموزان