Tich Mangono

17 noiembrie 2017 · 10 min de citire

Acum câteva săptămâni, un coleg mi-a trimis o foaie de calcul cu date despre o intervenție de sănătate publică, care conținea mai multe file, câte o filă pe organizație. Sarcina a fost de a dezvolta un tablou de bord flexibil pentru a explora aceste date. Problema era că datele erau în format larg, dar aveam nevoie de un format lung. Înainte, aceasta ar fi fost doar o altă sarcină manuală de copiere și lipire și alte sarcini teribil de lungi și repetitive, dar am decis să folosesc biblioteca Python's Pandas pentru a automatiza această sarcină, așa că am început să lucrez la dezvoltarea scriptului. În 30 de minute, am avut un cod flexibil, reutilizabil, care ulterior mi-a salvat ore întregi de muncă manuală inutilă!

pași

Aș dori să vă împărtășesc procesul meu în cazul în care apare în propria dvs. lucrare. De asemenea, voi arăta câteva trucuri și voi explica abordarea în detaliu. Desigur, am igienizat datele și am generat numere false pentru confidențialitate, dar formatul și conceptele care trebuie abordate rămân aceleași. Iată o hartă rutieră despre ceea ce vom face cu panda:

  1. Configurați mediul și încărcați datele
  2. Investigați datele
  3. Analizați diferitele file de date
  4. Standardizați coloanele existente și creați altele noi
  5. Curățați datele folosind funcțiile „apply” și „lambda”
  6. Remodelați datele de la larg la lung pivotând pe indici pe mai multe niveluri și stivuind
  7. Concatenează și salvează rezultatele finale înapoi în Excel

De asemenea, vom încheia acest lucru într-o funcție îngrijită care poate fi reutilizată pentru a automatiza această sarcină și a economisi timp. Am postat codul și datele pe contul meu github. De asemenea, consultați blogul meu pentru mai multe idei despre învățarea automată, Python și sănătatea publică. Sa incepem!

După cum am făcut publicitate, avem nevoie de o singură bibliotecă Python pentru a executa această sarcină: Pandas! Datele noastre sunt un fișier Excel cu mai multe file. Îmi place să folosesc funcționalitatea obiectului ExcelFile a Pandelor spre deosebire de comanda de citire, deoarece gestionează foarte bine foile de calcul cu mai multe file.

Avem patru file în fișier, fiecare reprezentând date dintr-o singură organizație.

Analizând prima filă pentru organizația ABC_inc, putem vedea că formatul are nevoie de puțină muncă înainte de a-l putea folosi ca cadru de date standard. Datele conțin obiectivele unei intervenții de sănătate publică. Putem vedea că numele antetului coloanei noastre încep în rândul 6 și avem informații despre locație (district, provincie); entități implicate (partener, sursă de finanțare); și anul țintă (2017-2020). Observați, de asemenea, modul în care rândul 7 are informații suplimentare despre grupul de vârstă țintă pentru această intervenție pentru fiecare an din date. Corpul principal de date începe de la rândul 8 în jos.

Faceți o listă cu numele filelor țintă. În cazul nostru le vrem pe toate. Cu toate acestea, dacă doriți doar să spuneți 2 dintre acestea pentru analize, atunci puteți specifica cu ușurință o listă diferită.

Deoarece filele au un format similar, vom folosi doar una dintre ele pentru această demonstrație. La final vom combina toți pașii într-o singură funcție reutilizabilă și vom folosi iterația pentru a aplica funcția tuturor filelor țintă. Apoi vom concatena și salva rezultatele. Deci, analizați fila într-un cadru de date, df, sărind rândurile goale inutile din partea de sus. Folosesc întotdeauna „data.head ()” pentru a-mi verifica rezultatul și pentru a mă asigura că codul meu a făcut ceea ce mă așteptam.

Faceți o listă a coloanelor implicite. Le vom arunca pe unele, dar le vom dezbrăca și pe restul pentru informații care să fie utilizate pentru nume de coloane noi. Va trebui să ne păstrăm informațiile referitoare la anul, grupa de vârstă și organizație.