O introducere prietenoasă în analiza datelor în Python

De-a lungul anilor, utilizarea python pentru știința datelor a crescut incredibil și continuă să crească zilnic.

Știința datelor este un domeniu vast de studiu cu o mulțime de subdomenii, dintre care analiza datelor este, fără îndoială, unul dintre cele mai importante dintre toate aceste domenii și, indiferent de nivelul de abilități în știința datelor, a devenit din ce în ce mai important să înțelegem sau au cel puțin cunoștințe de bază despre el.

Ce este analiza datelor?

Analiza datelor este curățarea și transformarea unei cantități mari de date nestructurate sau neorganizate, cu scopul de a genera perspective și informații cheie despre aceste date care ar ajuta la luarea unor decizii informate.

Există diverse instrumente utilizate pentru analiza datelor, Python, Microsoft Excel, Tableau, SaS etc., dar în acest articol, ne-am concentra asupra modului în care se realizează analiza datelor în Python. Mai precis, cum se face cu o bibliotecă Python numită panda.

Ce este Pandas?

Pandas este o bibliotecă Python open-source folosită pentru manipularea datelor și dispute. Este rapid și foarte eficient și are instrumente pentru încărcarea mai multor tipuri de date în memorie. Poate fi folosit pentru a remodela, a eticheta slice, a indexa sau chiar a grupa mai multe forme de date.

Structuri de date în Pandas

Există 3 structuri de date în Pandas și anume;

Cel mai bun mod de a le diferenția pe cele trei este să vedeți unul ca conținând mai multe stive din celălalt. Deci, un DataFrame este un teanc de serii, iar un Panel este un teanc de DataFrames.

O serie este o matrice unidimensională

Un teanc de mai multe serii formează un DataFrame bidimensional

O stivă de mai multe DataFrames formează un panou tridimensional

Structura de date cu care am lucra cel mai mult este DataFrame bidimensional, care poate fi și mijlocul implicit de reprezentare pentru unele seturi de date pe care le-am putea întâlni.

Analiza datelor în Pandas

Pentru acest articol, nu este necesară nicio instalare. Am folosi un instrument numit colaborator creat de Google. Este un mediu python online pentru analiza datelor, învățarea automată și AI. Este pur și simplu un notebook Jupyter bazat pe cloud, care vine preinstalat cu aproape fiecare pachet Python de care ai avea nevoie ca cercetător de date.

Acum, mergi la https://colab.research.google.com/notebooks/intro.ipynb. Ar trebui să vedeți mai jos.

Prin navigarea din stânga sus, faceți clic pe opțiunea fișier și faceți clic pe opțiunea „noul notebook”. Veți vedea o nouă pagină de blocnotes Jupyter încărcată în browser. Primul lucru pe care trebuie să-l facem este să importam panda în mediul nostru de lucru. Putem face asta rulând următorul cod;

import pandas as pd

Pentru acest articol, am folosi un set de date privind prețurile locuințelor pentru analiza noastră de date. Setul de date pe care l-am folosi poate fi găsit Aici. Primul lucru pe care am dori să-l facem este să încărcăm acest set de date în mediul nostru.

  Cele mai bune 11 widget-uri interactive pentru iPhone și iPad

Putem face asta cu următorul cod într-o celulă nouă;

df =  pd.read_csv('https://firebasestorage.googleapis.com/v0/b/ai6-portfolio-abeokuta.appspot.com/o/kc_house_data.csv?alt=media &token=6a5ab32c-3cac-42b3-b534-4dbd0e4bdbc0 ', sep=',')

.read_csv este folosit atunci când vrem să citim un fișier CSV și am trecut o proprietate sep pentru a arăta că fișierul CSV este delimitat prin virgulă.

De asemenea, ar trebui să reținem că fișierul CSV încărcat este stocat într-o variabilă df .

Nu trebuie să folosim funcția print() din Jupyter Notebook. Putem pur și simplu să introducem un nume de variabilă în celula noastră și Jupyter Notebook îl va tipări pentru noi.

Putem încerca asta tastând df într-o celulă nouă și rulând-o, va tipări toate datele din setul nostru de date ca DataFrame pentru noi.

Dar nu vrem întotdeauna să vedem toate datele, uneori vrem doar să vedem primele câteva date și numele coloanelor lor. Putem folosi funcția df.head() pentru a tipări primele cinci coloane și df.tail() pentru a imprima ultimele cinci. Ieșirea oricăreia dintre cele două ar arăta ca atare;

Am dori să verificăm relațiile dintre aceste câteva rânduri și coloane de date. Funcția .describe() face exact acest lucru pentru noi.

Rularea df.describe() dă următoarea ieșire;

Putem vedea imediat că .describe() oferă media, abaterea standard, valorile minime și maxime și percentilele fiecărei coloane din DataFrame. Acest lucru este foarte util în special.

De asemenea, putem verifica forma DataFrame-ului nostru 2D pentru a afla câte rânduri și coloane are. Putem face asta folosind df.shape care returnează un tuplu în format (rânduri, coloane).

De asemenea, putem verifica numele tuturor coloanelor din DataFrame folosind df.columns.

Ce se întâmplă dacă dorim să selectăm doar o coloană și să returnăm toate datele din ea? Acest lucru se face este un mod similar cu tăierea unui dicționar. Tastați următorul cod într-o celulă nouă și rulați-l

df['price ']

Codul de mai sus returnează coloana de preț, putem merge mai departe salvând-o într-o nouă variabilă ca atare

price = df['price']

