انجمن هوش مصنوعی دانشگاه اصفهان
معرفی کتابخانه Pandas در پایتون
پانداس چیست ؟
پانداس(Pandas)، یک کتابخانه متنباز است که کارایی بالا، ساختاری با قابلیت استفاده آسان و ابزارهای تحلیل داده برای زبان برنامه نویسی پایتون را فراهم میکند. در واقع، میتوان گفت پانداس یک کتابخانه قدرتمند برای تحلیل، پیش پردازش و بصری سازی دادهها است.
چرا کتابخانه Pandas ؟
- این کتابخانه میتواند دادهها را با بهرهگیری از ساختارهای Series و DataFrame که ارائه میکند، به قالبی که برای تحلیل دادهها مناسب هستند، مبدل سازد.
- بسته پانداس حاوی چندین متد برای پالایش مناسب دادهها است.
پانداس دارای ابزارهای گوناگونی برای انجام عملیات ورودی/خروجی است و میتواند داده ها را از فرمت های گوناگون شامل MS Excel ،TVS،CSV و دیگر موارد بخواند.
نصب پانداس
1) نصب به کمک pip، برای نصب پانداس، میتوان قطعه کد زیر را مورد استفاده قرار داد:
pip install pandas
2) افرادی که آناکوندا (Anaconda) را روی سیستم خود نصب دارند، میتوانند از دستور زیر برای نصب کتابخانه Pandas استفاده کنند:
conda install pandas
3) با اینکه پیشنهاد می شود که آخرین نسخه کتابخانه را نصب کنید، ولی اگر کاربری نسخه قدیمی ای را در نظر دارد باید شماره ورژن را دقیقا هنگام نصب وارد کند، مثلا می خواهیم ورژن شماره 0.23.4 را نصب کنیم:
conda install pandas = 0.23.4
برای اطلاعات بیشترروی این لینک کلیک کنید.
خب حالا که آنچه را که برای شروع نیاز بود تقریبا یادگرفتیم و همچنین پانداس دوست داشتنیمون را هم نصب کردیم، میریم سراغ توابع مهم و کاربردیش!
توابع مهم و کاربردی Pandas:
import :
نخستین گام پس از نصب پانداس، وارد کردن بسته آن است
import pandas
همچنین می توان با لقب دادن به pandas در ادامه بجای نام pandas از آن لقب استفاده کنیم، اینکار باعث مختصر شدن و راحتی کار می شود. مانند دستور روبرو:
import pandas as pd
Series:
برای ساخت Series، متد ()pd.Series فراخوانی میشود و یک آرایه، چنانکه در زیر نمایش داده شده، پاس داده میشود.
series1 = pd.Series([1,2,3,4])
print(series1)
DataFrame:
دیتافریم، دادهها را در سطرها و ستونها سازماندهی میکند و از آنها یک ساختار داده دوبُعدی میسازد. در قطعه کد زیر ساخت یک دیتافریم را به کمک پانداس مشاهده می کنیم:
df = pd.DataFrame({
"Column1": [1, 4, 8, 7, 9],
"Column2": ['a', 'column', 'with', 'a', 'string'],
"Column3": [1.23, 23.5, 45.6, 32.1234, 89.453],
"Column4": [True, False, True, False, True]
})
print(df)
لازمه بگم که روش های دیگه ای برای ساخت دیتافریم در پانداس وجود داره که ما اینجا به یه روش بسنده میکنیم اما شما میتونید خیلی راحت با یه سرچ ساده بقیه روش ها رو هم یاد بگیرید.
Read_CSV:
یک فایل CSV (Comma Separated Value)، یک فایل متنی با مقادیری است که به وسیله کاما (,) از یکدیگر جدا شدهاند.
برای وارد کردن فایل های CSV در پانداس مطابق قطعه کد زیر عمل می کنیم (فرض کنید نام فایل name.csv است):
data = pd.read_csv('name.csv')
در اینجا توضیح دو تا از پارامتر های مهم این متد را داریم:
· skiprows :
برای نادیده گرفتن سطر یا سطرهای خاصی از دیتاست.
· low_memory:
دیتاست را بصورت داخلی پردازش می کند تا حافظه کمتری در حین تجزیه استفاده شود.
to_numpy:
برای تبدیل دیتافریم به آرایه که به کمک کتابخانه (Numpy) می توان مدیریت کرد طبق کد زیر عمل می کنیم:
df.to_numpy()
کتابخانه Numpy پیش از این آموزش داده شده است اگر هنوز اون آموزش رو نخوندید پیشنهاد می کنم حتما اونا مطالعه کنید.
describe:
برای مشاهده آمار های عددی دیتافریم و داشتن درک از آن، به صورت روبرو عمل می کنیم:
df.describe()
info:
برای مشاهده اطلاعات مربوط به دیتافریم و درک کلی از ویژگی ها، تایپ مقادیر، و... از این متد می توان استفاده کرد:
df.info()
value_counts:
برای بدست آوردن تعداد تکرار مقادیر، در مثال زیر تعداد تکرار مقدار های ستون Column4 را حساب می کنیم:
df["Column4"].value_counts()
T:
به کمک کد زیر می توان ترانهاده (جایجایی سطر و ستون) دیتافریم را بدست آوریم:
df.T
sort_index:
برای مرتب سازی ستون های دیتافریم از دستور زیر استفاده می کنیم:
df.sort_index(axis=1, ascending=False)
دقت کنید که دستور بالا بصورت نزولی مرتب سازی می کند و برای اینکه مرتب سازی صعودی داشته باشیم باید به شکل زیر عمل کنیم:
df.sort_index(axis=1, ascending=True)
sort_values:
برای مرتب سازی دیتافریم بر اساس یک ستون خاص (مانند Column2) طبق کد زیر پیش می رویم:
df.sort_values(by="Column2")
loc:
این متد ابزار مناسبی است که به کاربر کمک میکند تا تنها سطرهای معینی را در مجموعه داده بخواند. این مورد، در مثال زیر نمایش داده شده است.
df.loc[[0, 4], ["Column3"]]
iloc:
این متد هم مثل متد قبلی است منتها اینبار از اندیس استفاده می کنیم:
df.iloc[2:4, 0:3]
در واقع از قابلیت slices مانند آنچه که در نامپای وآرایه ها بود استفاده می کنیم.
Boolean Indexing:
یکی از امکانات جذاب پانداس، که به کمک آن می توانیم با ایجاد یک شرط داده ها را فیلتر کنیم، به کد زیر توجه کنید:
df[df["Column4"] > 4]
در واقع با اینکار دیتافریمی نمایش داده می شود که مقادیر Column1 آن بزرگتر از 4 می باشند.
iat:
مقدار دهی دستی به مختصات خاصی از دیتافریم. از دستور زیر استفاده می کنیم:
df.iat[4, 0] = 100
dropna:
برای حذف سطر یا ستون هایی که مقادیر گم شده (missing values) دارند و کامل نیستند:
df.dropna(inplace=True)
fillna:
برای پُر کردن سطر یا ستون هایی که مقادیر گم شده (missing values) دارند و کامل نیستند(مثلا با عدد 5 پُر می کنیم):
df.fillna(value=5)
isna:
برای تشخیص مقادیر گم شده استفاده می شود و خروجی به ما جدولی از بولین ها برای مقدار گم شده بودن یا نبودن می دهد:
df.isna()
merge:
کتابخانه پانداس این امکان را برای کاربر فراهم میکند که اشیای دیتافریم را با تابع merge() به یکدیگر متصل کنند. در ادامه، دو دیتافریم ساخته و روش ادغام کردن آنها با یکدیگر نمایش داده شده است، دیتا فریم اول:
d1 = {
'subject_id': ['1', '2', '3', '4', '5'],
'student_name': ['John', 'Emily', 'Kate', 'Joseph', 'Dennis']
}
df1 = pd.DataFrame(d1, columns=['subject_id', 'student_name'])
دیتا فریم دوم:
d2 = {
'subject_id': ['4', '5', '6', '7', '8'],
'student_name': ['Brian', 'William', 'Lilian', 'Grace', 'Caleb']
}
df2 = pd.DataFrame(d2, columns=['subject_id', 'student_name'])
ادغام این دو دیتافریم بر اساس subject_id:
pd.merge(df1, df2, on='subject_id')
concat:
به کمک این متد می توان دو دیتافریم را به یکدیگر الحاق کرد. به قطعه کد زیر توجه کنید:
pd.concat([df1, df2])
group by:
به کمک پانداس می توان کل دیتافریم را بر مبنای ستون خاصی دسته بندی کنیم. قطعه کد زیر دیتافریم ما را بر اساس ستون 2Column و جمع مقادیر مربوطه نمایش خواهد داد:
df.groupby("Column2").sum()
categoricals:
یکی از متد های بسیار مهم می باشد که به ما کمک می کند مقادیری با تایپ category داشته باشیم:
df["grade"]=["a", "b", "b", "e", "a"]
df["grade"] = df["grade"].astype("category")
زمانیکه دیتافریم آپدیت شده را به کمک متد info() خروجی می گیریم:
یه نکته ای باید بگم اونم اینه که اگه تایپ مقادیر grade رو به category تبدیل نمی کردیم مانند ستون Column2 تایپش object می شد این متد رو حتما بلد باشید که بعدا تو الگوریتم های ماشین لرنینگ بش نیاز خواهیم داشت.
time series:
برای تولید زمان های مختلف بکار می رود:
dti = pd.date_range("2021-10-31", periods=3, freq="H")
می توان در کد بالا تعداد دوره زمانی و نوع آن را تغییر داد.
correlation:
با استفاده از این متد می توان ضریب همبستگی داده ها را بدست آوریم. ضریب همبستگی، شدت رابطه و یا نوع رابطه (مستقیم یا معکوس) را نشان می دهد و همواره بین 1 و 1- می باشد.
df.corr()
to_csv:
ذخیره دیتافریم به عنوان یک فایل csv:
df.to_csv("myFirstDataFrame.csv")
و در پایان باید بگم که سعی کردیم تو این مقاله بهترین و کاربردی ترین توابع کتابخانه ی پانداس را براتون بگیم که بتونید این کتابخونه رو خیلی سریع و با کیفیت بالا یادش بگیرید ولی چیزی که میتونه شما رو بیشتر موفق کنه، اینه که تمرین کنید!
موفق باشید!
محمد جعفر پور
احسان قیچی ساز
مطلبی دیگر از این انتشارات
ماشین های هنرمند
مطلبی دیگر از این انتشارات
مقدمهای بر کاربرد هوش مصنوعی در صنعت بازی سازی
مطلبی دیگر از این انتشارات
یادگیری عمیق