پایتون در SPSS – راهنمای گام به گام
زبان برنامه نویسی «پایتون» (Python) یکی از پر طرفدارترین زبانهای برنامهنویسی در حوزه محاسبات ریاضی و بخصوص «علم داده» (Data Science) و حوزههای «دادهکاوی» (Data Mining) و «یادگیری ماشین» (Machine Learning) است. به همین دلیل شرکت IBM که در چند سال اخیر نرمافزار SPSS را خریداری کرده و در حال توسعه آن است، سعی کرده این امکان را به کاربران بدهد که بتوانند از برنامههای نوشته شده با زبان پایتون، در محیط SPSS استفاده کنند. این کار میتواند ضعفهایی که در محیط برنامهنویسی (Syntax) نرمافزار SPSS وجود داشته را از بین برده و امکان استفاه از توابع و دستورات پایتون در این محیط را فراهم آورد.
در این نوشتار به بررسی چگونگی استفاده از پایتون در پنجره Syntax نرمافزار SPSS پرداخته و در انجام محاسبات آماری از سرعت بیشتری بهره خواهیم برد. حتی قادر خواهیم بود به این ترتیب شیوههای جدید تحلیل آماری و محاسبات پیچیده موجود در پایتون را درون SPSS به کار بگیریم. در نسخههای جدید نرمافزار SPSS با استفاده از افزونه (Add-Ins) میتوانیم از کتابخانههای محاسباتی پایتون استفاده کنیم و دیگر نوشتن کد به زبان پایتون ضروری نیست.
برای درک راحتتر و ارائه مناسبتر این موضوع، در وبلاگ فرادرس دنبالهای از نوشتارها را تهیه کردهایم که به شناخت و به کارگیری پایتون در SPSS میپردازند. این سری نوشتارها در سه قسمت ارائه میشود:
- قسمت اول: پایتون در SPSS – راهنمای گام به گام
- قسمت دوم: انجام عملیات تکراری با پایتون در SPSS – راهنمای گام به گام
- قسمت سوم: استفاده از افزونههای آماده پایتون در SPSS – راهنمای گام به گام
به عنوان پیشنیاز و برای آشنایی با محیط نرمافزار SPSS و کار با آن بهتر است مطلب پنجره ویرایشگر داده (Data Editor) در SPSS — راهنمای کاربردی و امکانات جدید SPSS نسخه 2۵ که باید آنها را بدانید را بخوانید. همچنین، مطالعه زبان برنامه نویسی پایتون (Python) — از صفر تا صد و تهیه ویدئوهای مجموعه آموزشهای برنامهنویسی پایتون نیز خالی از لطف نیست.
پایتون در SPSS
قبل از هر چیز بهتر است ابتدا با «زبان برنامهنویسی پایتون (Python Programming Language) آشنا شویم. یکی از زبانهای برنامهنویسی «متن باز» (Open Source) که قابلیت انجام محاسبات ریاضی و آماری را دارد «پایتون» (Python) است. یکی از علتهای پیشرفت و توسعه سریع این زبان برنامهنویسی، «متن باز (Open Source) بودن آن است که امکان بهینهسازی و افزودن امکانات جدید را به جمعی از متخصصان و برنامهنویسان میدهد. فراگیری زبان برنامهنویسی پایتون ساده است، به همین دلیل افرادی که تخصص برنامهنویسی ندارند، سریعتر آن را یاد گرفته و به کار میبرند. در حالیکه برنامهنویسهای حرفهای ممکن است برای تطبیق نگاهشان به پایتون احتیاج به زمان بیشتری داشته باشند.
کتابخانه و توابع آماده زیادی برای پایتون در زمینههای مختلف وجود دارد. برای مثال برای انجام محاسبات آماری و تحلیلهای پیچیده آن، پایتون کتابخانههای مشخص و قابل استفادهای دارد که در محیط برنامهنویسی به کار گرفته میشوند حتی برای علوم زیستی و مهندسی نیز کتابخانه یا مجموعهای از توابع قابل استفاده در پایتون وجود دارد. در نتیجه احتیاج نیست که همه چیز را از اول طرح و پیادهسازی کنید.
ارتباط پایتون و SPSS
نرمافزار SPSS و زبان برنامهنویسی پایتون دو برنامه مجزا و مستقل هستند. در نتیجه میتوانید هر دوی آنها را روی رایانه شخصی خود نصب و استفاده کنید بدون اینکه تداخلی با هم داشته باشند. خوشبختانه از نسخه 15 نرمافزار SPSS، «افزونهای» (Add ins) طراحی شد که ارتباط بین SPSS و پایتون را برقرار میکند. در نتیجه بیشتر امکاناتی که در SPSS وجود دارند، در پایتون قابل استفاده بوده و همچنین میتوان در محیط برنامهنویسی SPSS از توابع و دستورات پایتون نیز کمک گرفت.
به کمک این افزونه، کدهایی که به زبان پایتون در پنجره Syntax نرمافزار SPSS وارد میکنید به پایتون ارسال شده و توسط آن اجرا میشود. به این ترتیب متغیرها و ساختار آنها از SPSS به پایتون ارسال شده و دستورالعملها به زبان پایتون یک به یک محاسبه میشوند و نتیجه محاسبات به محیط SPSS باز میگردد. از طرف دیگر، امکان فراخوانی مولفههایی که درون پنجره خروجیهای SPSS قرار گرفتهاند، توسط پایتون وجود دارد، در نتیجه میتوانید مقدارهای موجود در جدولها و نمودارهای SPSS را به پایتون انتقال و شیوه نمایش آنها را تغییر دهید. در ادامه این نوشتار به شیوه ارتباط بین این دو نرمافزار پرداخته و با ذکر مثالهایی نحوه کار را توضیح خواهیم داد.
نصب و راه اندازی پایتون در SPSS
برای ارتباط بین پایتون و SPSS به سه نرمافزار احتیاج دارید.
- SPSS
- Python
- SPSS Python Essentials
در نتیجه برای استفاده از امکانات پایتون در SPSS علاوه بر نرمافزار SPSS و نصب زبان برنامهنویسی پایتون، باید افزونه SPSS Python Essentials را نیز نصب کنید. این کار را هنگامی که در مراحل نصب نرمافزار SPSS هستید باید انجام دهید. پنجرهای که در تصویر زیر میبینید در زمان نصب نرمافزار SPSS ظاهر میشود. با انتخاب گزینه YES این افزونه نصب و قابل استفاده خواهد بود. با اضافه شدن این افزونه، توابع معمول زبان برنامهنویسی پایتون در SPSS پیاده سازی میشوند و دیگر احتیاجی به نصب این نرمافزار به طور مستقل ندارید.
البته با توجه به نسخههای مختلف SPSS ممکن است این کار به راحتی و همراه با نصب نرمافزار صورت نگیرد. جدول زیر در این مورد شما را راهنمایی میکند.
نسخه نرمافزار SPSS | نحوه نصب | SPSS Python Essentials |
نسخههای ۲۱ به بالا | هنگام نصب نرمافزار SPSS | هنگام نصب نرمافزار |
نسخه ۱۸ تا ۲۰ | دریافت از وب سایت IBM SPSS | دریافت فایل و به روز رسانی نرمافزار |
نسخه ۱۷ | نصب افزونه SPSS Python | SPSS 17 Python Essentials |
نسخه ۱۶ | نصب افزونه SPSS Python | --- |
نسخه ۱۵ | نصب افزونه SPSS Python | SPSS 15 Python Essentials |
نسخه ۱۴ به قبل | --- | --- |
حال که این افزونه را به نرمافزار SPSS اضافه کردهاید، لازم است که آن را به کار ببریم. برای اینکه مطمئن شویم که افزونه به درستی کار میکند و پایتون درون SPSS قرار گرفته است، دستورات زیر را در پنجره Syntax نرمافزار SPSS وارد و اجرا کنید.
تصویر زیر نحوه قرارگیری کد بالا در پنجره Syntax را نشان داده است.
با انتخاب همه کد به کمک کلیدهای ترکیبی ctrl+a و فشردن دکمه Run که در تصویر مشخص شده، برنامه اجرا شده و در یک فایل اطلاعاتی SPSS یا Dataset، متغیرهای V1 تا V5 ایجاد میشوند. خروجی در پنجره Output به صورت زیر خواهد بود.
بنابراین در پنجره Data Editor مطابق با تصویر زیر، پنج متغیر (البته بدون داده) ایجاد میشوند. پیشوند u برای این متغیرها که در خروجی دیده میشود، نشان میدهد که قالب اسامی این متغیرها به صورت unicode است. توجه داشته باشید که انتخاب اسامی متغیرها در نسخه ۲۴ به بعد SPSS به شکل پیشفرض با قالب unicode صورت میگیرد. هر چند ممکن است فضای اشغال شده برای اسامی متغیرها در این حالت بیشتر باشد ولی امکان نامگذاری و تعیین محتوای متغیرها با حروف فارسی با این قالب بوجود میآید.
اگر عمل نصب افزونه SPSS Python Essentials به درستی انجام شده باشد میتوانید محل نصب پایتون را از فهرست Edit و گزینه Options در برگه File Locations مشاهده کنید.
در صورتی که عمل نصب به درستی انجام نشده باشد، این قسمت به مانند تصویر زیر خاکستری رنگ خواهد بود. در این صورت لازم است که مراحل نصب نرمافزار SPSS را از ابتدا طی کنید تا هنگام درخواست نصب افزونه پاسخ Yes را انتخاب و نصب را تکمیل کنید.
نکته: اگر افزونه SPSS Python Essentials به درستی نصب نشده باشد، در پنجره خروجی SPSS یعنی پنجره SPSS Output پیغام خطای زیر را مشاهده خواهید کرد.
چگونگی کار افزونه پایتون در SPSS
قبل از هر کاری بهتر است ابتدا به تفاوت کدهای پایتون و SPSS بپردازیم. به این منظور به نکات زیر توجه داشته باشید.
- کدهای پایتون در میان کدهای SPSS و در پنجره Syntax نوشته میشوند.
- این کدها از درون SPSS به زبان پایتون ارسال میشوند تا اجرا گردند.
- پایتون با توجه به کدهای SPSS و Python، اسامی متغیرها و مقدارهای آنها را از پنجره Data Editor و همچنین جدولها و نمودارها را از پنجره Output استخراج میکند.
- براساس دستورالعملهایی که به زبان پایتون نوشته شده، محاسبات مربوط به تغییر متغیرها یا انجام تحلیلهای آماری صورت پذیرفته و نتایج به SPSS باز میگردد. البته ممکن است این نتایج بوسیله کدهای Syntax در SPSS باز هم به کار گرفته شوند.
تصویر زیر به خوبی این ارتباط را نشان داده است.
برای مشخص کردن قطعه کدی که به پایتون نوشته شده است، ابتدای کدها از عبارت begin program و البته در انتها نیز از end program در پنجره Syntax استفاده میکنیم. به این ترتیب دستورات و کدهایی که در بین این دو دستور قرار گیرند برای اجرا به پایتون ارسال میشوند. به تصویر زیر دقت کنید. مشخص است که توسط این کد Syntax فایل داده veryintersingdata.sav فراخوانی شده و نمودارهایی برای ترسیم فراوانی متغیرهای V286 تا V301 توسط کد پایتون ترسیم شده است.
در حالیکه اگر بخواهیم این کار را با دستورات SPSS انجام بدهیم باید برای هر بار ترسیم نمودار دستوری را اجرا کنیم. تصویر زیر این مقایسه را بهتر نشان داده است.
برای اطلاع بیشتر از نحوه اجرای این کد، بهتر است روال و مراحل اجرای دستورات را مرور کنیم. همانطور که میدانید سه پنجره اصلی در SPSS وجود دارد که در ادامه به معرفی هر یک میپردازیم.
- پنجره ویرایشگر دادهها (Data Editor): در این پنجره امکان ورود دادهها و همچنین تعریف متغیرها وجود دارد. اگر محاسبات به منظور ایجاد متغیر جدید صورت گیرد، نتیجه محاسبات در قالب این متغیر جدید در این پنجره قابل مشاهده است.
- پنجره نمایشگر خروجی (Output Viewer): نتایج تحلیلها و خروجی دستورات به کار رفته در SPSS، در این پنجره مشاهده میشود. معمولا این نتایج به صورت جدول یا نمودارهایی دیده میشوند. البته امکان اصلاح یا تغییر محتویات جدولها یا نمودارها نیز در این پنجره وجود دارد.
- پنجره ویرایشگر کد (Syntax Editor): در این پنجره، کدهای SPSS وارد شده و اجرا و خطایابی برنامههای نوشته شده با زبان SPSS Syntax امکان پذیر است. البته میتوانید دستورات مربوط به تحلیلها را در «پنجرههای گفتگوی» (Dialog Box) با دکمه Paste به این پنجره منتقل کنید.
نکته: درون هر یک از این پنجرهها ممکن است پنجرههایی دیگری نیز ظاهر شوند. برای مثال با دوبار کلیک روی یک نمودار در پنجره نمایشگر خروجی، باعث ظاهر شدن پنجره Chart Editor شده که در آن امکان تغییر ویژگیهای نمودارها را وجود دارد. همچنین اگر روی یک جدول که توسط دستورات جدید SPSS ایجاد شده دوبار کلیک کنید، احتمالاً وارد پنجره Model Viewer میشوید و میتوانید نحوه نمایش خروجی را تغییر دهید.
کدنویسی و قابلیت برنامهپذیری در SPSS
از آنجایی که «قابلیت برنامهپذیری» (Programmability) و «کد نویسی» (Scripting) پایتون درون SPSS متفاوت است، با ذکر دو مثال به ویژگیهای هر یک خواهیم پرداخت. ابتدا به بررسی «کد نویسی» (Scripting) اشاره میکنیم.
کدنویسی پایتون در SPSS
انتظار از کد نویسی، انجام کاری است که براساس توابع و دستورات زبان مورد نظر صورت پذیرد. کد نویسی پایتون در SPSS به کمک ابزاری به نام SpssClient انجام شده که امکان رد و بدل کردن یا تبدیل اطلاعات بین و خارج از رابطه سلسله مراتب تعریف شده در تصویر 1 را فراهم میسازد. باید توجه داشته باشید که کد نویسی و قابلیت برنامهنویسی پایتون در محیط SPSS متفاوت است. برای روشن شدن موضوع به کدهایی که در زیر نوشته شده، دقت کنید. البته پیشنهاد میکنیم که بیشتر یادداشتهای نوشته شده در کدها را مطالعه کنید تا منظور از هر قطعه کد را متوجه شوید.
همانطور که مشاهده میکنید، دسترسی به پنجره خروجی فعال توسط تابع SpssClient.GetDesignatedOutputDoc امکانپذیر شده و مولفههای خروجی درون متغیر oDoc قرار میگیرد. مشخص است که در اینجا استفاده از پیشوند o برای متغیرها، بیانگر Object است. به همین ترتیب هر یک از مولفههای خروجی توسط دستور oDoc.GetOutputItems درون متغیر oItem قرار میگیرند. حلقه تکرار (for) که در خط بعدی مشاهده میکنید، برای دسترسی به تک تک گزینههای پنجره خروجی و انتخاب جدول محوری (Pivot Table) از بین آنها است. در انتها نیز با استفاده از دستور print pTable.GetTitleText، عنوان جدولهای محوری موجود در پنجره خروجی SPSS چاپ خواهد شد.
نکته: توجه داشته باشید که کدهای پایتون به حروف بزرگ و کوچک لاتین حساس هستند در نتیجه نوشتن اسامی توابع و دستورالعملها باید دقیقا به شکل بالا صورت بگیرد.
به این ترتیب اگر محتوای پنجره خروجی شما مانند تصویر 2 باشد با اجرای کد بالا، نتیجه زیر را در پنجره Output خواهید گرفت.
همانطور که مشخص است در بخش کدهای پایتون، از توابع مربوط به فراخوانی اطلاعات توسط ابزار SpssClient از درون SPSS استفاده شد و از دستوراتی که مربوط به زبان کدنویسی SPSS Syntax بود کمکی نگرفتیم.
قابلیت برنامهپذیری پایتون در SPSS
در این سبک، امکان استفاده از توابع و دستورات SPSS درون کدهای نوشته شده در زبان پایتون فراهم میشود و این پایتون است که ابزار تبادل دادهها را به SPSS فراهم میسازد. برنامهای که در ادامه مشاهده میکنید، وظیفه دارد که اسامی متغیرهای تعریف شده در SPSS را تبدیل به حروف کوچک کند. همانطور که میبینید از SpssClient خبری نیست.
در بخش حلقه تکرار (for) براساس تعداد متغیرهای تعریف شده در ویرایشگر داده، اسامی متغیرها استخراج شده و البته با استفاده از زبان کد نویسی SPSS درون برنامه پایتون این کار صورت گرفته است. مشخص است که تابع spss.GetVariableName این کار را به عهده دارد. همچنین دستور spss.submit نیز برای تغییر نام متغیرها استفاده شده است. همانطور که میبینید، فقط از امکانات تعریف حلقه تکرار پایتون برای انجام عملیات کمک گرفتهایم.
بطور خلاصه میتوان گفت که در این مثال، SPSS، کدهایی را به پایتون ارسال میکند. پایتون به دنبال اسامی متغیرها گشته و سپس با استفاده از دستور RENAME VARIABLES که مخصوص SPSS است اسامی متغیرها را به صورت حروف کوچک در میآورد. به این ترتیب به نظر میرسد که کد SPSS شامل برنامهای از پایتون است که درون آن قطعه کدی از SPSS وجود دارد. بنابراین اگر دو متغیر در مجموعه داده فعال به نامهای First_VARiable و SECOND_VAriable داشته باشیم، با اجرای کدی که در بالا اشاره شد، اسامی متغیرها به حروف کوچک و به شکل first_variable و second_variable تبدیل خواهند شد.
نکته: توجه داشته باشید که امکان استفاده از فاصله خالی (space) برای نامگذاری متغیرها در SPSS وجود ندارد به همین دلیل با علامت "_" بخشها و کلمههای به کار رفته در نام متغیر را جدا کردهایم.
تفاوت قابلیت برنامهپذیری و کدنویسی در اینجا نهفته است که معمولا هنگامی که از قابلیت برنامهپذیری پایتون در SPSS استفاده میکنید، هدف انجام راحتتر دستورات و عملیات و استفاده از امکانات پایتون برای انجام کارهای تکراری است. در حالیکه اگر از کدنویسی پایتون در SPSS کمک میگیریم، هدف انجام کاری است که به تنهایی با کدهای SPSS امکان ندارد و تنها با استفاده از امکاناتی که توسط توابع و دستورات پایتون وجود دارد، میتوان آن عملیات را انجام داد.
خلاصه و جمعبندی
در این نوشتار با نحوه نوشتن کدهای پایتون در محیط SPSS آشنا شدیم. به این ترتیب میتوان از امکانات برنامهنویسی پایتون در این محیط استفاده کرد. در قسمت دوم از این سری نوشتارها به بررسی عمیقتر این مباحث پرداخته و با ذکر مثالهایی مانند جایگزینی متن با کدهای پایتون، عملیاتی را انجام میدهیم که بطور معمول ممکن است به سختی در SPSS صورت پذیرد. همچنین در قسمت سوم نیز به معرفی چند ابزار آمادهای که بوسیله کدهای پایتون برای نرمافزار SPSS تهیه شده، پرداخته و نحوه نصب و اجرای آنها را فرا خواهیم گرفت.
اگر علاقهمند به یادگیری مباحث بیشتر در مورد SPSS و پایتون هستید، آموزشهای زیر به شما پیشنهاد میشوند:
- مجموعه آموزشهای آمار و احتمالات
- آموزشهای نرم افزار آماری SPSS
- مجموعه آموزشهای برنامهنویسی پایتون
- آموزش آماده سازی داده ها برای تحلیل آماری در SPSS
- پنجره ویرایشگر داده (Data Editor) در SPSS — راهنمای کاربردی
- امکانات جدید SPSS نسخه 2۵ که باید آنها را بدانید
^^