آشنایی با ترسیم داده ها (رسم نمودار) در پایتون
ترسیم و تجسم داده ها و اطلاعات، تلاش برای ایجاد نظم و انضباط دیداری در راستای درک بهتر الگوها، روندها و همبستگی بین داده ها می باشد. شناسایی ویژگی های داده ممکن است به روش های دیگر قابل کشف نباشند.
زبان برنامه نویسی #پایتون چندین کتابخانه گرافیکی عالی با ویژگی های گوناگون را ارائه می نماید. اگر می خواهید یک نمایش تعاملی، پویا و بسیار سفارشی از داده ها ایجاد کنید، پایتون کتابخانه های بسیار کاربردی را برای این منظور فراهم نموده است.
در اینجا برخی از محبوب ترین کتابخانه های گرافیکی پایتون برای آشنایی معرفی می شوند.
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())
کتابخانه 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')
برای اینکه مفهوم بیشتری به نمودار اضافه کنیم می توانیم از رنگ ها برای هر دسته یا کلاس داده کمک بگیریم. برای این منظور یک نوع داده دیکشنری ایجاد می کنیم و برای هر دسته از داده های یک رنگ بخصوص را نگاشت می نماییم. سپس با یک حلقه 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')
نمودار خطی (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()
نمودار هیستوگرام (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')
نمودار میله ای (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')
در مقاله های بعدی به معرفی کتابخانه های بصری دیگر پایتون خواهیم پرداخت.
مطلبی دیگر از این انتشارات
صنعت بیمه و تاثیری که هوش مصنوعی در تحول آن دارد
مطلبی دیگر از این انتشارات
مِهداده (کلان داده) چیست؟ (۵)
مطلبی دیگر از این انتشارات
الگوریتم و فلوچارت به زبان ساده