چطور برای یک دیتا آنالیست شدن شروع کنیم؟

digitalvidya.com عکس از
digitalvidya.com عکس از

شروع

من دیتا آنالیست نیستم و راستش اونقدر هم نمیدونم که دیتا آنالیست‌ها چیکار می‌کنن، ولی حاصل سر و کله زدن با دیتا آنالیست‌های مختلف بهم نشون داده که اونا چیا نیاز دارن. با این توضیح این راهنما قرار نیست یک راهنمای کامل باشه و بیشتر به درد کسی می‌خوره که تازه میخواد شروع کنه. اگه شما حس می‌کنین آنالیز داده‌ها رو دوست دارین، احتمالا خوندن این متن براتون میتونه مفید باشه و از اونجایی که «وقتی راه بیفتیم، ترسمون میریزه» من فقط قدم‌های شروع راه افتادن رو میگم. هر چند خیال می‌کنم همین قدم‌ها هم اگه خوب برداشته شن، مسیر خیلی خوبی در این راه طی شده. مسیری که من متصور شدم چیزیه که داخل استک خودم بوده و استک‌های ماکروسافتی یا IBMی هم هستن که من دیدی بهشون ندارم و طبعا اگه میدونین از چی حرف می‌زنم نیازی هم به این متن ندارین :)).

پایتون

در قدم اول شما نیاز دارین که پایتون رو تا حد خوبی یاد بگیرین. اینکه پایتون خوبه؟ اسکالا بهتر نیست؟ از کدوم IDE استفاده کنم؟ و حرف‌هایی از این قبیل رو رها کنین. شما الان باید یک چیز رو یاد بگیرین: پایتون. بهتون این قول رو میدم که پایتون اونقدر به دردتون بخوره که اگه بعدا خواستین تا زبان دیگه‌ای رو یاد بگیرین، حس نکنین که وقت‌تون رو تلف کردین. از اینجا تا آخر آموزش هر وقت بحث پایتون شد، منظور نسخه‌ی ۳ پایتونه.

یاد گرفتن پایتون رو میشه به چند مرحله تقسیم کرد:

۱. ساختار زبان. در این مرحله شما باید یاد بگیرین که متغیرها چطور تعریف میشن و چطور میشه داخل پایتون حلقه نوشت یا عبارات شرطی رو تعریف کرد. انواع داده‌ها چطور استفاده میشن و چیزهایی از این قبیل. برای این مرحله من منابع زیر رو پیشنهاد می‌کنم:

۱. لینک -> Kaggle جاییه که میتونه براتون کم‌کم جای بهشت رو بگیره. فعلا سعی کنین این آموزش پایتونش رو تا ته برین. احتمالا علاقه داشته باشین روی سیستم خودتون یچی شبیه اون ابزاری که کگل بهتون ارائه میده رو داشته باشین که این لینک میتونه براتون مفید باشه.
۲. لینک -> از این لینک اون قسمت که نوشته Learn the Basics رو هر جا نیاز داشتین نگاه کنین.

۲. شی‌گرایی در پایتون. میدونم! شما نمیخواین جنگو یا فلسک یاد بگیرین! ولی برای مرحله‌ی بعدی ما نیاز داریم که بدونیم اصن شی چیه و داخل پایتون چطور میشه ازش استفاده کرد. داخلش چه خبره و در نهایت چطور میشه از یه شی دیگه ارث برد و چیزای جدید ساخت. به نظرم برای این مرحله از این منبع میشه استفاده کرد:

لینک -> این لینک دید کلی و خوبی ارائه میده. سعی کنین هی کلاس‌های مختلف با متدهای مختلف بسازین و شروع کنین باهاشون ور رفتن. اونقدر این کار رو انجام بدین تا روال شه ماجرا.

۳. استفاده از کتابخونه‌ها. این کاربردی‌ترین بخشیه که شما باهاش سر و کله می‌زنین. شما باید بدونین چطور از کدهایی که بقیه نوشتن استفاده کنین تا اون چیزی که میخواین رو بسازین. حالا نه، ولی بعدنا که خفن شدین، نمودار زدین، با ۲۰ تا جدول رل زدین، خوبه کتابخونه‌ها و پکیج‌هایی که نوشتین رو منتشر کنین تا بقیه هم استفاده کنن: جمع به گشادی زنده‌ست. برای این قسمت منابع زیر خوبن:

