مقدمه
پانداس (Pandas) یکی از محبوبترین کتابخانههای زبان برنامهنویسی پایتون در حوزه تحلیل داده و علم داده است. نام این کتابخانه از عبارت “Panel Data” گرفته شده و هدف اصلی آن، سادهسازی و تسهیل انجام عملیات مختلف بر روی دادهها میباشد. پانداس امکانات قدرتمندی برای خواندن، تمیزکردن، پردازش، تلخیص و نمایش دادهها ارائه میدهد و تقریباً برای هر پروژه تحلیل داده و یادگیری ماشین، به ابزاری اساسی بدل شده است.
این مقاله به معرفی کامل پانداس، ساختارهای دادهای، نحوه خواندن و نوشتن داده، عملیات تحلیل و مثالهای کاربردی خواهد پرداخت. هدف این است که خواننده پس از مطالعه این مطلب بتواند بهراحتی دادهها را با پانداس پردازش و تحلیل کند.
پانداس چیست و چرا باید از آن استفاده کنیم؟
پانداس یک کتابخانه متنباز پایتون است که در سال ۲۰۰۸ توسط Wes McKinney معرفی شد. این کتابخانه به ویژه برای کار با دادههای جدولی (مانند دادههای اکسل و SQL) طراحی شده است و امکانات بینظیری را برای کار با دادههای ساختیافته و نیمهساختیافته ارائه میکند.
مزایای اصلی استفاده از پانداس:
- رابط کاربری بسیار ساده و خوانا
- امکان عملیات سریع و برداری بر روی دادهها (مانند NumPy)
- امکانات قوی برای فیلتراسیون، گروهبندی و آمار توصیفی
- پشتیبانی از فرمتهای ورودی/خروجی متنوع مثل CSV، Excel، SQL، JSON و …
- ابزاری برای مدیریت دادههای جداشده از زمان (Time Series)
- سازگاری کامل با کتابخانههای دیگر علم داده (NumPy، Matplotlib، Scikit-learn و …)
ساختارهای دادهای اصلی در پانداس
پانداس دو ساختار دادهای اصلی دارد:
Series
آرایهای یکبعدی است که میتواند هر نوع دادهای داشته باشد. شبیه به لیست یا آرایه اما با امکان افزودن «ایندکس» مجزا. مثال:
import pandas as pd s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd']) print(s)
DataFrame
جدولی دوبعدی (مانند شیت اکسل) که سطرها و ستونهای قابل نامگذاری دارد. از DataFrame به عنوان محور اصلی تحلیل دادهها در پانداس یاد میشود:
data = {'Name': ['Ali', 'Sara', 'Mohammad'], 'Age': [23, 28, 31]} df = pd.DataFrame(data) print(df)
وارد کردن داده به پانداس
پانداس قابلیت خواندن داده از منابع مختلف را دارد. متداولترین آنها:
خواندن از فایل CSV
df = pd.read_csv('data.csv')
خواندن از Excel
df = pd.read_excel('data.xlsx')
خواندن از SQL
import sqlite3 con = sqlite3.connect('database.db') df = pd.read_sql_query('SELECT * FROM table_name', con)
علاوه بر این، میتوانید دادهها را از JSON، HDF، Clipboard، و منابع آنلاین نیز وارد کنید.
آشنایی با عملیات مقدماتی بر روی دادهها
هنگام کار با DataFrameها در پانداس، عملیات زیر بسیار رایج و کاربردی هستند:
مشاهده چند سطر اول و آخر
df.head() # پنج سطر اول df.tail() # پنج سطر آخر
اطلاعات کلی درباره دادهها
df.info() # تعداد سطر و ستون، نوع داده هر ستون df.describe() # آمار توصیفی عددی هر ستون
دسترسی به سطرها و ستونها
df['Name'] # یک ستون با نام 'Name' df[['Name','Age']] # چند ستون خاص df.loc[0] # سطر با ایندکس ۰ df.iloc[0:3] # سطرهای ۰ تا ۲
تمیز کاری و پیشپردازش دادهها (Data Cleaning)
بسیاری از دادههای دنیای واقعی نیاز به تمیزکاری دارند، چون ممکن است دارای دادههای گمشده، مقادیر نامعتبر یا تکراری باشند.
شناسایی مقادیر گمشده
df.isnull().sum()
حذف یا جایگزینی مقادیر گمشده
df.dropna() # حذف سطرهایی که مقدار گمشده دارند df.fillna(0) # جایگزینی مقادیر گمشده با عدد ۰
حذف دادههای تکراری
df.drop_duplicates()
تغییر و ایجاد ستونهای جدید
یکی دیگر از قابلیتهای مهم پانداس، ایجاد و تغییر ستونهای DataFrame بر اساس محاسبات مختلف است.
df['Age_in_months'] = df['Age'] * 12 # ایجاد ستون سن به ماه df['Name_length'] = df['Name'].apply(len) # محاسبه طول اسم هر فرد
گروهبندی دادهها و آمارگیری
پانداس امکانات قوی برای گروهبندی دادهها و انجام محاسبات آماری برحسب هر گروه ارائه میدهد.
grouped = df.groupby('Category').mean() # میانگین هر گروه بر اساس Category df['Total'] = df['Price'] * df['Quantity'] # محاسبه یک مقدار جدید برای هر سطر
ادغام و ترکیب دادهها (Merge & Join)
در پروژهها معمولاً نیاز به ادغام چند جدول یا فایل داده داریم. پانداس عملیات merge/join مشابه SQL، و concat را ارائه میدهد.
مثال Join دادهها
df_merge = pd.merge(df1, df2, on='ID', how='inner')
الحاق دادهها
df_concat = pd.concat([df1, df2], axis=0) # الحاق سطری df_concat_col = pd.concat([df1, df2], axis=1) # الحاق ستونی
کار با دادههای زمانی (Time Series)
پانداس ابزارهای قدرتمندی برای کار با دادههای مبتنی بر زمان دارد.
df['Date'] = pd.to_datetime(df['Date']) df.set_index('Date', inplace=True) monthly_data = df.resample('M').sum() # گروهبندی و جمعبندی ماهانه
ابزارهای ویژهای مانند rolling, shifting, resample و … نیز فراهم است.
نمونهای از تحلیل داده با پانداس
فرض کنید فایلی شامل اطلاعات فروش محصولات داریم:
OrderID,Date,Product,Category,Quantity,Price 1,2022-01-01,Book1,Books,2,80 2,2022-01-03,Pen,Stationery,10,5 3,2022-01-05,Book2,Books,1,120 4,2022-01-10,Notebook,Stationery,3,25
کد نمونه تحلیل:
df = pd.read_csv('sales.csv') df['Amount'] = df['Quantity'] * df['Price'] # جمع فروش بر اساس دستهبندی sales_per_cat = df.groupby('Category')['Amount'].sum() print(sales_per_cat) # میانگین تعداد خرید بر اساس محصول df.groupby('Product')['Quantity'].mean() # روند فروش به مرور زمان df['Date'] = pd.to_datetime(df['Date']) df.set_index('Date', inplace=True) df.resample('D').sum()['Amount'].plot()
نکتههای مهم و پیشنهادهای کاربردی
- برای کار با دادههای بزرگ، از read_csv با پارامتر chunksize استفاده کنید.
- برای پردازش دادهها به صورت موازی، کتابخانه Dask و Koalas گزینههای خوبی هستند.
- پانداس به راحتی با Matplotlib و Seaborn برای رسم نمودار سازگار است.
- موقع ذخیره دادهها به خروجی، میتوانید از df.to_csv, df.to_excel و غیره استفاده کنید.
جمعبندی
پانداس ابزاری قدرتمند و منعطف برای تحلیل داده با پایتون است. اگر قصد ورود به دنیای علم داده را دارید، یادگیری پانداس ضروری است. این کتابخانه با پوشش کامل از عملیات ساده تا پیچیده، توانسته به استاندارد طلایی در تحلیل داده تبدیل شود. با تسلط بر پانداس، میتوانید دادهها را سریعتر تحلیل کرده و برای تصمیمگیریهای بهتر از آنها استفاده نمایید.