Spre deosebire de matricele NumPy și Serii Pandas, pe care am învățat mai multe moduri diferite de a crea, vom învăța doar o modalitate de a crea un DataFrame. Asta pentru că DataFrame-urile sunt în mod normal suficient de mari încât este prea obositor să le introduci manual. În schimb, le vom citi dintr-o sursă externă; un fișier .csv.
De fapt, vom folosi aceeași funcție read_csv() pe care am folosit-o în secțiunea 11.1, deși în mod ciudat, de data aceasta nu va fi nevoie să specificăm atât de multe argumente. Să presupunem că avem un fișier „davieses.csv” cu următoarele conținuturi: persoană, vârstă, sex, înălțime, instrument
person,age,gender,height,instrument Dad,50,M,73,piano Mom,49,F,66,flute Lizzy,21,F,63,guitar TJ,20,M,71,trombone Johnny,17,M,72,euphonium
Îl putem citi într-un DataFrame cu acest cod:
my_first_df = pd.read_csv("davieses.csv").set_index('person') print(my_first_df)
▐ age gender height instrument ▐ person ▐ Dad 51 M 73 piano ▐ Mom 49 F 66 flute ▐ Lizzy 21 F 63 guitar ▐ TJ 20 M 71 trombone ▐ Johnny 17 M 72 euphonium
Câteva lucruri. În primul rând, este posibil să fi observat că fișierul davieses.csv avea un rând „antet”. Aceasta înseamnă că prima linie a fișierului nu este ca celelalte: în loc să conțină informații despre un anumit membru al familiei, conține tipul de informații pentru fiecare membru al familiei. Arăta așa:
person,age,gender,height,instrument
și veți observa că aceste cuvinte (cu excepția primului; mai multe despre asta într-un alt moment) au devenit numele coloanelor când am importat datele. Apropo, acest tip de informații se numește „metadate”, un cuvânt cu un sunet geek care înseamnă practic „date despre date”. Dacă „Lizzy cântă la chitară” este o bucată de date, atunci „membrii familiei cântă la instrumente” este o parte de metadate.
În al doilea rând, nu ratați finalul pe care l-am lipit de linia read_csv(), unde am apelat metoda .set_index() pe DataFrame. Acest lucru îi spune lui Pandas că una dintre coloanele din DataFrame ar trebui desemnată ca index (sau cheie).
Înapoi la 7.1 Tipuri de date agregate. Am afirmat că, spre deosebire de matricele asociative, matricele nu aveau chei. Și asta este adevărat pentru conceptul general de „tabel”. Dar Panda și-au proiectat DataFrame-ul să se comporte în același mod ca Seriile lor: o coloană cu valoare unică va fi folosită pentru a identifica fiecare rând.
Această alegere este de obicei ușoară; dacă aruncați o privire înapoi la Figura 7.3 (7.1 Tipuri de date agregate), probabil că am dori să alegem numele de ecran ca index (deși ar putea fi făcut în schimb un caz pentru coloana cu numele real). Pentru tabelul din Figura 7.4 (7.2 Date agregate și imagini ale memoriei), ar putea fi coloana cu articole. În DataFrame pe care tocmai l-am creat mai sus, evident că persoana este alegerea corectă – este cu siguranță singura unică. (1)
Oricum, desemnarea unei coloane ca index în acest fel o elimină din celelalte coloane „obișnuite”. În rezultatul de mai sus, este posibil să observați că cuvântul „person” este tipărit oarecum mai jos decât sunt numele celorlalte coloane. Se pare că, dacă vrem să vorbim despre coloana index în mod specific, va trebui să folosim o tehnică puțin diferită decât o facem pentru celelalte coloane.
În cele din urmă, rețineți că apelarea .set_index() este opțională. Este perfect să apelezi pd.read_csv() și să lași așa. În acest caz, Pandas va folosi numere întregi (începând cu 0, desigur) ca index/cheie.
(1) Cu scuze pentru legenda boxului George Foreman, care i-a numit pe toți cei patru fii ai săi „George”.
Sursa: Stephen Davies, The Crystal Ball – Instruction Manual, Vol. 1: Introduction to Data Science, v. 1.1. Copyright © 2021 Stephen Davies. Licența CC BY-SA 4.0. Traducere și adaptare: Nicolae Sfetcu. © 2024 MultiMedia Publishing, Introducere în Știința Datelor, Volumul 1
Lasă un răspuns