Де використовують Python

Де використовують Python

Data science, web development, gamedev і не тільки.

Python легко опанувати завдяки простому та читальному синтаксису. Ця мова використовується для безлічі завдань — розробки вебсайтів, додатків та ігор, аналізу даних, системного адміністрування, тестування. На Python пишуть в Google, Facebook, Instagram, Spotify, Netflix.

За даними українського сервісу пошуку роботи djinni, для Python-розробників відкрито приблизно 1800 вакансій, а один кандидат отримує в середньому 10 пропозицій роботи на місяць.

Ми запитали експертів, як вони використовують Python у своїй роботі. Інформацією поділилися:

  • Крістіна Ісакова, Data Scientist в Holidu та лектор курсу «Прогнозування та аналіз часових рядів»;
  • Олександр Піндик, Team Lead, Senior Software Engineer, Game AI Developer у Wargaming;
  • Артем Тополя, System Product Owner у Wirex R&D
  • Ярослав Недашковський, співзасновник та CTO в a-Gnostics.

Data science, data analytics & data visualization

За даними Python Developers Survey 2020, 55% опитаних використовують мову для роботи з даними.

Дані 2019 року показують, що 87% data scientists використовують саме цю мову під час роботи з великими обсягами інформації.

Крістіна Ісакова: «Дата-саєністи, дата-аналітики та дата-інженери, як правило, працюють разом та обмінюються результатами. Коли команда використовує одні й самі інструменти, це значно спрощує роботу.

Python має всі інструменти для аналізу та обробки даних: бібліотеки для статистичного аналізу та прогнозування, широкий вибір пакетів для візуалізації. Кількість бібліотек зростає, адаптуючись до вимог бізнесу та ринку.

Ця мова дуже гнучка. Вона дає проводити обробку даних, будувати моделі, створювати вебсайти. На відміну від R або matlab, Python виходить за межі академічного користування, що спрощує інтеграцію з іншими проєктами.

Я працюю з time series (часовими рядами) — послідовністю статистичних значень певної змінної, зареєстрованих із певним часовим інтервалом. Вони допомагають моніторити трафік на сайті, аналізувати цикл продажу, будувати механізми перевірки здоров’я систем (навантаження на сервер, рівень температури), працювати з медичними даними (пульс, серцевий ритм). Часові ряди використовуються також у прогнозуванні, моніторингу, виявленні аномалій.

Python має багато бібліотек та інструментів для роботи з часовими рядами. Так, за допомогою бібліотеки statsmodels можна розкласти ряд на складові: тренд, сезонність та залишки. Також можна дослідити автокореляцію та часткову автокореляцію. Statsmodels пропонує інструменти згладжування часового ряду та побудови моделей прогнозування, таких як експоненційне згладжування та моделі Хольта-Вінтерса. Бібліотека Pandas, яка використовується багатьма аналітиками, дає змогу спростити роботу з часовими рядами, використовуючи індексацію за часом».

Python надає десятки графічних бібліотек. Щоби створити графічне представлення або інтерактивний сюжет, потрібно підібрати бібліотеку, наприклад Pandas Visualization або Plotly.

Ярослав Недашковський: «Python у нас — основна мова для Data Science. Ми використовуємо його для завдань DataOps (збір, валідація, очищення даних), і для ModelOps (тренування, перенавчання, версіювання моделей тощо). Крім того, більшість сервісів a-Gnostics — нашої платформи для аналізу даних із промислового обладнання — написано саме на Python.

Важливо те, що мова дає можливість за кілька днів збудувати прототип.

Але є й мінуси. Простота Python може зіграти злий жарт. Деякі часові та не найоптимальніші рішення можуть стати постійними (плата за низький поріг входу). Але якщо проводити code review — проблема зникне. Також серед недоліків — обмеження швидкості та пам’яті, але їх складно назвати критичними. Якщо код написано й сервіси організовано грамотно, проблем не повинно бути.

Python — найкращий інструмент із гарною інфраструктурою для розв’язання завдань аналізу даних. Тішить швидкий розвиток автоматизації в Data Science (наприклад, з’явився сервіс coiled.io, який дозволяє масштабувати конвеєри даних у хмарі з мінімальними модифікаціями в коді), що дає змогу більше фокусуватися на побудові продукту».