۱. فعلا در همین حد بدونین که با دستور pip install PACKAGE_FOLAN میشه یه بسته رو نصب کرد. اگه از لینوکس استفاده می‌کنین، در توزیع‌هایی مثل اوبونتو برای پیپِ پایتون ۳ باید از دستور pip3 install PACKAGE_FOLAN استفاده کنین.
۲. لینک -> برای اینکه بعدا بهتر بفهمین ماجرا چیه و چه کارهایی میشه با پیپ کرد.

۴. ساختمان‌های داده در پایتون. شاید مفیدترین کاری که شما در تمام طول عمرتون در یک زبان برنامه‌نویسی انجام میدین، فهمیدن ساختمان‌های داده‌اش باشه. تجربه‌ی تا اینجام بهم میگه وقتی میگیم یچی خیلی سخته و گیجم میکنه، این احتمال خیلی قوی‌ایه که چیزی در مورد اون زبان، علی‌الخصوص به احتمال ۹۹ درصد در مورد ساختمان‌های داده‌شه که برامون گنگه. این کار بیهوده‌ایه که کل یک ساختمان داده رو حفظ باشید، ولی شما باید این رو بدونین که یه ساختمان داده چیه و چه کارهایی میتونه براتون انجام بده. این امر در طول زمان ساخته میشه ولی لینک‌های زیر هم میتونن مفید باشن.

۱. لینک -> این لینک جز مستندات خود پایتونه. بازش کنید و سر حوصله کامل هر خطش رو بخونید و ببینید که چی نوشته و اجرا کنید و نتیجه رو ببینید. لازم نیست اونا رو حفظ کنید ولی واجبه به اندازه‌ی کافی وقت بذارید و ببینید ماجرای هر کدوم چیه.
۲. لینک -> شما بعد از خوندن این لینک (و یا سرچ در موردش) باید بتونین فرق بین list و tuple و set رو توضیح بدین و بگین که هر کدوم کجا استفاده میشن و چه کاربردهایی دارن.
۳. لینک -> بخش دوم این لینک هر جا که گیر کردین میتونه راهنمای خوبی باشه براتون. اگه وقت دارین کل این لینک میتونه مفید باشه اصن :)).

رسم!

از شما انتظار میره که بتونین حجم بالای اطلاعات رو تبدیل به چیزی کنین که قابل فهم باشه. در واقع بیشتر وقت‌ها شما با آدم‌هایی سر و کار دارین که اصلا هیچ درک فنی‌ای ندارن و این هنر شماست که تمام زحمت بقیه‌ی تیم‌ها از مارکتینگ تا پروداکت رو به چشم میاره. با این نگاه شما باید کتابخونه‌های زیر رو یاد بگیرین:

۱. کتابخانه‌ی Matplotlib. متپلات‌لیب خیلی وقت‌ها میتونه یه ابزار دم‌دستی و عالی باشه براتون تا ببینید که از داده‌هاتون چی میتونید بفهمید. اگه آمار بلد باشین این کار براتون آسونه و اگه هم بلد نباشین، بعدا که یاد گرفتین براتون آسون میشه. در حد واجب فعلا به مستندات متپلات‌لیب سر بزنین و تلاش کنین که چندتا نمودار رسم کنین.

یه نمودار برای اینکه گول بخورین و فکر کنین که توی کار هم از این خبراست.
یه نمودار برای اینکه گول بخورین و فکر کنین که توی کار هم از این خبراست.

۲. کتابخانه‌ی Plotly. پلاتلی کتابخونه‌ایه که باهاش میتونین از شیر مرغ تا جون آدمی‌زاد رو رسم کنین. در شروع نیاز نیست که درگیرش بشین چون اسیرتون میکنه، ولی گوشه‌ی ذهنتون داشته باشین که با پلاتلی زندگی‌تون زیباتر میشه.

برای هر دو کتابخونه‌ی بالا (و یا هر ابزار رسم دیگه‌ای) الان نیاز نیست که همه‌ی نمودارها رو بلد باشین رسم کنین. ولی سعی کنین چند وقت یکبار که حوصله‌اتون سر رفت به گالری‌هاشون سر بزنید و ببینید که چیکارا میشه باهاشون کرد. وقتی که نیاز باشه راه برگشت براتون بازه.

پانداس!

