انجام عملیات تکراری با پایتون در SPSS – راهنمای گام به گام


یکی از زبانهای پرطرفدار برای انجام محاسبات ریاضی در حوزه «علم داده» (Data Science) و «یادگیری ماشین» (Machine Learning)، پایتون است بطوری که در سالهای اخیر شاهد رشد بسیار زیاد استفاده کنندگان و پروژههای نوشته شده با زبان پایتون هستیم. به همین دلیل شرکت IBM که صاحب نرمافزار SPSS است، استفاده از این زبان برنامهنویسی را در این بسته محاسبات آماری گنجانده است. در این نوشتار به بررسی انجام عملیات تکراری با پایتون در SPSS میپردازیم. این متن قسمت دوم از دنباله مطالب مربوط به برنامهنویسی پایتون در SPSS است. فهرست زیر این مطالب را معرفی کرده است.
- قسمت اول: پایتون در SPSS – راهنمای گام به گام
- قسمت دوم: انجام عملیات تکراری با پایتون در SPSS – راهنمای گام به گام
- قسمت سوم: استفاده از افزونههای آماده پایتون در SPSS – راهنمای گام به گام
به عنوان پیشنیاز و برای آشنایی با محیط نرمافزار SPSS و کار با آن بهتر است مطلب پنجره ویرایشگر داده (Data Editor) در SPSS — راهنمای کاربردی و امکانات جدید SPSS نسخه 2۵ که باید آنها را بدانید را بخوانید. همچنین مطالعه قسمت اول از این مجموعه به نام پایتون در SPSS – راهنمای گام به گام و زبان برنامه نویسی پایتون (Python) — از صفر تا صد نیز خالی از لطف نیست. برای آشنایی بیشتر با نحوه برنامهنویسی به زبان پایتون بهتر است آموزشهای ویدئویی برنامهنویسی پایتون را نیز تهیه کنید.
انجام عملیات تکراری با پایتون در SPSS
در بسیاری از اوقات لازم است که کارهای تکراری در محیط SPSS انجام دهیم که شاید با استفاده از قابلیت Syntax امکانپذیر نباشند. در ادامه این متن، به بررسی حالتی در محیط SPSS میپردازیم که احتیاج به برنامهنویسی به زبان پایتون داریم. در ابتدا نحوه تغییرات روی رشتههای متنی در خروجیهای SPSS یعنی پنجره Output، بوسیله زبان برنامهنویسی پایتون را مورد بررسی قرار داده سپس نکاتی را متذکر میشویم که باید در زمان برنامهنویسی با این زبان رعایت کنیم.
کار با رشتههای متنی پایتون در محیط SPSS
یکی از موضوعاتی که در محیط SPSS مورد توجه است، نحوه انجام عملیات روی رشتههای متنی است. در این قسمت به بررسی نحوه عملکرد توابع پایتون روی رشتههای متنی میپردازیم. ابتدا قواعد پایه برای انجام عملیات روی رشتههای متنی در پایتون را مرور میکنیم.
- رشتههای متنی در پایتون باید داخل علامت نقل قول ('') یا ("") قرار گیرند.
- اگر در رشته متنی لازم باشد که خود علامت نقل قول نیز ظاهر شود، باید به همراه علامت \ این کار صورت گیرد.
- اگر رشته متنی قرار است در چند خط ظاهر شود، هر قطعه را داخل علامت نقل قول قرار داده و بینشان از علامت n\ استفاده میکنیم. همچنین میتوانید از علامت """ به عنوان شروع و پایان عبارت متنی استفاده کرده و با علامت n\ خط بعدی را آغاز کنید.
در ادامه مثالهایی در این زمینه مورد بررسی قرار گرفته است.
خروجی اجرای این قطعه کدها به صورت زیر خواهد بود.
همانطور که در خروجی این برنامهها مشاهده خواهید کرد، در قسمت اول، فقط به تولید رشته خالی اختصاص یافته و قطعه کد دوم یک عبارت را در دو خط ایجاد میکند. توجه داشته باشید که از کد n\ برای رفتن به خط بعدی در عبارت متنی استفاده شده است. در قطعه کد سوم نیز با استفاده از علامت '\ باعث شدهایم که علامت نقل قول در خروجی ظاهر شود. در جدول زیر بعضی از توابع مربوط به تغییرات در رشتههای متنی آورده شده است.
شرح | کد | مثال | نتیجه |
---|---|---|---|
استخراج رشته | [ ] | myString[0] | رشته متنی |
ادغام دو رشته متنی | + یا += | myString + myString | رشته متنی |
استخراج محل یک متن از سمت چپ عبارت متنی | find | myString.find('a') | مقدار عددی |
استخراج محل یک متن از سمت راست عبارت متنی | rfind | myString.rfind('a') | مقدار عددی |
جایگزنی یک عبارت در یک رشته متنی | replace | myString.replace('a','b') | رشته متنی |
تعیین طول رشته متنی | len | len(myString) | مقدار عددی |
تغییر رشته متنی به حروف کوچک لاتین | lower | myString.lower() | رشته متنی |
تغییر رشته متنی به حروف بزرگ لاتین | upper | myString.upper() | رشته متنی |
تغییر رشته متنی به صورت حرف بزرگ در ابتدای جمله | capitalize | myString.capitalize() | رشته متنی |
حذف حروف از سمت چپ رشته متنی | lstrip() | myString.lstrip() | رشته متنی |
حذف حروف از سمت راست رشته متنی | rstrip() | myString.rstrip() | رشته متنی |
حذف حروف از سمت چپ و راست رشته متنی | strip() | myString.strip() | رشته متنی |
تبدیل رشته متنی از اعداد به ساختار عدد | int | int(myString) | مقدار عددی |
تبدیل رشته متنی به لیست پایتون | split | myString.split(' ') | لیست |
بررسی آغاز یک عبارت با رشته متنی داده شده | startswith | myString.startswith("var") | منطقی |
بررسی پایان یک عبارت با رشته متنی داده شده | startswith | myString.startswith("var") | منطقی |
اضافه کردن صفر به سمت چپ یک عبارت | zfill | myString.zfill(3) | رشته متنی |
در ادامه سعی میکنیم برای هر یک از این حالتها مثالهایی بیاوریم.
استخراج یک عبارت از رشته متنی در پایتون
همانطور که در جدول بالا اشاره شد، علامت [ ] وظیفه استخراج متن را به عهده دارد. در مثالهای زیر از رشته متنی که درون متغیر myString وجود دارد، حروف یا عبارتی را خارج میکنیم. کدهای زیر به این منظور نوشته شدهاند.
درون علامت [ ]، موقعیت یا اندیسی که باید حرف استخراج شود را مشخص میکنیم.
همانطور که مشاهده شد، دستور مربوط به خط دوم، رشته متنی abcdefghij را در متغیر myString قرار داده است. در خطوط بعدی به ترتیب اولین حرف (a)، از دومین حرف تا آخرین حرف (bcdefghij)، از حرف دوم تا حرف چهارم (bc) و در انتها نیز از سمت راست اولین حرف (j) استخراج شدهاند.
نکته: توجه کنید که اندیسها در پایتون از صفر آغاز شده و صفر به معنی اولین عنصر است.
خروجی به صورت زیر خواهد بود:
ادغام دو رشته متنی
با استفاده از علامت + میتوانیم دو رشته متنی را به یکدیگر ادغام کنیم. البته همانطور که دیده شد، از علامت =+ نیز میتوانید به منظور پیوند رشته قبلی با رشته جدید استفاده کنید. برای مثال اگر 'myString='Hello باشد، دستورات زیر معادل هستند و هر دو عبارت Hello A را ایجاد می کنند.
myString = myString + ' A'
myString += ' A'
به قطعه کد زیر توجه کنید.
خروجی این دستورات به صورت زیر خواهد بود.
همچنین با استفاده از کدهای زیر رشتههای متنی را در پایتون با یکدیگر ادغام کردهایم.
با اجرای این کدها، در پنجره خروجی SPSS عبارتهای زیر ظاهر خواهد شد.
در قسمت دوم از برنامه مشخص است که با استفاده از یک حلقه تکرار، رشتههایی از اعداد ۰ تا ۴ را به رشته متنی abc اضافه کردهایم.
تعیین محل قرارگیری یک عبارت از رشته متنی
فرض کنید در یک رشته متنی میخواهیم محل قرارگیری یک عبارت را مشخص کنیم. تابع find این کار را به خوبی انجام میدهد. ولی باید توجه داشته باشید که چند نکته مهم در استفاده از این تابع وجود دارد.
- شروع جستجو از سمت چپ عبارت متنی آغاز میشود.
- در زبان برنامه نویسی پایتون حروف بزرگ و کوچک لاتین با یکدیگر تفاوت دارند و هنگام جستجو باید حروف ذکر شده با توجه به این موضوع در نظر گرفته شوند.
- در پایتون آغاز اندیس از صفر است در نتیجه در توابعی که با اندیس سر و کار دارند، توجه به این نکته ضروری است.
به متنی که در تصویر زیر نوشته شده، توجه کنید. مشخص است که حرف اول در این رشته، در اندیس صفر قرار گرفته است.
با توجه به عبارت متنی مربوط به تصویر بالا، کدهای زیر به منظور استخراج محل حرف c و عبارت in به کار رفته است.
همانطور که مشخص است خروجی این کد مقدار ۲ و ۴ خواهد بود.
نکته: اگر میخواهید همین عمل را از سمت راست انجام دهید بهتر است از تابع rfind استفاده کنید. کدی که در زیر مشاهده میکنید مرتبط با رشته متنی تصویر بالا و برای نمایش محل حرف i و عبارت in نوشته شده است.
در خروجی با اجرای این کد، مقدار ۲۵ و ۲۱ ظاهر میشود. توجه دارید که محل قرارگیری حروف و عبارتها از سمت چپ مشخص شده است ولی اولین محل جستجو از سمت راست برای حرف i و in تعیین شده است. در ادامه به صورت فهرستوار به کدهایی اشاره میکنیم که برخی از عملیات روی رشتههای متنی را انجام میدهند.
جایگزینی حروف در یک عبارت
همانطور که مشخص است، این کد دو کار را انجام میدهد. جایگزینی حرف a درون یک رشته متنی با جای خالی (جایگزینی ۵ مورد) در نتیجه حذف حرف a و سپس جایگزینی همه عبارتهای the با حرف a. نتیجه حاصل در خروجی به شکل زیر خواهد بود.
تعیین طول رشته متنی
مقدار نتیجه اجرای کد عدد ۵ است.
تبدیل حروف رشته متنی به حروف کوچک لاتین
نتیجه اجرا نمایش عبارت !spss is fun.
تبدیل رشته متنی به حروف بزرگ لاتین
نتیجه اجرا نمایش عبارت THIS IS SOME TITLE خواهد بود.
حذف حروف از سمت چپ یک رشته متنی
در پایتون تابع ()lstrip باعث حذف همه فاصلههای خالی و علامت پرش در ابتدای یک عبارت متنی میشود. از آنجایی که در خروجیهای SPSS ممکن است از این علامتها برای تنظیم جانمایی عبارتهای متنی استفاده شده باشد، بهرهگیری از این تابع میتواند شما را به یک رشته متن خالص برساند.
اگر حرف خاصی را میخواهید حذف کنید کافی است که آن حروف یا علامت را در داخل پرانتز به عنوان پارامتر تابع lstrip وارد کنید.
در قسمت اول (A)، فاصلههای خالی اولیه در یک عبارت متنی حذف شده و در قسمت دوم کد (B) نیز علامت * از درون رشته متنی حذف میشود. البته خروجی در هر دو حالت برابر با left padding removed است.
حذف حروف از سمت راست یک رشته متنی
حذف حروف از راست و چپ یک رشته متنی
خروجی A:
left and right padding removed
خروجی B:
left and right padding removed
تبدیل رشته متنی از اعداد به ساختار عدد
خروجی اجرای این کد رشته عددی 123خواهد بود.
تبدیل رشته متنی به لیست پایتون
خروجی A:
<'type 'list>
['A', 'A', 'C', 'A', 'B', 'C']
خروجی B:
['A', 'A', 'C', 'A', 'B', 'C']
بررسی آغاز یک عبارت با رشته متنی داده شده
خروجی A:
True
False
خروجی B:
.'First character is 'a
نکته: خروجی این تابع یک مقدار منطقی است. بنابراین همانطور که دیده میشود، میتوان از آن در تابع شرطی if استفاده کرد.
بررسی پایان یک عبارت با رشته متنی داده شده
خروجی:
True
False
اضافه کردن صفر به سمت چپ یک عبارت
در پایتون، تابع (3)zfill از سمت چپ به تعداد لازم صفر به یک رشته متنی اضافه میکند تا طول رشته، سه حرف شود.
خروجی:
001
010
پنج نکته مهم در کد نویسی پایتون
برنامهنویسی به زبان پایتون شامل مقرراتی است که شاید در زبانهای برنامه نویسی دیگر وجود نداشته باشند. در این قسمت به معرفی این مقررات خواهیم پرداخت.
۱- استفاده از حروف بزرگ و کوچک لاتین
هنگام کد نویسی باید بین حروف بزرگ و کوچک تفاوت قائل شوید زیرا پایتون نیز به همین شکل عمل میکند. کدی که در ادامه دیده میشود، هنگام اجرا با خطا روبرو میشود زیرا دستوری به نام spssclient وجود ندارد و باید آن را با املا صحیح SpssClient وارد کرد.
پیغام خطای SPSS به صورت زیر است.
2- رعایت فرورفتگی در کدها
در بسیاری از زبانهای برنامهنویسی مانند HTML و PhP، قرار دادن فرورفتگی در ابتدای کدها و تراز دستورات اهمیتی ندارد. ولی در پایتون مقررات سختی برای این منظور وجود داشته و در صورت رعایت نکردن آن، دستورات قابل اجرا نخواهند بود.
در قطعه کدی که در ادامه مشاهده میکنید، در قسمت اول با توجه به فرورفتگیها عبارت hello و bye پنج بار تکرار شده ولی در قطعه کد دوم bye فقط یکبار ظاهر خواهد شد.
3- یادداشت گذاری در کد
برای ثبت یادداشت در کدهای پایتونی که در محیط Syntax نوشته میشوند از علامت # استفاده کنید. در تصویر زیر این نحوه استفاده به خوبی دیده میشود.
4- چاپ نتایج در خروجی
در پایتون با توجه به نوع متغیر یا نتیجهای که باید در خروجی ظاهر شود، بهتر است مقدار و نوع متغیری که قرار است در خروجی قرار گیرد را بوسیله دستور print ظاهر کنید. کدی که در زیر میبینید، بیانگر این عمل است.
5- استفاده صحیح از علامت \
علامت \ در پایتون معنی خاصی دارد. همانطور که دیدید n\ به معنی چاپ عبارت متنی در خط بعدی است، در نتیجه اگر این کد در پنجره Syntax اجرا شود با خطا مواجه خواهیم شد.
somepath = 'c:\newdata\data.sav'
در حالیکه اگر بخواهیم از قالب خالص متنی در این حالت استفاده کنیم بهتر است دستور زیر را به کار ببریم. حرف r به معنی RAW یا رشته متنی خام بوده و بدون در نظر گرفتن کدهای Escape عبارت به صورت متن خالص در نظر گرفته میشود.
somepath = r'c:\newdata\data.sav'
کدی که در ادامه مشاهده میکنید به منظور نمایش نحوه استفاده از علامت \ نوشته شده است.
خلاصه و جمعبندی
در این قسمت از دنباله نوشتارهای پایتون در SPSS، با توابعی که امکان تغییر متن را فراهم میآورند، آشنا شدیم. در قسمت بعدی به معرفی چند ابزار آمادهای که بوسیله کدهای پایتون برای نرمافزار SPSS تهیه شده، پرداخته و نحوه نصب و اجرای آنها را فرا خواهیم گرفت.
اگر علاقهمند به یادگیری مباحث بیشتر در مورد SPSS و پایتون هستید، آموزشهای زیر به شما پیشنهاد میشوند:
- مجموعه آموزش های آمار و احتمالات
- آموزش های نرم افزار آماری SPSS
- مجموعه آموزشهای برنامهنویسی پایتون
- آموزش آماده سازی داده ها برای تحلیل آماری در SPSS
- پنجره ویرایشگر داده (Data Editor) در SPSS — راهنمای کاربردی
- امکانات جدید SPSS نسخه 2۵ که باید آنها را بدانید
^^