Fuziunea datelor înseamnă combinarea și integrarea mai multor surse de date într-un singur set de date. Acest lucru vă poate oferi informații mai bogate și mai utile decât ar putea oricare dintre seturile de date individuale.
Operațiuni de contopire
La bază, fuziunea datelor necesită de obicei îmbinarea mai multor tabele împreună. După cum am aflat, lingua franca a lumii științei datelor este tabelul dreptunghiular reflectat perfect de un fișier CSV: are rânduri (eterogene), are coloane (omogene) și, în rest, este plat. În Pandas vorbim despre această structură ca un DataFrame, desigur.
Seturi de date mai complicate constau uneori din mai multe astfel de tabele. Acest lucru este valabil mai ales dacă există diferite aspecte ale datelor, fiecare dintre ele meritând propriul său tabel. Tabelele sunt deseori legate implicit, după cum vom vedea, prin intermediul unor informații obișnuite care le leagă împreună în mod logic.
Mai mult, vor exista momente în carieră când doriți să integrați mai multe seturi de date diferite într-un fel, poate pentru că fiecare vă oferă informații despre un aspect conex al unui fenomen comun. Imaginați-vă dacă ați găsi o sursă de date care oferă totalul voturilor pentru diferiți candidați politici și o altă sursă de date care documentează donațiile financiare pe care le-au primit campaniile lor. O întrebare evidentă ar fi: „În ce măsură contribuțiile unui candidat sunt legate de numărul voturilor sale?” Acest tip de analiză este posibil numai dacă cele două seturi de date pot fi îmbinate într-un mod coerent, astfel încât totalul voturilor pentru un candidat să fie asociat în mod corespunzător cu contribuțiile la campania aceluiași candidat.
Vom folosi termenul de contopire (merge) sau îmbinare (join) pentru a descrie operația de conectare a două tabele/DataFrames într-unul singur, pe baza unei informații comune. Termenul fuziune este de obicei limitat la cazul descris în paragraful anterior; și anume, atunci când cele două tabele care urmează să fie unite provin din seturi de date complet diferite.
Contopirea în Pandas
Ideea de bază este că, pentru a îmbina în mod semnificativ două DataFrames, una (sau mai multe) coloane din primul tabel trebuie să fie legate logic la una (sau mai multe) coloane din al doilea. „Legat logic” înseamnă de obicei „a avea aceleași valori în ele”.
De exemplu, luați în considerare Figura 10.1, care conține două DataFrames dintr-o sursă de date precum IMDB. Există în mod clar întrebări pe care am dori să le punem, care implică ambele DataFrame împreună, mai degrabă decât fiecare izolat. De exemplu, „au crescut salariile actorilor de-a lungul timpului?” sau „Cât de des au lucrat diverși actori cu anumiți regizori?”
Contopirea aici este simplă: identificăm pur și simplu coloana comună care unește rândurile din cele două tabele. În mod clar, acesta este titlul filmului: știm că Scarlett Johansson a fost regizat de Joss Whedon, deoarece un rând Johansson din tabelul roles are același nume de film ca un rând Whedon din tabelul movies.
În limbajul bazei de date, numim coloana title a tabelului de filme ca fiind cheia primară (PK) a sa, iar coloana film a tabelului roles ca fiind o cheie externă (FK). Relația cheie primară / cheie externă ar trebui să sugereze că pentru fiecare rând din tabelul roles, valoarea sa film va apărea pe un rând din tabelul movies (și anume, în coloana title a rândului respectiv).
Figura 10.1: Două DataFrames dintr-o sursă asemănătoare IMDB.
Pentru a „îmbina” aceste două DataFrame dintr-o singură lovitură, executăm o comandă ca aceasta:
roles_movies = pd.merge(roles, movies, left_on="film", right_on="title")
Aceasta produce un nou DataFrame care conține (1) toate coloanele celor două și (2) un rând pentru fiecare pereche de rânduri originale care se potrivesc cu titlul filmului. Observați că a trebuit să specificăm două argumente (pe lângă numele tabelelor) pentru pd.merge(): „left_on” (pentru numele coloanei de îmbinare în primul DataFrame) și „right_on” (pentru al doilea). Dacă aceste două coloane ar avea același nume, am putea specifica doar un singur argument numit „on” pentru cele două.
Tabelul roles_movies va arăta astfel:
(Secvența rândurilor nu este în general de încredere și nu ar trebui să depindeți de faptul că acestea sunt în ordinea la care vă așteptați.) Acest DataFrame poate fi folosit pentru a răspunde la oricare dintre întrebările pe care le-am pus mai sus și la altele.
Rețineți că noul nostru tabel are câteva informații redundante (coloanele film și title sunt identice) pe care le puteți elimina folosind operațiuni normale Pandas, dacă doriți.
Sursa: Stephen Davies, The Crystal Ball – Instruction Manual, Vol. 2: Introduction to Data Science, v. 1.1. Copyright © 2020 Stephen Davies. Licența CC BY-SA 4.0. Traducere și adaptare: Nicolae Sfetcu. © 2021 MultiMedia Publishing, Introducere în Știința Datelor, Volumul 2
Lasă un răspuns