پانداس به شما کمک میکنه تا داده‌هاتون رو فرآوری کنین و اونها رو به شکلی در بیارین که بتونین کارهای زیادی باهاش انجام بدین. چیزی که من از پانداس بلد بودم همین بود :)).

۱. لینک -> این آموزش باز از Kaggleه.
۲. لینک -> داکیومنت خود سایت پانداسه ولی خیلی خوب و روشن گفته که ماجرا چیه. به اون اولش که گفته برا پروداکشن فلان توجه نکنین فعلا.

سْکوئل یا همون SQL خودمون

اس‌کیوئل زبانیه که به شما کمک میکنه تا داده‌ها رو از مخازن مختلف واکشی کنین. مخزن میتونه MySQL باشه یا SQLServer و یا یک سرور ایمپالا. اینکه اینا چی هستن و میدونین یا نمیدونین مهم نیست. مهم اینه که شما یاد بگیرین چطور باید با پایگاه داده‌های مختلف حرف بزنین و چیزی که میخواین رو ازشون بگیرین. این بخش رو به دو دسته تقسیم می‌کنم که هر دو بخش با هم اشتراک دارن، اما برای شروع به نظرم بهتره که اینطور اونا رو یاد بگیرین.

عکس یه آموزش تو یوتیوب بود، قشنگ بود دزدیدمش.
عکس یه آموزش تو یوتیوب بود، قشنگ بود دزدیدمش.

۱. مفاهیم پراستفاده‌ی مشترک. بعضی دستورات SQL هستن که وقتی شما میگین SQL احتمالا اشاره به اونا داره. چیزهایی مثل انتخاب جدول یا فیلتر کردن داده‌ها. بهتره که اول اونا رو یاد بگیرین و تلاش هم نکنین که خیلی عمیق شین، چون تو مرحله‌ی بعد این اتفاق میفته. فعلا تلاش کنین ببینین چیا هست و چطور باید داده‌ها رو با حالات مختلف واکشی کرد و فیلتر کرد. برای این حرفا منابع زیر به نظرم خوبن:

۱. لینک -> این لینک از سایت Kaggleه. تو این آموزش از بیگ‌کوئری گوگل استفاده شده ولی شما می‌تونین بهش توجه نکنین و فعلا دقت کنید که از چه دستوراتی داره برای واکشی اطلاعات استفاده می‌کنه.
۲. لینک -> این لینک قسمت دوم آموزش قبلیه.
۳. لینک -> شما بعدا باید خودتون بتونین از هر سورسی اطلاعات رو با پایتون واکشی کنید. برای این کار خیلی وقتا از کتابخانه‌ی SQLAlchemy استفاده میشه. فعلا می‌تونین بهش فکر نکنین ولی یادتون باشه که حداقل کانکشن ساختن باهاش رو یاد بگیرین :)).

۲. اس‌کیوئل استاندارد. نسخه‌های مختلفی از اسکیوئل پیاده‌سازی شده. شما ممکنه با پایگاه داده‌ی NoSQLی در ارتباط باشید که زبانش رو SQL انتخاب کرده باشه، اما این دسته منظورِ این بخش نیستن. تو این بخش شما یاد خواهید گرفت که ANSI SQL چیه و چرا؟ و خوبیش هم اینه که با فهمیدنش دیگه خیلی پایگاه داده‌ای که دارین استفاده می‌کنین اهمیتی نداره و صرفا مهمه که ANSI هست یا نیست. البته یه خوبی دیگه‌اش هم اینه که می‌تونین برای این بخش یه برنامه‌ریزی خیلی بلندمدت کنین چون تنها سورسی که تو ذهنم هست کتاب SQL For Smartiesعه (این کتاب رو مجید عظیمی بهم معرفی کرد که مجید جان از همین جا روی ماه و کله‌ی درخشانت رو می‌بوسم).

پای‌اسپارک

در نهایت نوبت داده‌های حجیم میشه! داستان داده‌های حجیم از جایی شروع میشه که حجم داده‌های شما زیاد میشه و دیگه توی رم جا نمیشن همه‌ی داده‌ها. شما باید از ابزارهایی استفاده کنین که بتونن محاسبات رو جوری انجام بدن که رم معقولی بخوان و یا روی یک شبکه از کامپیوترها اونا رو توزیع کنن و در نهایت جواب نهایی رو به شما برگردونن. برای این بخش من اسپارک رو پیشنهاد میدم و چون الان دیگه پایتون رو بلدیم، می‌تونیم از ماژول SQL اسپارک و رابط پایتونش استفاده کنیم. این لینکا برای این مرحله میتونن مفید باشن.

