Сім чистих кроків для переробки даних за допомогою Pandas або як я використовую Python там, де Excel не вдається

Тіч Мангоно

17 листопада 2017 · 10 хв читання

Кілька тижнів тому колега надіслав мені електронну таблицю з даними про втручання в галузі охорони здоров'я, що складається з багатьох вкладок, по одній вкладці на організацію. Завданням було розробити гнучку інформаційну панель для вивчення цих даних. Проблема полягала в тому, що дані були в широкому форматі, але нам потрібен був довгий формат. Раніше це було б лише черговим завданням копіювання та вставлення та іншими жахливо довгими та повторюваними завданнями, але я вирішив використати бібліотеку Pandas Python для автоматизації цього завдання, тому я взявся за розробку сценарію. Протягом 30 хвилин у мене був гнучкий код для багаторазового використання, який згодом заощадив години непотрібної ручної праці!

даних

Я хотів би поділитися з вами своїм процесом на випадок, якщо він з’явиться у вашій власній роботі. Я також покажу деякі хитрощі та докладно поясню підхід. Звичайно, я дезінфікував дані та створив фіктивні номери для конфіденційності, але формат та концепції, з якими слід боротися, залишаються незмінними. Ось дорожня карта про те, що ми будемо робити з Пандами:

  1. Налаштуйте середовище та завантажте дані
  2. Дослідіть дані
  3. Проаналізуйте різні вкладки даних
  4. Стандартизуйте існуючі стовпці та створіть нові
  5. Очистіть дані за допомогою функцій "застосувати" та "лямбда"
  6. Переформатуйте дані із широкого на довгий, здійснюючи повороти на багаторівневих індексах та стекуванні
  7. Об’єднайте та збережіть остаточні результати назад у Excel

Ми також обернемо це в акуратну функцію, яка може бути використана повторно для автоматизації цього завдання та економії часу. Я опублікував код та дані у своєму обліковому записі github. Також перегляньте мій блог, щоб побачити більше ідей щодо машинного навчання, Python та громадського здоров’я. Давайте почнемо!

Як рекламується, нам потрібна лише одна бібліотека Python для виконання цього завдання: Pandas! Наші дані - це файл Excel із декількома вкладками. Мені подобається використовувати функціонал об’єкта ExcelFile Pandas на відміну від команди читання, оскільки він дуже добре обробляє таблиці з декількома вкладками.

У файлі є чотири вкладки, кожна з яких представляє дані однієї організації.

Розбираючи першу вкладку для організації ABC_inc, ми бачимо, що формату потрібно трохи попрацювати, перш ніж ми зможемо використовувати його як стандартний фрейм даних. Дані містять цілі медичного втручання. Ми бачимо, що назви заголовків стовпців починаються з рядка 6, і ми маємо інформацію про місцезнаходження (район, провінція); залучені суб’єкти (партнер, джерело фінансування); та цільовий рік (2017-2020). Також зверніть увагу на те, як рядок 7 містить додаткову інформацію про цільову вікову групу для цього втручання для кожного року в даних. Основна частина даних починається з рядка 8 вниз.

Складіть список імен цільових вкладок. У нашому випадку ми хочемо їх усіх. Однак, якщо ви хотіли сказати лише 2 з них для аналізу, ви могли б легко вказати інший список.

Оскільки вкладки мають подібний формат, для цієї демонстрації ми використаємо лише одну. Наприкінці ми об’єднаємо всі кроки в єдину функцію, що багаторазово використовується, і за допомогою ітерації застосуємо функцію до всіх цільових вкладок. Потім ми об’єднаємо та збережемо результати. Отже, проаналізуйте вкладку у фреймі даних, df, пропускаючи марні порожні рядки вгорі. Я завжди використовую “data.head ()”, щоб перевірити свій результат і переконатися, що мій код зробив те, що я очікував.

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