رسم نمودار (Plotting)
اینجا می خواهیم ببینیم چطور با pandas و کتابخانه Matplotlib نمودار بکشیم. رسم نمودار در pandas کمک می کند الگوهای پنهان داده را با چشم ببینی، مثل وقتی نمره ها را روی نمودار می کشی.
رسم نمودار در pandas با متد plot()
pandas یک متد به نام plot() دارد. این متد می تواند انواع نمودارها را بسازد؛ ولی برای نمایش روی صفحه از زیرماژول Pyplot در کتابخانه Matplotlib کمک می گیریم. Pyplot مثل یک تخته نقاشی برای نمودارهاست.
در مثال منبع، ابتدا pandas و matplotlib.pyplot را ایمپورت می کنیم. بعد داده ها را از فایل data.csv می خوانیم و با df.plot() همه ستون های عددی را روی یک نمودار خطی ساده رسم می کنیم. در آخر با plt.show() نمودار روی صفحه باز می شود.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv')
df.plot()
plt.show()
اگر دوست داری بیشتر درباره Matplotlib بدانی، منبع اصلی از لینک زیر است:
نمودار پراکندگی (Scatter Plot) در pandas
گاهی می خواهی رابطه بین دو ستون را ببینی. اینجا نمودار پراکندگی (Scatter Plot) به درد می خورد. در نمودار پراکندگی، روی محور x یک ستون و روی محور y ستون دیگر را می گذاری. هر ردیف، یک نقطه روی نمودار می شود.
برای ساخت Scatter Plot باید آرگومان kind را برابر 'scatter' قرار دهی. همچنین با آرگومان های x و y مشخص می کنی کدام ستون ها روی هر محور باشند.
در مثال اول، ستون «Duration» روی محور x و ستون «Calories» روی محور y قرار می گیرند. این یعنی مدت تمرین را با کالری سوزانده شده مقایسه می کنیم.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv')
df.plot(kind = 'scatter', x = 'Duration', y = 'Calories')
plt.show()
در صفحه همبستگی ها دیدیم که همبستگی بین «Duration» و «Calories» مقدار 0.922721 بود. این عدد نشان می دهد رابطه قوی داریم؛ هرچه مدت تمرین بیشتر می شود، کالری هم بیشتر می شود. اگر به Scatter Plot نگاه کنی، این روند را با چشم می بینی.
حالا یک مثال دیگر می سازیم که رابطه بین ستون ها ضعیف است. این بار «Duration» روی محور x و «Maxpulse» روی محور y قرار دارند. در همبستگی ها دیدیم که عدد آن ها 0.009403 بود؛ یعنی تقریبا هیچ رابطه ای ندارند.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv')
df.plot(kind = 'scatter', x = 'Duration', y = 'Maxpulse')
plt.show()
در این نمودار پراکندگی، نقطه ها پراکنده و نامنظم هستند. یعنی از روی مدت تمرین نمی توان حداکثر نبض را درست حدس زد. این نمونه ای از رسم نمودار در pandas است که رابطه ضعیف را خوب نشان می دهد.
هیستوگرام (Histogram) برای دیدن توزیع داده
نوع دیگری از رسم نمودار در pandas، هیستوگرام (Histogram) است. هیستوگرام به جای رابطه بین دو ستون، توزیع یک ستون را نشان می دهد. یعنی نشان می دهد هر بازه عددی چقدر تکرار شده است.
برای ساخت هیستوگرام، کافی است روی یک ستون متد plot() را صدا بزنی و kind را برابر 'hist' قرار دهی. در مثال منبع، از ستون «Duration» استفاده شده است.
df["Duration"].plot(kind = 'hist')
این هیستوگرام نشان می دهد چند تمرین بین 50 تا 60 دقیقه طول کشیده اند، یا چند تمرین خیلی کوتاه بوده اند. مثل این است که نمره های کلاس را گروه بندی کنی و ببینی چند نفر در بازه 18 تا 20 گرفته اند.
گام های عملی برای رسم نمودار در pandas
- داده خودت را در یک DataFrame مثل
dfآماده کن؛ مثلا باread_csv. - برای بررسی رابطه بین ستون ها، از صفحه همبستگی ها در pandas کمک بگیر.
- اگر می خواهی همه ستون های عددی را یکجا ببینی، از
df.plot()استفاده کن و بعدplt.show()را صدا بزن. - برای نمودار پراکندگی، از
df.plot(kind = 'scatter', x = 'ستون1', y = 'ستون2')استفاده کن. - برای دیدن توزیع یک ستون، از هیستوگرام استفاده کن؛ مثلا
df["Duration"].plot(kind = 'hist').
اگر هنوز داده ات کمی به هم ریخته است، قبل از رسم نمودار در pandas، بخش پاک سازی داده در pandas را هم مرور کن تا نمودارها معنی دارتر شوند.
جمع بندی سریع
- متد
plot()ابزار اصلی رسم نمودار در pandas است. - برای نمودار پراکندگی باید
kind = 'scatter'و محورهایxوyرا مشخص کنی. - برای دیدن توزیع یک ستون، از هیستوگرام با
kind = 'hist'استفاده کن. - Scatter Plot برای دیدن رابطه دو ستون عالی است.
- قبل از رسم نمودار در pandas، بهتر است داده ها را تمیز و آماده کنی.