۱. لینک -> از این لینک اسپارک آموزش نصب اسپارک رو ببینین.
۲. لینک -> از این لینک ببینین که چطور باید از SparkSQL استفاده کرد.
۳. لینک -> در نهایت مثل همون کاری که برای ساختمان‌های داده کردیم، سعی کنین از لینک استفاده کنین و یدور بچرخین ببینین چیا داره اسپارک اسکیوئل و چه کارایی میشه باهاشون کرد (میدونم زیاده ولی خودم شاهد بودم که صولت این کارو کرد :)) ).

آمار

آمار چیزیه که احتمالش هست از سال ۲۰۲۱ در اتحادیه‌ی اروپا موقع امتحان راهنمایی و رانندگی ازش سوال بیاد. برای آمار من درسی که بوسیله‌ی دکتر شهبازی شناختم رو خیلی دوست دارم. «آمار و کاربردهای آن» که دکتر علیشاهی در دانشگاه شریف در بهار ۸۷ ارائه داده و الان که این متن رو می‌نویسم از این لینک در دسترسه. یادتون باشه اگه خواستین منبع دیگه‌ای پیدا کنین، آمار رو با احتمال اشتباه نگیرین. چیزی که شما نیاز دارین آماره و نه احتمال.

شبیه صالح نیست دکتر علیشاهی؟
شبیه صالح نیست دکتر علیشاهی؟

پایان

این نظر شخصی منه که هفتصد و یازده نفر ممکنه باهاش مخالف باشن :)) ولی اگه از من می‌شنوین تلاش نکنین تا با منطق «تا کامل مسلط نشدم نمیرم سراغ بعدی» پیش برید. از هر بخش سعی کنین اونایی که واجبه رو خوب یاد بگیرین و یه ناخونک به بخش بعدی بزنین. تلاش کنین تا در هر مرحله‌ی ثمره‌ی کاری که می‌کنین رو ببینین و برای این کار برا خودتون مثال‌های واقعی بزنین و تلاش کنین با چیزهایی که یاد گرفتین به جواب برسین. مثال‌های واقعی یعنی مثال‌هایی که احتمالا توی زندگی و کار می‌بینین. برای داشتن این مثال‌ها کافیه یک) شروع به خیال‌پردازی کنین و خیال‌هاتون رو روی یه کاغذ بنویسین:

  • اگر حقوقم ایکس تومن باشه و هر ماه ده درصدش رو پس‌انداز کنم، آخر سال چقدر پول دارم؟
  • با فرض شرایط قبل، اگه تورم اونقدر باشه چقدر طول می‌کشه تا یه PS5 بخرم؟
  • با توجه به نرخ رشد فلان بیماری در کشور، آیا رابطه‌ای وجود داره بین استان‌های کشور و دماشون و نرخ درگیری با بیماری؟
  • با توجه به کتاب‌هایی که تا حالا خوندم، کدوم کتاب میتونه مورد علاقه‌ی من باشه؟
  • بیشترین پولی که من خرج کردم متعلق به چه دسته‌ای بوده؟ میانگین کدوم دسته‌های بیشتر بوده؟ دسته‌ای هست که بتونم توش صرفه‌جویی کنم؟
  • با توجه به ایمیل‌هایی که میاد برام، ایمیل‌هام بیشتر در چه دسته‌ای هستن؟
  • بیشترین کلمات کلیدی توییتر من چی بوده؟

و دو) تلاش کنین تا بین چیزهایی که یاد گرفتین و سوال‌ها رابطه برقرار کنین. ببینین چطور میشه از چیزهایی که بلدین به جواب این سوالات رسید. در شروع ممکنه خیلی راحت نباشه این کار که میشه تو گوگل جستجو کرد و فهمید (و نه دید) که بقیه چطور به جواب‌های مشابه رسیدن و یا از یکی که میدونین بلده بپرسین «من فلان و فو و بار رو بلدم، با اینا چطور میتونم اینطور مسئله‌ای رو حل کنم؟».

پس از پایان

نترسین! راه که بیفتیم، ترسمون میریزه.