دیتافریم ها (DataFrames)
در این صفحه با دیتافریم pandas آشنا می شوی. دیتافریم pandas مثل یک جدول کامل است؛ با سطر و ستون، شبیه جدول نمره های کلاس در دفتر مدرسه.
دیتافریم pandas چیست؟
در منبع گفته شده DataFrame یک ساختار داده دوبعدی است. دوبعدی یعنی داده ها در سطر و ستون قرار می گیرند؛ مثل یک جدول یا آرایه دوبعدی.
در مثال منبع، از یک دیکشنری ساده برای ساخت دیتافریم pandas استفاده شده است. هر کلید دیکشنری تبدیل به نام ستون می شود و لیست مقدارها همان ستون جدول است.
import pandas as pd
data = {
"calories": [420, 380, 390],
"duration": [50, 40, 45]
}
# load data into a DataFrame object:
df = pd.DataFrame(data)
print(df)
خروجی این کد جدولی با دو ستون calories و duration است. هر ردیف جدول یک ردیف ورزش را نشان می دهد. برای شروع درک دیتافریم pandas این تصویر خیلی کمک می کند.
اگر صفحه سری ها در pandas را خوانده باشی، حالا می بینی که دیتافریم چند سری کنار هم است.
یافتن سطرها با ویژگی loc
در منبع توضیح داده شده که دیتافریم pandas شبیه یک جدول است. برای برگرداندن یک یا چند سطر، از ویژگی loc استفاده می کنیم. loc یعنی «پیدا کردن مکان» سطرها بر اساس اندیس.
در مثال اول، فقط سطر صفر برگردانده می شود. یعنی اولین ردیف جدول که مربوط به اولین ورزش است.
# refer to the row index:
print(df.loc[0])
در منبع گفته شده نتیجه این کد یک Series است. یعنی سطر به تنهایی به شکل یک ستون عمودی نمایش داده می شود؛ با نام ستون ها و مقادیرشان.
اگر یک لیست از اندیس ها به loc بدهی، چند سطر را باهم می گیری. در این صورت نتیجه دوباره یک دیتافریم کامل است.
# use a list of indexes:
print(df.loc[[0, 1]])
در این مثال فقط ردیف های صفر و یک نمایش داده می شوند. در منبع اشاره شده که نتیجه این حالت یک DataFrame است؛ یعنی جدول کوچک شده با همان دو ردیف.
ایندکس های نام گذاری شده در دیتافریم ها
در منبع گفته شده با آرگومان index می توانی برای هر سطر یک نام بگذاری. این نام مثل برچسب است و پیدا کردن سطر را ساده تر می کند.
در مثال، برای هر روز ورزش یک نام مثل day1 و day2 و day3 گذاشته اند. هنوز همان جدول کالری و مدت زمان را داریم؛ فقط ردیف ها اسم گرفته اند.
import pandas as pd
data = {
"calories": [420, 380, 390],
"duration": [50, 40, 45]
}
df = pd.DataFrame(data, index=["day1", "day2", "day3"])
print(df)
خروجی این کد همان جدول قبلی است. فقط به جای اندیس های عددی، نام day1 و day2 و day3 در سمت چپ جدول دیده می شود. این کار برای داده های زمانی یا اسامی بسیار کاربردی است.
دسترسی به سطرها با ایندکس نام گذاری شده
در منبع توضیح داده شده که می توانی در loc از همین نام ها استفاده کنی. به جای عدد 0، مستقیم بنویس day2 تا همان ردیف برگردد.
# refer to the named index:
print(df.loc["day2"])
در خروجی، سطر مربوط به day2 نمایش داده می شود. مثل این است که در دفتر حضور و غیاب اسم دانش آموز را بدهی و فقط ردیف همان دانش آموز را ببینی.
بارگذاری فایل ها در یک دیتافریم pandas
در منبع گفته شده اگر مجموعه داده ات داخل فایل باشد، pandas می تواند آن را داخل یک دیتافریم pandas لود کند. رایج ترین حالت، فایل CSV است.
CSV یعنی فایل متنی که ستون ها را با ویرگول جدا می کند. شبیه خروجی ذخیره کردن یک جدول اکسل به صورت متن.
import pandas as pd
df = pd.read_csv("data.csv")
print(df)
در این کد، read_csv فایل data.csv را می خواند و آن را به یک دیتافریم تبدیل می کند. در منبع گفته شده در فصل های بعدی، وارد جزئیات بیشتر وارد کردن فایل ها می شویم. در UnderDevelops می توانی ادامه را در صفحه خواندن CSV در pandas دنبال کنی.
گام های پیشنهادی برای تمرین دیتافریم ها
- یک دیکشنری ساده مانند مثال کالری و مدت زمان بساز.
- با pd.DataFrame از آن یک دیتافریم pandas درست کن.
- با df.loc[0] و df.loc[[0, 1]] سطرها را چاپ کن.
- برای دیتافریم، ایندکس های نام گذاری شده مثل day1 و day2 تعریف کن.
- با df.loc["day2"] فقط ردیف دوم را نمایش بده.
اگر این گام ها را انجام دادی، درک تو از دیتافریم pandas خیلی محکم تر می شود و آماده رفتن به سراغ کار با فایل های واقعی هستی.
جمع بندی سریع
- دیتافریم pandas یک جدول دوبعدی با سطر و ستون است.
- با DataFrame می توانی از دیکشنری ها جدول های مرتب بسازی.
- ویژگی loc برای برگرداندن یک یا چند سطر استفاده می شود.
- ایندکس های نام گذاری شده پیدا کردن سطرها را ساده تر می کنند.
- با read_csv می توانی فایل های CSV را داخل دیتافریم pandas لود کنی.