آشنایی با ترسیم داده ها (رسم نمودار) در پایتون

ترسیم و تجسم داده ها و اطلاعات، تلاش برای ایجاد نظم و انضباط دیداری در راستای درک بهتر الگوها، روندها و همبستگی بین داده ها می باشد. شناسایی ویژگی های داده ممکن است به روش های دیگر قابل کشف نباشند.زبان برنامه نویسی #پایتون چندین کتابخانه گرافیکی عالی با ویژگی های گوناگون را ارائه می نماید. اگر می خواهید یک نمایش تعاملی، پویا و بسیار سفارشی از داده ها ایجاد کنید، پایتون کتابخانه های بسیار کاربردی را برای این منظور فراهم نموده است.در اینجا برخی از محبوب ترین کتابخانه های گرافیکی پایتون برای آشنایی معرفی می شوند. Matplotlib: رابط کاربری سطح پایین با انعطاف بالا Pandas Visualization: رابط کاربری آسان، ساخته شده در Matplotlib Seaborn: رابط کاربری سطح بالا ، سبک های پیش فرض عالی Plotly: رابط کاربری سطح بالا، امکان ارتباط تعاملیدر این مقاله یاد خواهیم گرفت که چگونه با استفاده از این کتابخانه ها و همچنین نحوه استفاده از برخی از ویژگی های خاص هر کتابخانه، نمایش گرافیکی مناسبی را ایجاد کنیم. وارد کردن مجموعه داده (Importing Datasets)برای وارد کردن مجموعه داده با فرمت csv می توان از تابع read_csv از کتابخانه Pandas استفاده نمود. در این مقاله از مجموعه داده استاندارد iris استفاده کرده ایم.import pandas as pd iris = pd.read_csv('iris.csv', names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']) print(iris.head())Iris Dataset headکتابخانه Matplotlib:کتابخانه Matplotlib محبوب ترین کتابخانه ترسیم نمودار در زبان برنامه نویسی پایتون است. این کتابخانه رابط کاربری شبیه نرم افزار Matlab دارد که انعطاف و آزادی زیادی را با تعداد کم نوشتن خط کد ارائه می دهد.برای نصب Matplotlib از می توان به روش زیر عمل نمود.pip install matplotlibکتابخانه Matplotlib بطور خاص برای رسم و ایجاد نمودارهای پایه ای مانند نمودار خطی، نمودار ستونی، هیستوگرام و بسیاری موارد دیگر استفاده نمود. این کتابخانه را به روش زیر در زبان برنامه نویسی پایتون وارد می نماییم.import matplotlib.pyplot as pltنمودار پراکندگی (Scatter Plot)برای ایجاد یک نمودار پراکندگی در Matplotlib می توانیم از تابع scatter استفاده کنیم و همچنین با استفاده از تابع subplots می توانیم عنوان نمودار و نام محورها را تعیین نماییم.# create a figure and axis fig, ax = plt.subplots() # scatter the sepal_length against the sepal_width ax.scatter(iris['sepal_length'], iris['sepal_width']) # set a title and labels ax.set_title('Iris Dataset') ax.set_xlabel('sepal_length') ax.set_ylabel('sepal_width')Scatter Plotبرای اینکه مفهوم بیشتری به نمودار اضافه کنیم می توانیم از رنگ ها برای هر دسته یا کلاس داده کمک بگیریم. برای این منظور یک نوع داده دیکشنری ایجاد می کنیم و برای هر دسته از داده های یک رنگ بخصوص را نگاشت می نماییم. سپس با یک حلقه for هر رنگ را به یک نقطه اختصاص میدهیم.# create color dictionary colors = {'Iris-setosa':'r', 'Iris-versicolor':'g', 'Iris-virginica':'b'} # create a figure and axis fig, ax = plt.subplots() # plot each data-point for i in range(len(iris['sepal_length'])): ax.scatter(iris['sepal_length'][i], iris['sepal_width'][i],color=colors[iris['class'][i]]) # set a title and labels ax.set_title('Iris Dataset') ax.set_xlabel('sepal_length') ax.set_ylabel('sepal_width')Scatter Plot colored by classنمودار خطی (Line Chart)در کتابخانه Matplotlib ما می توانیم یک نمودار خطی با فراخوانی تابع plot ایجاد نماییم. همچنین می توانیم چند نمودار خطی را در یک صفحه از نمودار نمایش دهیم البته به شرطی که محور افقی نمودار ثابت باشد یا بیان دیگر جدول داده چند ستون مجزا داشته باشد. # get columns to plot columns = iris.columns.drop(['class']) # create x data x_data = range(0, iris.shape[0]) # create figure and axis fig, ax = plt.subplots() # plot each column for column in columns: ax.plot(x_data, iris[column], label=column) # set title and legend ax.set_title('Iris Dataset') ax.legend()Line Chartنمودار هیستوگرام (Histogram)در کتابخانه Matplotlib ما می توانیم یک نمودار هیستوگرام با فراخوانی تابع hist ایجاد نماییم. اگر کلاس های داده ای که در هر ستون مقدار خاصی درج شده است را در نظر بگیریم، نمودار هیستوگرام به طور خودکار میزان رخداد هر کلاس را محاسبه می کند.# create figure and axis fig, ax = plt.subplots() # plot histogram ax.hist(iris['sepal_length'], bins=12) # set title and labels ax.set_title('sepal_length') ax.set_xlabel('Points') ax.set_ylabel('Frequency')Histogramنمودار میله ای (Bar Chart)یک نمودار میله ای می تواند توسط تابع bar در کتابخانه Matplotlib ایجاد شود. نمودار میله ای بطور خودکار نمی تواند فراوانی هر دسته را محاسبه نماید. بنابراین ما از تابع value_counts کتابخانه pandas برای این کار استفاده می نماییم. نمودار میله ای برای داده های طبقه بندی شده که تعداد طبقه های آن زیاد نباشد (کمتر از 30) بسیار کاربردی است. در صورتیکه تعداد طبقه ها زیاد باشد نمودار بسیار شلوغ می شود قابلیت خوانایی و وضوح خود را از دست می دهد.# create a figure and axis fig, ax = plt.subplots() # count the occurrence of each class data = iris['class'].value_counts() # get x and y data points = data.index frequency = data.values # create bar chart ax.bar(points, frequency) # set title and labels ax.set_title('Iris Class') ax.set_xlabel('Points') ax.set_ylabel('Frequency')Bar Chartدر مقاله های بعدی به معرفی کتابخانه های بصری دیگر پایتون خواهیم پرداخت.