<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های علی رضا نیک فرجام</title>
        <link>https://virgool.io/feed/@nikfarjam.alireza</link>
        <description></description>
        <language>fa</language>
        <pubDate>2026-06-07 17:15:03</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/747470/avatar/mA7Gao.jpeg?height=120&amp;width=120</url>
            <title>علی رضا نیک فرجام</title>
            <link>https://virgool.io/@nikfarjam.alireza</link>
        </image>

                    <item>
                <title>تحلیل اکتشافی مجموعه داده کافه بازار</title>
                <link>https://virgool.io/@nikfarjam.alireza/cafebazaar-datanalysis-ajw9arx5eg1a</link>
                <description>تو این قسمت سعی می کنیم یه دیدی از مجموعه داده به دست بیاریم و به یه سری سوال که به مرور جذاب تر میشن پاسخ بدیم. هرجا که امکان­ پذیر باشه، چارت مناسبی رو رسم می ­کنیم تا حس بهتری از خروجی بگیریم. نکته مهمی که باید بهش اشاره کنم اینه که با توجه به فارسی بودن مقادیر بعضی از ویژگی ­های کلیدی، کار کردن با کتابخونه­ هایی مثل matplotlib یا seaborn کارو سخت می­کنه. بنابراین هرجا نمایش متون فارسی اهمیت داشته باشه از plotly استفاده کردم و هرجا اهمیت نداشت سراغ seaborn رفتم. هرچند از نسخه 4.8 به بعد plotly، میشه backend کل plotting تو pandas رو از matplotlib به plotly تغییر داد ولی من این کارو نکردم. اگر علاقه دارید پلات ها رو به صورت اینتراکتیو داشته باشید، از اینجا فایل خروجی html نوت بوک رو مطالعه کنید.اول از همه ببینیم کلا چندتا اپلیکیشن داریم و چندتا بازی. برای پاسخ به این سوال از پای چارت استفاده کردم.شمارش تعداد برنامه ها و بازی هاپس کلا 81.7% مجموعه داده رو برنامه­ ها تشکیل دادن و فقط 18.3% متعلق به بازی­ هاست. تعدادشون هم که مشخصه. این دو بخش رو جدای از هم تحلیل می ­کنیم. در ادامه میخوایم ببینیم توی کدوم دسته، تعداد اپلیکیشن­ های بیشتری منتشر شده.برای گروه برنامه ­های کاربردی، دسته های &quot;آموزش&quot; و &quot;ابزارها&quot; با تفاوت فاحش بیشترین اپلیکیشن­ ها رو از نظر تعداد پوشش میدن و خلوت ­ترین دسته­ بندی هم متعلق به آب و هوا، کودک و رفت و آمد هست.اما برای بازی­ ها، دسته ­های اکشن و تفننی پرشمارترین­ ها هستند در حالی که بازی ­های استراتژی و کلمات و دانستنی کمترین تعداد رو در بر میگیرن. اگر همینجا یه نگاه به تعداد بازی ­های کودکانه و از اون طرف اپلیکیشن­ های کاربردی حوزه کودک بندازیم، متوجه فقر شدید این حوزه میشیم که این نشون میده کار در حوزه کودک چقدر کم مورد توجه قرار گرفته.در ادامه میخوام ببینیم تو هر کدوم از دسته برنامه ­ها و بازی­ ها، چقدر اپلیکیشن رایگان، پولی یا با پرداخت درون برنامه ­ای داریم.همون طور که می­بینید، تفاوت فاحشی بین توزیع اپلیکیشن ­های پولی و پرداخت درون­ برنامه ­ای بین برنامه ­ها و بازی­ ها وجود نداره که برای من کمی عجیب بود. انتظار اولیه ام این بود که توسعه­ دهندگان بازی ­ها بیشتر گرایش به مدل پرداخت درون­ برنامه ­ای داشته باشن.سوالی که در ادامه برام پیش اومد این بود که آیا دلیل انتشار بیشتر اپلیکیشن ­ها در این دسته­ ها، پرطرفدار بودنشون بوده؟ یعنی آیا لزوما وجود تعداد بیشتر اپلیکیشن در یک دسته­ بندی خاص، به دلیلِ بالا رفتن احتمال گرفتن نصب بیشتر بوده؟ اینجا از treemap کمک گرفتم و میزان نصب فعال دسته­ های مختلف رو برای برنامه­ ها و بازی ­ها رسم کردم.هرچقدر از رنگ ­های گرم به سرد حرکت کنیم و اندازه مربع کوچک­تر بشه، به این معناست که تعداد نصب­ ها کمتر بوده. فرضیه مون درباره دسته بازی ­ها تا حد زیادی صدق می­کنه. اما درباره برنامه ­ها میشه گفت نه. برای مثال دسته مذهبی که چهارمین دسته با بیشترین اپلیکیشن منتشرشده است، نصب فعالش 3% کل اپلیکیشن ­های نصب­ شده است! بنابراین یا تعداد زیادی توسعه ­دهنده­ داریم که درویش ­های پاک ­باخته هستن و در راه خدا کار می­کنن یا بودجه ­های خوبی پشت این حجم از انتشار اپلیکیشن­ هاییه که با اقبال جامعه کاربری هم روبرو نشده!خیلی از برنامه ­ها و بازی ­ها هستند که متاسفانه هیچ امتیازی براشون ثبت نشده. تو دیتاست ما این مجموعه که تعدادشون خیلی زیاد هم هست امتیاز 0 گرفتند. اگر بخوایم توزیع امتیازها رو بررسی کنیم، خیلی صحیح نیست که اپلیکیشن ­هایی که هیچ نظری براشون ثبت نشده رو در کنار بقیه باهم بررسی کنیم. بنابراین هم برنامه ها و هم بازی­ ها رو جوری فیلتر می­کنیم که حداقل یک نفر براشون امتیازی ثبت کرده باشه.در ادامه میخوایم این مورد رو بررسی کنیم که توزیع این امتیازها با توجه به نوع پرداخت اپلیکیشن­ ها چطوری بوده. آیا پولی یا رایگان بودن اپلیکیشن تاثیری تو امتیازی که گرفته داشته؟ (با فرض اینکه همه توسعه­دهنده ­ها بچه­ های خوبی هستن و هیچکدومشون نمیره پول بده امتیاز الکی بخره و باز هم با فرض اینکه دوستان در کافه بازار خیلی حواسشون سر این قضیه جَمعه و امتیازهای تقلبی رو با الگوریتم­ های پیچیده تشخیص میدن)همونطور که از نمودار پیداست:میانه امتیاز برنامه ­های پولی 4 و برنامه ­های رایگان 4.3 هست که با اپلیکیشن ­های پرداخت درون ­برنامه ­ای برابری می­کنهمیانه امتیاز بازی­ های پولی اما 4.3 و بازی های رایگان 4 هست (برعکس بالا) و بازی های با پرداخت درون­ برنامه ­ای فقط کمی کمتر از بازی­های پولی میانه امتیاز 4.2 گرفتنمورد عجیب اما دقیقا سر امتیاز 5 هست که مثل یه میله پرچم(؟!) خودنمایی می­کنه ?برای اینکه عمق فاجعه رو بهتر متوجه بشیم، توزیع امتیاز این دو گروه رو هم می­بینیم:به میانگین امتیازها و انحراف معیار دقت کنید. این میله بلند تقدیم به همون کسانی که فقط با 70 هزار تومان 100 تا امتیاز  5 ستاره ثبت می­کنن.اما آیا برای دسته­ بندی خاصی، توزیع این امتیازها تفاوت معناداری دارن؟ برای این کار از نمودار جعبه ­ای کمک گرفتم.تو این نمودار اول به وضعیت عجیب دسته مذهبی توجه کنید و بعد به میانه امتیاز بسیار پایین دسته آب و هواتو بازی ­ها میانه امتیازات دسته کلمات و دانستنی­ها بسیار بهتر از بقیه و دقیقا برابر 4 هست. بدترین امتیازات هم متعلق به دسته شبیه ­سازی و تا حدی بازی های اکشن هست که به نظر میرسه چندان در جلب نظر جامعه کاربری مخاطبش موفق عمل نکرده. به خاطرتون بیارید که دسته اکشن از نظر تعداد نصب دومین دسته پرطرفدار بود!برای اینکه کمی ذهنمون استراحت کنه، سعی می­کنم در ادامه به چندتا سوال ساده پاسخ بدم. میخوایم ببینیم پرطرفدارترین بازی­ ها کدوم ­ها هستند. این کارو برای برنامه­ ها انجام نمیدم چون پاسخش با اپلیکیشن­ های بی­ شمار گوگل که بطور پیش­فرض روی اندروید نصب هستند، خیلی جالب درنمیاد.بازی­ های ایرانی آمیرزا، کلاچ، پاسور حکم و فندق بازی­هایی هستند که تو 10تای برتر از نظر تعداد نصب قرار دارند.همچنین اگر برامون جذاب باشه که کدوم برنامه ­های پولی، بیشترین میزان فروش رو داشتن، به پلات زیر می­ رسیم با 10 مورد برتر فروشبرنامه سنتور با حدود 750 میلیون تومان بیشترین فروش رو داشته. به دوتا برنامه ردیابی شماره موبایل روی نقشه دقت کنید که که اولی حداقل 454 و دومی حداقل 350 میلیون تومان فروش داشتند. احتمالا یکی بخاطر آمار بالای سرقت گوشی موبایل هست که نشون میده دزدان و سارقان عزیز کارشون رو دارن به خوبی انجام میدن و دومین دلیلی که من به ذهنم می­رسه اینه که یه عده که ممکنه درون خانواده یا خارج از خانواده باشن که علاقه دارن بدونن طرف موردنظرشون کجاها میره یا الان کجاست! 800 میلیون تومان فروش اونم حداقل تخمینی که ما داریم خیلی رقم بزرگیه! حضور اون گالری مخفی هم به نوبه خودش جالبه با حداقل 300 میلیون تومان فروش ?اما تخمینمون از میزان فروش بازی­ های پولی چقدره؟ یه نگاهی هم به 10 بازی پرفروش میندازم که بیشترین درآمد رو احتمالا کسب کردند.بازی machinarium با حداقل 180 میلیون تومان فروش، احتمالا پرفروش ترین بازی این مارکت بوده. با توجه به اعداد و ارقامی که از حوزه بازی سراغ دارم، ارقام فروش بازی­ های پولی اصلا جذابیتی نداره و شخصا توصیه می­کنم توسعه ­دهنده­ های بازی بیشتر به مدل پرداخت درون ­برنامه ­ای فکر کنن. البته همه این­ رقم ­­ها بر اساس تعداد نصب فعال محاسبه شده و ممکنه یه عده بعد از اتمام مراحل بازی اون رو پاک کرده باشن و دیگه روی گوشی نگه ندارن که این می­تونه ارقام فروشی که ما محاسبه کردیم رو خیلی کمتر از میزان واقعی جلوه بده. این نکته در مورد برنامه­ های پولی هم صدق می­کنه.اما چه کسایی بیشترین تعداد اپلیکیشن رو در کافه بازار منتشر کردن؟ اسامی این بزرگواران رو به خاطر بسپارید شاید در گزارش ­های آینده باهاشون کار داشتیم.به ازای کدوم برنامه ­ها و بازی­ ها بیشترین ثبت امتیاز توسط کاربرها انجام شده؟باد صبا بیشترین تعداد نظرات به ازاش ثبت شده حتی بیشتر از اپلیکیشن­ های مشهوری مثل اینستاگرام، دیوار، بازار، اسنپ و غیره. تو بازی­ ها هم حضور مجدد آمیرزا و فندق رو شاهد هستیم که دیگه با خیال راحت باید بگیم قطعا از موفق ترین بازی­ های توسعه ­داده­ شده هستن.یادم اومد که اصلا نگاهی به ارتباط و همبستگی خطی احتمالی بین متغیرها ننداختم. بنابراین یه heatmap میتونه تا حدی دیدی از این ارتباط احتمالی بهم بدهارتباط بین تعداد نصب فعال و میزان حجم ترافیک داده که بدیهی بود از همون اول چون علت و معلولی بود، اما تنها ارتباط خطی احتمالی که میتونه جالب باشه ارتباط بین تعداد نصب فعال و تعداد نظرات ثبت شده روی برنامه ست که اگرچه خیلی همبسته نیستند اما تاثیرگذارند.به عنوان سوال­ بعدی که شاید جذابیت داشته باشه، آیا قیمت یک برنامه پولی، تاثیری در امتیازات یا تعداد نصبش گذاشته؟رابطه قیمت و امتیاز برای برنامه هااز نمودار بالا متوجه میشیم که رنج قیمت نهایتا تا 40 هزارتومان هست و اغلب برنامه ­ها هم تا 10 هزارتومان قیمت دارند. اما آیا تفاوتی یا الگوی خاصی در امتیازات دیده میشه؟ نه. حتی برای برنامه ­هایی که 40 هزارتومان (گران­ترین برنامه ­ها) هستند هم می­بینید که توزیع امتیازات بسیار متنوع هست. پس توی برنامه­ ها، قیمت یک اپلیکیشن تاثیر خاصی در امتیازش نداشته (که عجیبه!)رابطه قیمت و امتیاز برای بازی هابرای بازی­ ها اما اگرچه بازهم نهایتا با اغماض می­تونیم بگیم اکثرا تا 10000 تومان قیمت دارند، اما بازی­ های گران قیمت­ تر به شکل واضحی امتیازهای پایین ­تری دریافت کردند. این مسئله اما برای بازی­ های خیلی گران 40000 تومانی به طور کامل صادق نیست و رنج امتیازات بین 3 تا 5 گرفتند.رابطه قیمت و تعداد نصب برای برنامه هااما نمودار بالا هم دیدنش خالی از لطف نیست. تقریبا اکثر قریب به اتفاق برنامه ­های پولی زیر 5000 بار نصب شدند و فقط تعداد کمی هستند که با حداکثر 15000 تومان قیمت به نصب 50000 بار رسیدند.رابطه قیمت و تعداد نصب برای بازی هاو همون­طور که میشد حدس زد، این روند برای بازی ­های پولی شکل بغرنج ­تری به خودش می­گیره. از همین دوتا نمودار اخیر میشه فهمید فروش برنامه و بازی به شکل پولی خیلی نتیجه هیجان ­انگیزی نمی­تونه داشته باشه.با توجه به تنوع زیاد قیمت ­ها و همین­طور سایز اپلیکیشن ­ها بهتره که اونا رو به دسته­ های مختلف بشکونیم و تعدادشون رو بشماریم. البته خیلی کارهای دیگه هم میشه کرد که من فقط به شمردن تعدادشون کفایت میکنم. برای نمایش توزیع تعداد اپلیکیشن ­ها بر حسب قیمتشون شاید بهتر باشه از waffle چارت استفاده کنیم.بیشتر برنامه­ ها تو رنج قیمت 5000 هزارتومان هستند و بعد 2811 تا تو رنج قیمت بیش از 5000 تومان تا نهایتا 10 هزارتومان هستند. بعدش میپره یهو توی رنج قیمتی 35 تا 40 هزارتومان!برای بازی­ ها اما اگرچه اکثریت متعلق به گروه قیمتی نهایتا تا 5 هزارتومان هستند، اما گروه بعدی که بیشترین تعداد رو داره، در رنج قیمتی بیش از 25 تا نهایتا 30 هزارتومان قرار دارند و بعد مثل برنامه ­ها رنج های بعدی هستند. مشابه همین دوتا نمودار بالا رو میشه مبتنی بر گروه ­های قیمتی و تعداد نصب برنامه ­ها هم رسم کرد که من واگذار می­کنم به علاقمندانش.در ادامه میخوایم همین شمارش رو بر اساس گروه­های حجمی هم داشته باشیم.برای سایز برنامه ­ها، 72% شون نهایتا تا 10 مگابایت حجم دارند و جالبه که 1678 اپلیکیشن داریم (1.15%) که حجمشون بیشتر از 80 مگابایت هست! که این تعداد بیشتر از مجموع تعداد اپلیکیشن­ های 50 تا 80 مگابایتی هست حتی!برای بازی­ ها اما تنوع حجمشون بیشتر به چشم میاد اگرچه کماکان گروهی که نهایتا 10 مگابایت حجم دارند تعداد بیشتری هستند، اما 10.2% از بازی­ ها (معادل 3337 مورد) بیشتر از 80 مگابایت حجم دارند. برای علاقمندان اینو اضافه کنم که حالا میشه رابطه واضح ­تری از تاثیر حجم یک برنامه یا بازی بر حسب تعداد نصبش به ­دست آورد.در آخر اینو اضافه کنم که خیلی خوشحال میشم اگر بررسی های بیشتری با این مجموعه داده انجام دادید، حتما لینکش رو با من هم به اشتراک بگذارید. </description>
                <category>علی رضا نیک فرجام</category>
                <author>علی رضا نیک فرجام</author>
                <pubDate>Sat, 27 Mar 2021 13:59:16 +0430</pubDate>
            </item>
                    <item>
                <title>معرفی و انتشار مجموعه داده کافه بازار</title>
                <link>https://virgool.io/@nikfarjam.alireza/cafebazaar-dataset-qzm9vc7fwijo</link>
                <description>معرفی و پیش پردازش اولیه مجموعه داده کافه بازارتقریبا یک سال پیش بود که با مجموعه داده ­های googleplaystore تو سایت Kaggle آشنا شدم. تو توضیحاتش گفته بود اگرچه دیتاست­ های زیادی برای اپ استور اپل هست، معادلش برای گوگل پلی نیست که یکی از دلایلش استفاده از تکنیک ­های پیشرفته مدرن (مثل بارگذاری پویای صفحات) با استفاده از JQuery بوده که فرآیند scrape کردنش رو چالش برانگیزتر کرده. از همون موقع به ذهنم رسیده بود که باید عینا معادل همین دیتاست رو برای مارکت کافه بازار هم داشته باشیم چون احتمالا تحلیل­ های جالبی ازش میشه درآورد. من تلاش کردم با اسکریپ صفحات وب کافه ­بازار، این مجموعه داده رو بسازم. تاریخ جمع آوری نتایج حدودا 30 اسفند شد و اعداد و نتایج و تحلیل ها همه تا اون تاریخ معتبر هستند. از اینجا می تونید این مجموعه داده رو دانلود کنید.اول از همه به تفاوت­ های خیلی مهمی که بین این دو تا مارکت وجود داره بپردازیم و یه سری نکات دیگه که حین اسکریپ صفحات بهشون برخوردم:1. تو دیتاست گوگل پلی تمام بازی­ ها در یک دسته ­بندی به اسم Game وجود دارند، ولی کافه­ بازار انواع مختلف بازی ­ها رو مثل بقیه دسته­ بندی ­ها در نظر گرفته. در عوض ما تو دیتاست گوگل پلی یک ستون دیگه به اسم Genres داریم که جدای از دسته­ بندی، ژانر اون اپلیکیشن رو نشون میده.2. از نظر نوع، اپلیکیشن­ ها تو دیتاست گوگل پلی به 2 دسته رایگان و پولی تقسیم ­بندی شدن، در حالی که ما تو کافه بازار 3 دسته رایگان، پولی و پرداخت درون برنامه ای داریم. تفکیک بین این 3 دسته تو کافه بازار، تفکیک دقیق­ تری هست به نظر من3. تاریخ آخرین به ­روزرسانی هر اپ رو تو اپلیکیشن موبایلی کافه بازار میشه دید ولی این قابلیت تو نسخه وبش وجود نداره.4. یکی از قابلیت­ های فوق العاده خوب گوگل پلی، وجود هشدار و رتبه ­بندی محتوای اپلیکیشن­ ها بر اساس رده ­بندی سنی مخاطب هست. کافه بازار تا زمان نوشتن و انتشار این گزارش، چنین ویژگی رو به صفحه اپلیکیشن ­ها اضافه نکرده. بنابراین تو دیتاست کافه بازار خبری از ستون Content Rating نیست.5. تو حین اسکریپ صفحات، به نتایج عجیبی میرسید. مثلا تعداد زیادی اپلیکیشن وجود داره که تو صفحه اختصاصی­شون، لوگو و نظراتی که روشون داده شده هست، اما پیغام &quot;متاسفانه برنامه مورد نظر شما یافت نشد&quot; هم بالای صفحه دیده میشه و بنابراین هیچ اطلاعاتی از قبیل اینکه این برنامه توسعه دهنده اش کی بوده، چقدر دانلود شده، تو چه دسته ای بوده، چه امتیازی از طرف کاربرا گرفته، چرا دیگه قابل دانلود نیست؟ و غیره قابل بازیابی نیست. یه مثالش رو تو تصویر زیر می بینید.یک نمونه اپلیکیشن حذف شده با نظرات در دسترسیا مثلا برای اپلیکیشنی که به درخواست توسعه ­دهنده از دسترس خارج شده ولی بازم فقط نظراتش در دسترسه:یک نمونه اپلیکیشن از انتشار خارج شده اما کماکان در دسترس 6. قصد داشتم تعداد برنامه های فعالی که توسعه ­دهنده نوشته رو از پیج اختصاصیشون محاسبه کنم. اما به طرز عجیبی دیدم که برای خیلی از توسعه ­دهنده ها، بعضی از برنامه ­هایی که منتشر کردن تو صفحه شون ایندکس نشده! برای اثبات ادعام فقط یه مثال میارم. یه اپلیکیشن داریم به اسم &quot;قانون (low)&quot; (کم؟!!! ?) با اسم پکیج alireza.low. توسعه­ دهنده هم اسمش فاطمه96 هست.حالا اگر وارد صفحه اختصاصی توسعه­ دهنده بشیم، میبینیم که اثری از این اپلیکیشن نیست!در صفحه توسعه دهنده ها، همه اپلیکیشن هایشان ایندکس نمی شودبازهم تاکید می کنم، مشابه این مشکل بسیار زیاده و دوستان کافه بازار احتمالا پاسخی برای این مشکل دارند که چرا همه اپلیکیشن­ های یک توسعه ­دهنده تو صفحه اختصاصیش ایندکس نشده؟ به همین دلیل تو دیتاست فقط لینک صفحه توسعه دهنده رو گذاشتم تا بعدا از روی اون بشه شمارش شاید دقیق ­تری به دست آورد از تعداد اپلیکیشن­هایی که هر شخص تو کافه بازار منتشر کرده.7. گوگل پلی، پایین ­ترین نسخه اندرویدی که برای نصب و کارایی هر اپلیکیشن نیاز هست رو به کاربر اطلاع میده. تو کافه بازار متاسفانه هنوز چنین چیزی وجود نداره.8. توی دیتاست گوگل پلی علاوه بر فایلی که مربوط به اطلاعات اپلیکیشن هاست، یه فایل review هم هست که برای هر اپ حداکثر 100 کامنت مرتبط با اپلیکیشن با 3 ویژگی استخراج شده از اون کامنت شامل تحلیل احساس، قطبیت احساس(Sentiment Polarity) و ذهنیت احساس(Sentiment Subjectivity) رو شامل میشه. با این دیتاها کارهای فوق العاده ای میشه کرد. اما من از استخراج نظرات اپلیکیشن­ های کافه بازار چشم پوشی کردم. به عنوان کسی که حداقل یک بار یک اپلیکیشن رو توی این مارکت منتشر کرده، انجام هر تحلیلی روی نظرات اپلیکیشن­ ها در کافه بازار رو عبث و بیهوده میدونم، چراکه از روز اول انتشار اپلیکیشن، روزانه ده ها ایمیل از شرکت ­ها و افراد بعضا حتی شناخته­ شده و معتبر دریافت کردم (و هنوز دریافت می­کنم!) که با رقم ­های بسیار پایین اقدام به گذاشتن نظرات خوب، بعضا مرتب و دادن ستاره و امتیاز می­کنند. اگرچه طبق گزارش کافه بازار اخیرا مقدار زیادی از این نظرات و امتیازها پاک شدن، اما کماکان تحلیل نظرهای باقی­مونده ارزش فنی و معنایی نداره چون بساط خریدن انبوهِ نظرِ خوب، هنوز با همون قیمت ­ها پابرجاست. تا وقتی این کاسبی کثیف رونق داره، تحلیل نظرات از نظر من بی ارزش و شاید از نظر دوستانی که به اندازه من سخت­گیر نیستند، کم ارزش باشه.تمیزکردن داده ­ها و مهندسی ویژگی­ ها:تو این مرحله باید داده­ هایی که استخراج شدن رو تمیزکاری کنیم که آماده تحلیل بشن. اول از همه یه نگاهی به 10 تا از سطرها به صورت تصادفی بندازیم:نگاهی کلیه به داده های اولیهدیتاست خام ما از چه ستون­ هایی تشکیل شده؟ویژگی های اولیه تشکیل دهنده مجموعه دادهبه طور کلی، اسم اپلیکیشن ­ها، دسته بندی که تحت اون منتشر شدن، امتیازی که از طرف کاربرها دریافت کردن، سایز هر اپلیکیشن به مگابایت، تعداد دفعات نصب فعال اپلیکیشن، نوع اپلیکیشن از نظر رایگان یا پولی بودن، قیمت هر اپلیکیشن، شماره نسخه فعلی، نام توسعه­ دهنده، لینک یکتای هر توسعه دهنده در سایت کافه بازار و اسم پکیج برنامه، ستون ­های این دیتاست خام رو تشکیل میدن.بطور کلی ما چندتا اپلیکیشن تو این مارکت پیدا کردیم و تو دیتاست آوردیم؟تعداد کل اپلیکیشن های موجود حتی تکراری هاطبق تصویر بالا، 199737 تا. اما با توجه به روش اسکریپ من، ممکنه دیتای تکراری داشته باشیم؟ باید بررسی کنیم.تعداد اپلیکیشن های تکراریبا توجه به یکتا بودن اسم پکیج برای هر اپلیکیشن، این ستون رو برای بررسی انتخاب می­کنیم. 20436 تا سطر تکراری داریم که باید پاکشون کنیم.حذف اپلیکیشن های تکراریبنابراین، دیتاست ما اطلاعات مربوط به 179301 اپلیکیشن رو پوشش میده.نکته: ذکر این نکته رو خالی از لطف نمیدونم که از روزی که من اسم تمام پکیج ­ها رو دریافت کردم تا روزی که کار اسکریپ صفحات به اتمام رسید، 1417 اپلیکیشن از کافه بازار حذف شد و 384 مورد هم به درخواست انتشاردهنده ­ها از دسترس خارج شد.یه نگاه به اسم دسته­ بندی ­ها میندازیم.در ادامه به دو تا سوال پاسخ میدیم. کلا چندتا دسته ­بندی مختلف و یکتا داریم و کلاس ­های نصب هر اپلیکیشن چندتاست؟ کافه بازار برای تعداد نصب فعال اپلیکیشن­ ها، تعداد دقیق نصب رو نمیده و به جاش کلاس ­هایی رو تعریف کرده مثل بیش از 50، بیش از 100 و غیره. هدف اینه تعداد این کلاس ­ها رو بشماریم.تعداد دسته بندی ها و کلاس های نصبکلا 28 دسته اپلیکیشن داریم که تو 39 کلاس مختلف نصبی قرار گرفتن. اگر به وب­سایت کافه­ بازار مراجعه کنید و از منوی بالا دسته مربوط به برنامه ­ها و بازی ­ها رو جداگونه بشمارید متوجه میشید که 30 دسته ­بندی مختلف وجود داره، اما باید به این نکته دقت کرد که دو دسته­ بندی &quot;ورزشی&quot; و &quot;کودک&quot; اسامی مشابهی رو هم در برنامه ­ها و هم در بازی ­ها دارن. چرا تو دیتاست ما این موارد به درستی تفکیک نشده؟ دلیلش اینه که ما صفحه هر اپلیکیشن رو جداگونه بررسی کردیم و از اون اطلاعات کشیدیم بیرون. یه نگاهی به دو تا اپلیکیشن مختلف از دسته ورزشیِ متعلق به برنامه­ ها و ورزشیِ متعلق به بازی ­ها میندازیم.یک نمونه اپلیکیشن در دسته برنامه های ورزشییک نمونه اپلیکیشن در دسته بازی های ورزشیتو قسمت دسته، هر دو &quot;ورزشی&quot; نوشته شده که استخراج این عبارت باعث گمراهی ما شده. برای دسته کودک هم عینا مشابه همین مورد صدق می­کنه. اینجا جایی بود که من باید تصمیم می­ گرفتم که برگردم و این موارد رو اصلاح کنم یا اصولا این تشابه به تحلیل ­ها لطمه ­ای نمی­زنه. راستش اگر صفحه مربوط به کودک رو چه در برنامه­ ها و چه در بازی­ ها باز کنید، به تناوب اپلیکیشن­ های تکراری میبینید. این قضیه راجع به بخش ورزشی البته کمتر صدق می کنه. بنابراین سوال واضح ما اینه:آیا می­تونیم جامعه مخاطبین بازی­ های ورزشی رو با جامعه مخاطبین برنامه­ های ورزشی یکی فرض کنیم؟ آیا تحلیل رفتار گروه اول با گروه دوم مشابه همدیگه ست؟ پاسخ این سوال قطعا خیر هست.مشابه سوال بالا، آیا می­تونیم جامعه مخاطبین بازی­ های کودکانه رو با جامعه مخاطبین برنامه­ های کودکانه یکی فرض کنیم؟ آیا تحلیل رفتار گروه اول با گروه دوم مشابه همدیگه ست؟ پاسخ این سوال تا حد زیادی بله هست.اما من ریسک انتقادات احتمالی بعدی رو نپذیرفتم و این فرآیندِ دردناک و زمان­برِ استخراجِ مجددِ اطلاعاتِ این 4 دسته مختلف رو از اول انجام دادم. در نهایت:تعداد صحیح دسته اپلیکیشن هاحالا تعدادشون به 30 تا رسید.دسته های مختلف اپلیکیشن هاتفاوت خروجی مرحله بالا با قبلش، اضافه شدن دو دسته &quot;بازی ورزشی&quot; و &quot;بازی کودکانه&quot; به دسته ­های قبلیه که با برنامه ­های موجود تو شاخه &quot;ورزشی&quot; و &quot;کودک&quot; تداخل نداشته باشه.همینجا این فکر به ذهنم رسید که مقایسه خیلی از شاخصه ­های برنامه ­ها و بازی­ ها در کنار هم شاید خیلی عادلانه نباشه گرچه یه جاهایی ممکنه لازم باشه. بنابراین یه ستون دیگه به اسم Kind به مجموعه داده اضافه کردم که فقط تمایز بین دو دسته کلی &quot;برنامه&quot; و &quot;بازی&quot; رو بهمون نشون بده. خود مجموعه کافه بازار هم تو گزارش­ های تحلیلیش آمار این دو گروه رو کاملا جدا از هم گزارش میده البته.تقسیم بندی اپلیکیشن ها به برنامه و بازیتو گام بعدی خوبه که ببینیم چقدر داده پوچ تو مجموعه داده ثبت شده.شمردن تعداد داده های null موقع اسکریپ صفحات هرجا که اپلیکیشنی نه رایگان بود و نه کاملا پولی، یعنی پرداخت درون برنامه ­ای داشت، من تو ستون قیمت مقدار پوچ گذاشتم. برای ادامه تحلیل­ هامون می­تونیم قیمت این­ها رو 0 فرض کنیم. همچنین تعداد زیادی از اپلیکیشن ­ها شماره نسخه نداشتن که اونا رو هم برای ادامه 0 میزاریم.پر کردن داده های null با 0اما با توجه به خطایی که در طول کار برام پیش اومد، 2 تا اپلیکیشن داریم که اسم توسعه ­دهنده تو صفحه اختصاصی برنامه درج نشده و بجاش یه کاراکتر خالی بوده فقط!دو اپلیکیشن نمونه که نام توسعه دهنده آن ها مشخص نیست!که این دو اپلیکیشن هستند:یکی از مهم­ترین ستون­ ها، تعداد نصب فعال اپلیکیشن ­ها بود که تو مراحل قبلی دیدیم به 39 کلاس مختلف از نظر تعداد تقسیم ­بندی میشد. این 39 کلاس چی هستند؟کلاس های مختلف نصب اپلیکیشن هاما فقط به عدد این ستون نیاز داریم و بنابراین باید کاراکترهای + و &gt; رو پاک کنیم. اگرچه با این کار در حق اپلیکیشن ­هایی که تعداد نصب فعال بیشتر از 10 تا و کمتر از 50 تا دارن ظلم میشه و اونا رو معادل اپلیکیشن­ هایی در نظر میگیریم که تعداد نصب کمتر از 10 تا دارند، اما این تغییر خیلی تو تحلیل­ های ما اثر جدی نداره. از طرفی اعداد فارسی هستند و باید اونا رو به انگلیسی تبدیل کنیم. همچنین کلماتی مثل &quot;هزار&quot; و &quot;میلیون&quot; در کنار عددها به درد ما نمیخوره و باید اونا رو با صفرهای معادلشون جایگزین کنیم. از اونجایی که من انسان راحت­ طلبی هستم (جایگزین بهتر واژه تنبلی) همه این کارها رو توی Power Query خیلی راحت ­تر از پایتون میشه انجام داد. نهایتا با 4 یا 5 تا کلیک.کلاس بندی جدید برای تعداد نصب اپلیکیشن هاستونی رو به اسم InstallsNum اضافه کردیم که خروجیش رو در بالا می بینید.اما هنوز ستون Type مجموعه داده ما مقادیر مناسبی نداره. هدف ما از این ستون اینه که بدونیم اپلیکیشن از نظر رایگان بودن یا پولی بودن یا پرداخت درون برنامه ­ای جزو کدوم یک از این سه دسته قرار می­گیره. بنابراین با قطعه کد زیر مقادیر این ستون رو هم معنادار می­ کنیم. اگر اپلیکیشنی رایگان باشه فقط عبارت &quot;نصب از بازار&quot; تو این ستون دیده میشه. اگر پولی باشه کلمه &quot;تومان&quot; توش هست و در غیر اینصورت پرداخت درون برنامه­ ای میشه. چون این عمل وقت ­گیره نتایج رو ذخیره می ­کنیم تا سری بعد نخوایم هربار این عمل تکرار شه.ویرایش ویژگی نوع اپلیکیشن ها از نظر قیمت گذاریاما من قصد دارم 3 تا ویژگی دیگه رو از روی همین مجموعه داده خام محاسبه کنم. با این پیش ­زمینه ذهنی که هر اپلیکیشنی ممکنه مدتی خوب نصب بشه و بعد از یه مدت تعداد نصب ­های فعالش کاهش پیدا کنه، این 3 ویژگی رو به داده ­ها اضافه می­ کنم:ویژگی DataFlow: سایز اپلیکیشن که به مگابایت هست رو در تعداد دفعات نصبش ضرب می ­کنیم. میخوایم بدونیم حداقل چقدر حجم و پهنای باند بابت دانلود این اپلیکیشن صرف شده!ویژگی Review-Install-Ratio: تعداد نظرات رو تقسیم بر تعداد دفعات نصب می­ کنیم تا تعداد کاربرای فعالی که عملکرد هر اپلیکیشنی که دانلود کرده بودن براشون مهم بوده رو به دست بیاریم.ویژگی SellAmount: این ویژگی هم عملا فقط برای اپلیکیشن­ های پولی محاسبه میشه. میخوایم بدونیم از محل فروش اپلیکیشن ­های پولی حداقل چقدر درآمد کسب شده. البته خیلی جذاب میشد اگر این اطلاعات رو راجع به اپلیکیشن­ های با پرداخت درون برنامه­ ای هم داشتیم چه تحلیل­ های جالبی که ازش استخراج میشد! ولی فعلا به همین داشته ­هامون قناعت می­کنیم.هیچکدوم از این 3تا ویژگی چیزی نبوده که به ذهن شخص من رسیده باشه. راستش تو تحلیل­ های مختلف روی مجموعه داده گوگل پلی دیده بودم بعضی ­ها این 3 تا رو محاسبه می­کنن و منم عینا تقلید کردم. البته اون­ ها بعدش باهاش کارای یادگیری ماشینی انجام میدن، مثلا سعی می­کنن میزان Review_Install_Ration رو پیش­بینی کنن! ممکنه این ویژگی­ ها به هیچ دردی هم نخورن تعصبی روشون ندارم. در ادامه باید ببینیم چی پیش میاد.محاسبه و افزودن 3 ویژگی جدید به مجموعه دادهاطلاعات کلی ویژگی های مجموعه دادهتحلیل آماری ابتدایی روی ویژگی های عددی مجموعه دادهدر مقاله بعدی تحلیل اکتشافی خودم از این مجموعه داده رو هم منتشر خواهم کرد.در اخر ممنون میشم از همه کسانی که اگر مایل بودن از این دیتاست استفاده کنند، یه جوری به بنده هم اطلاع بدن تا نتایج کارها و تحلیل­ هاشون رو با کمال میل و مشتاقانه مطالعه کنم. من در تلگرام و توییتر با آیدی arshin1989 در دسترس هستم.</description>
                <category>علی رضا نیک فرجام</category>
                <author>علی رضا نیک فرجام</author>
                <pubDate>Sat, 27 Mar 2021 13:52:57 +0430</pubDate>
            </item>
            </channel>
</rss>