Також на Python пишуть парсери для збору інформації в інтернеті.

Бібліотеки мови допомагають розв’язати ключові завдання ML. Серед таких бібліотек:

  • Scikit-Learn для обробки основних алгоритмів машинного навчання, таких як кластеризація, лінійна та логістична регресія, класифікація та інші.
  • TensorFlow для роботи з нейронними мережами.
  • Pandas для високорівневих структур даних та аналізу.
  • Keras для проведення швидких обчислень та створення прототипів.
  • NLTK для роботи з комп’ютерною лінгвістикою, розпізнаванням та обробкою природної мови.
  • Scikit для обробки зображення.

Крім ML, Python має попит і у фінтех-сфері. У 2016 році HackerRank досліджував, які мови активно шукають роботодавці. Для фінтеху (криптовалюти, банківський софт, аналітичні інструменти) найбільший попит мав Python.

До 2021 року ситуація не змінилася: за даними eFinancialCareers, для Python-розробників відкрито найбільше вакансій у порівнянні з розробниками, що користуються іншими мовами.

Бізнесу потрібні масштабовані, але прості та сумісні з різними бібліотеками та компонентами рішення в розробці. Тому під час вибору мови особливо враховуються три фактори: API-з’єднання, інтеграція та безпека. Python дозволяє впоратися з усіма трьома й навіть запропонувати більше — велику екосистему фінансових бібліотек із відкритим вихідним кодом:

  • NumPy для швидких векторизованих операцій із масивами.
  • SciPy — збірка наукових класів та функцій.
  • Cython — статичний компілятор для гібридного коду Python та C.
  • Pandas для управління часовими рядами та табличними даними.
  • PyTables для операції введення-виведення та інші.

Крім того, використовуючи Python, можна швидко написати MVP, а отже, швидко знайти ринок і клієнтів. Платформа Clearminds, що пропонує фінансові консультації та інвестиційні інструменти, є одним із прикладів успішного використання підходу MVP. Вона написана на Python та Django.

Артем Тополя: «Python поширений практично у всіх Fintech-напрямах. Особливо Python корисний у Data Science та Quantitative Analysis завдяки величезній базі модулів. Думаю, приблизно 95 % всіх завдань математичної статистики, економетрики та теорії ймовірностей можна розв’язати за кілька хвилин за допомогою Python.

Також Python застосовується в професійному трейдингу компаніями з управління активами, High-Frequency Trading-компаніями та хедж-фондами для побудови прикладних математичних моделей, що описують ринкові процеси, або під час побудови моделей ціноутворення цінних паперів. Кінцеву реалізацію на Python зазвичай не пишуть через його низьку продуктивність у порівнянні з іншими мовами.

Як аналітик, я використовую Python часто й широко. Мені потрібно працювати з новими 3rd party, які представляють інтерес для Wirex. Тому під час підготовки документації я роблю інтеграцію з 3rd party за допомогою Python і повністю проходжу всі workflow на низькому рівні. Це дає змогу зрозуміти та описати всі можливі кейси.

Також на Python зручно та швидко робити вибірки даних, розраховувати статистичні показники та візуалізувати їх — це економить час».

Web-розробка

Оскільки Python є серверною мовою програмування, з його допомогою пишуть web-додатки. Згідно зі статистикою різних ресурсів, Python лідирує серед мов для backend-розробки.

На Python можна побудувати бізнес-логіку та взаємодію з базою даних. Бібліотеки розширюють можливості мови. Наприклад, Numpy, scikitLearn для аналізу даних і математичних алгоритмів, і складових SQL-запитів. І все це — у відкритому доступі: Python можна використовувати та розповсюджувати безкоштовно.

Також Python має багато фреймворків — наборів інструментів, які прискорюють розробку вебдодатків. Серед популярних: Django, Flask, Pyramid, Web2Py та Turbogears. Вони містять пакети та модулі стандартизованого коду, які допоможуть із деякими частинами програми, наприклад, маршрутизацією URL-адрес, доступом до бази даних, HTTP-запитами та відповідями.

Game Development