Acum putem efectua orice altă acțiune care poate fi efectuată pe un DataFrame pe variabila noastră de preț, deoarece este doar un subset al unui DataFrame real. Putem face lucruri precum df.head(), df.shape etc..

  6 Cele mai bune instrumente pentru monitorizarea rețelelor, serverelor și aplicațiilor

De asemenea, am putea selecta mai multe coloane trecând o listă de nume de coloane în df ca atare

data = df[['price ', 'bedrooms']]

Cele de mai sus selectează coloane cu nume „preț” și „dormitoare”, dacă introducem data.head() într-o celulă nouă, am avea următoarele

Modul de mai sus de a tăia coloanele returnează toate elementele rând din acea coloană, ce se întâmplă dacă dorim să returnăm un subset de rânduri și un subset de coloane din setul nostru de date? Acest lucru se poate face folosind .iloc și este indexat într-un mod similar cu Python Lists. Deci putem face ceva de genul

df.iloc[50: , 3]

Care returnează a treia coloană de la al 50-lea rând până la sfârșit. Este destul de îngrijit și la fel ca tăierea listelor în python.

Acum să facem niște lucruri cu adevărat interesante, setul nostru de date despre prețul locuințelor are o coloană care ne spune prețul unei case și o altă coloană ne spune numărul de dormitoare pe care o are respectiva casă. Prețul locuinței este o valoare continuă, așa că este posibil să nu avem două case care să aibă același preț. Însă numărul de dormitoare este oarecum discret, așa că putem avea mai multe case cu două, trei, patru dormitoare etc.

Ce se întâmplă dacă dorim să obținem toate casele cu același număr de dormitoare și să aflăm prețul mediu al fiecărui dormitor discret? Este relativ ușor să faci asta la panda, se poate face ca atare;

df.groupby('bedrooms ')['price '].mean()

Mai întâi grupează DataFrame după seturile de date cu număr identic de dormitor folosind funcția df.groupby(), apoi îi spunem să ne dea doar coloana dormitorului și să folosim funcția .mean() pentru a găsi media fiecărei case din setul de date. .

Dacă vrem să vizualizăm cele de mai sus? Am dori să putem verifica cum variază prețul mediu al fiecărui număr distinct de dormitor? Trebuie doar să înlănțuim codul anterior la o funcție .plot() ca atare;

df.groupby('bedrooms ')['price '].mean().plot()

Vom avea o ieșire care arată ca atare;

Cele de mai sus ne arată câteva tendințe ale datelor. Pe axa orizontală, avem un număr distinct de dormitoare (Rețineți că mai multe case pot avea un număr X de dormitoare), Pe axa verticală, avem media prețurilor în ceea ce privește numărul corespunzător de dormitoare pe orizontală. axă. Acum putem observa imediat că casele care au între 5 și 10 dormitoare costă mult mai mult decât casele cu 3 dormitoare. De asemenea, va deveni evident că casele care au aproximativ 7 sau 8 dormitoare costă mult mai mult decât cele cu 15, 20 sau chiar 30 de camere.

  5 instrumente gratuite de acces la distanță pentru conectarea la un PC sau Mac

Informații precum cele de mai sus sunt motivul pentru care analiza datelor este foarte importantă, putem extrage informații utile din date care nu sunt imediat sau chiar imposibil de observat fără analiză.

Date lipsa

Să presupunem că accept un sondaj care constă dintr-o serie de întrebări. Împărtășesc un link către sondaj cu mii de oameni, astfel încât aceștia să-și poată oferi feedback-ul. Scopul meu final este să rulez analiza datelor pe aceste date, astfel încât să pot obține câteva informații cheie din date.

Acum multe ar putea merge prost, unii inspectori s-ar putea simți inconfortabil să răspundă la unele dintre întrebările mele și să lase necompletat. Mulți oameni ar putea face același lucru pentru mai multe părți ale întrebărilor mele din sondaj. Acest lucru s-ar putea să nu fie considerat o problemă, dar imaginați-vă dacă aș colecta date numerice în sondajul meu și o parte a analizei mi-ar cere să obțin fie suma, media sau o altă operație aritmetică. Mai multe valori lipsă ar duce la o mulțime de inexactități în analiza mea, trebuie să găsesc o modalitate de a găsi și de a înlocui aceste valori lipsă cu unele valori care ar putea fi un substitut apropiat pentru ele.

Pandas ne oferă o funcție pentru a găsi valorile lipsă într-un DataFrame numit isnull().

Funcția isnull() poate fi folosită ca atare;

df.isnull()

Aceasta returnează un DataFrame de boolean care ne spune dacă datele prezente inițial acolo lipseau cu adevărat sau lipseau fals. Ieșirea ar arăta ca atare;

Avem nevoie de o modalitate de a putea înlocui toate aceste valori lipsă, cel mai adesea alegerea valorilor lipsă poate fi luată ca zero. Uneori ar putea fi luată ca medie a tuturor celorlalte date sau poate ca medie a datelor din jur, în funcție de cercetătorul de date și de cazul de utilizare al datelor analizate.

Pentru a completa toate valorile lipsă dintr-un DataFrame, folosim funcția .fillna() utilizată ca atare;

df.fillna(0)

În cele de mai sus, completăm toate datele goale cu valoarea zero. Ar putea fi la fel de bine orice alt număr pe care îl specificăm noi.

Importanța datelor nu poate fi subliniată, ne ajută să obținem răspunsuri chiar din datele noastre! Analiza datelor, spun ei, este noul petrol pentru economiile digitale.

Toate exemplele din acest articol pot fi găsite Aici.

Pentru a afla mai multe în profunzime, verificați Curs online Analiza datelor cu Python și Pandas.