Battlefield 2, Pirates of the Caribbean, Sims 4, Disney's Toontown Online (також застосовує Panda3D для графіки) та інші популярні ігри використовують Python для своїх функцій та надбудов. З розвитком ігрової індустрії цю мову вибирають усе частіше, тому що вона проста й дає можливість швидко створювати прототипи відеоігор.

Олександр Піндик: «Коли пишеш на Python, виходить простий, зрозумілий та красивий код. Це дає змогу зосередитися на написанні бізнес-логіки. У gamedev необхідно робити безліч швидких ітерацій під час розробки механік та особливостей, і Python дає змогу робити це легко. Чим швидше виходить кожна нова ітерація, тим більше якісних фіч буде в грі. Ще у Python досить низький поріг входження, багато хто вивчає його як першу мову. Тому знайти фахівця набагато простіше, ніж, наприклад, фахівця мовою C++. З огляду на темпи зростання gamedev, зараз це дуже актуально.

Як використовують Python у gamedev:

Автоматизація тестування. Python відмінно підходить для побудови повного циклу тестування: від підготовки сценарію, запуску клієнта гри, моніторингу того, як проходить сценарій, і до обробки та візуалізації результатів тестування.

DevOps — для автоматизації розгортання, налаштування серверів та роботи з різними конфігураціями. А також для збирання та візуалізації інформації про стан різних сервісів гри.

Написання додаткових навколоігрових сервісів. Наприклад, валідація платежів із різних джерел, backend вебсервісів компанії та ігри, сервіси статистики та інші корисні доповнення до гри.

Ще Python можна використовувати як основну скриптову мову рушія. Наприклад, у Wargaming ми робимо так для рушія BigWorld, на якому розроблені World of Tanks, World of Warships та World of Warplanes.

Ігри стають складнішими. Індустрія рухається в бік ігор-сервісів чи ігор із додатковими соціальними механіками. Чим більше гра стає схожа на соціальну платформу, тим більше сервісів їй потрібно й тим активніше для розробки буде застосовуватися Python».

Серед відомих фреймворків:

  • Pyglet підтримує роботу з вікнами, обробку подій програми, джойстики, графіку OpenGL, завантаження зображень, звуку, музики та відео практично в будь-якому форматі.
  • Panda3D — 3D-рушій, написаний на C++, з повним набором прив’язок Python. Підтримує розширені опції — шейдери, трафарет та рендеринг у текстуру.
  • PyKyra Pyglet — кросплатформова бібліотека управління вікнами та мультимедіа. Одне з найшвидших середовищ розробки ігор для Python, яке підтримує всі SDL, а також рушій Kyra. PyKyra також підтримує відео MPEG, звук MP3, Ogg Vorbis, Wav та інші.
  • Ursina — рушій, що дає змогу перезавантажувати код, текстури, моделі під час гри, автоматично імпортувати файли .psd та .blend, грати в повноекранному режимі під час розробки.

SEO

Хоча SEO і не належить до IT-сфери, Python і тут збільшує продуктивність роботи. Генерацію RSS-каналу, написання технічного завдання копірайтеру, аналіз логів та інші процеси можна автоматизувати, знаючи основи Python.

Розберемо на прикладах.

Коли сайт переходить на нову адресу, посилання зі старого часто ламаються та перенаправляють користувача на сторінку з помилкою. Технологія зіставлення URL-адрес може показувати URL-адреси в таких ситуаціях, зіставляючи певні старі посилання з новими адресами. З Python це можна зробити автоматизованим способом, керуючи великими обсягами сторінок.

Мова також може стати в пригоді для аналізу внутрішніх посилань — кількості, стану, тегів, спрямованості, що дає змогу побудувати стратегію щодо покращення. Якщо сайт великий, то зробити це вручну практично неможливо.

Ще один приклад — відстеження швидкості завантаження вебсайту, яка часто губиться на зображеннях. Python використовують для оптимізації зображень та зменшення їх розміру без шкоди для якості.

Простий дизайн Python та його синтаксису надихнув на створення нових мов програмування. Cobra, CoffeeScript та Go використовують синтаксис, аналогічний Python.

Це означає, що знання Python може допомогти вам перейти до інших сфер.

Ще статті
Як працювати з даними: фахівці діляться досвідом.
Розробники радять Telegram- та YouTube-канали, книги та блоги.