Draudzīgs ievads datu analīzē programmā Python

Gadu gaitā pitona izmantošana datu zinātnē ir neticami pieaugusi un katru dienu pieaug.

Datu zinātne ir plašs studiju virziens ar daudzām apakšnozarēm, no kurām datu analīze neapšaubāmi ir viena no svarīgākajām no visām šīm jomām, un neatkarīgi no cilvēka prasmju līmeņa datu zinātnē ir kļuvis arvien svarīgāk izprast vai ir vismaz pamatzināšanas par to.

Kas ir datu analīze?

Datu analīze ir liela daudzuma nestrukturētu vai neorganizētu datu attīrīšana un pārveidošana, lai radītu galveno ieskatu un informāciju par šiem datiem, kas palīdzētu pieņemt pārdomātus lēmumus.

Datu analīzei tiek izmantoti dažādi rīki, Python, Microsoft Excel, Tableau, SaS utt., Bet šajā rakstā mēs koncentrēsimies uz to, kā datu analīze tiek veikta python. Precīzāk, kā tas tiek darīts ar python bibliotēku, ko sauc Pandas.

Kas ir Pandas?

Pandas ir atvērtā koda Python bibliotēka, ko izmanto datu manipulācijām un strīdiem. Tas ir ātrs un ļoti efektīvs, un tajā ir rīki vairāku veidu datu ielādei atmiņā. To var izmantot, lai pārveidotu, iezīmētu šķēli, indeksētu vai pat grupētu vairākas datu formas.

Datu struktūras pandās

Pandas ir 3 datu struktūras, proti;

Labākais veids, kā atšķirt trīs no tiem, ir redzēt, ka viens satur vairākas kaudzes ar otru. Tātad DataFrame ir sēriju kaudze, un panelis ir DataFrame kaudze.

Sērija ir viendimensijas masīvs

Vairāku sēriju kaudze veido 2-dimensiju DataFrame

Vairāku datu rāmju kaudze veido trīsdimensiju paneli

Datu struktūra, ar kuru mēs strādātu visvairāk, ir 2 dimensiju DataFrame, kas var būt arī noklusējuma attēlošanas līdzeklis dažām datu kopām, ar kurām mēs varētu saskarties.

Datu analīze pandās

Šim rakstam nav nepieciešama instalēšana. Mēs izmantotu rīku, ko sauc sadarbības laboratorija izveidojis Google. Tā ir tiešsaistes python vide datu analīzei, mašīnmācībai un AI. Tas ir vienkārši uz mākoņiem balstīts Jupyter piezīmjdators, kas ir sākotnēji instalēts gandrīz katrā python pakotnē, kas jums būtu nepieciešama kā datu zinātniekam.

Tagad dodieties uz https://colab.research.google.com/notebooks/intro.ipynb. Jums vajadzētu redzēt zemāk.

Augšējā kreisajā navigācijas joslā noklikšķiniet uz faila opcijas un noklikšķiniet uz opcijas “jauns piezīmju grāmatiņa”. Jūsu pārlūkprogrammā tiks ielādēta jauna Jupyter piezīmju grāmatiņas lapa. Pirmā lieta, kas mums jādara, ir mūsu darba vidē importēt pandas. Mēs to varam izdarīt, palaižot šādu kodu;

import pandas as pd

Šajā rakstā datu analīzei mēs izmantotu mājokļu cenu datu kopu. Datu kopu, kuru mēs izmantotu, var atrast šeit. Pirmā lieta, ko mēs vēlētos darīt, ir ielādēt šo datu kopu mūsu vidē.

  Kā atbloķēt Messenger zvanus AAE un Dubaijā

Mēs to varam izdarīt ar šādu kodu jaunā šūnā;

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 tiek izmantots, ja vēlamies lasīt CSV failu, un mēs esam nodevuši sep rekvizītu, lai parādītu, ka CSV fails ir atdalīts ar komatu.

Jāņem vērā arī tas, ka mūsu ielādētais CSV fails tiek glabāts mainīgajā df .

Mums nav jāizmanto funkcija print() Jupyter piezīmjdatorā. Mēs varam vienkārši ievadīt mainīgā nosaukumu savā šūnā, un Jupyter Notebook to izdrukās mūsu vietā.

Mēs varam to izmēģināt, ierakstot df jaunā šūnā un palaižot to. Tas izdrukās visus mūsu datu kopā esošos datus kā DataFrame mums.

Taču mēs ne vienmēr vēlamies redzēt visus datus, dažreiz mēs tikai vēlamies redzēt dažus pirmos datus un to kolonnu nosaukumus. Mēs varam izmantot funkciju df.head(), lai izdrukātu pirmās piecas kolonnas, un df.tail(), lai izdrukātu pēdējās piecas. Katra no abiem izvade izskatītos kā tāda;

Mēs vēlamies pārbaudīt attiecības starp šīm vairākām datu rindām un kolonnām. Funkcija .describe() dara tieši to mūsu vietā.

Palaižot df.describe(), tiek iegūta šāda izvade;

Mēs uzreiz varam redzēt, ka .describe() norāda katras DataFrame kolonnas vidējo, standarta novirzi, minimālās un maksimālās vērtības un procentiles. Tas ir īpaši noderīgi.

Mēs varam arī pārbaudīt sava 2D DataFrame formu, lai uzzinātu, cik rindu un kolonnu tajā ir. Mēs to varam izdarīt, izmantojot df.shape, kas atgriež korešu šādā formātā (rindas, kolonnas).

Mēs varam arī pārbaudīt visu mūsu DataFrame kolonnu nosaukumus, izmantojot df.columns.

Ko darīt, ja mēs vēlamies atlasīt tikai vienu kolonnu un atgriezt visus tajā esošos datus? Tas tiek darīts līdzīgi kā vārdnīcas griešanai. Ievadiet šo kodu jaunā šūnā un palaidiet to

df['price ']

Iepriekš minētais kods atgriež cenas kolonnu, mēs varam iet tālāk, saglabājot to jaunā mainīgajā kā tādu

price = df['price']

Tagad mēs varam veikt visas citas darbības, ko var veikt ar DataFrame, izmantojot mūsu cenu mainīgo, jo tā ir tikai faktiskā DataFrame apakškopa. Mēs varam veikt tādas lietas kā df.head(), df.shape utt.

  Kā lietot un pielāgot kursoru savā iPad

Mēs varētu arī atlasīt vairākas kolonnas, nosūtot kolonnu nosaukumu sarakstu df kā tādu

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

Iepriekš ir atlasītas kolonnas ar nosaukumiem „cena” un „guļamistabas”, ja mēs ierakstīsim data.head() jaunā šūnā, mēs iegūtu šādu informāciju

Iepriekš minētais kolonnu sadalīšanas veids atgriež visus rindu elementus šajā kolonnā. Ko darīt, ja mēs vēlamies atgriezt rindu apakškopu un kolonnu apakškopu no mūsu datu kopas? To var izdarīt, izmantojot .iloc, un tas tiek indeksēts līdzīgi kā python Lists. Tātad mēs varam darīt kaut ko līdzīgu

df.iloc[50: , 3]

Kas atgriež 3. kolonnu no 50. rindas līdz beigām. Tas ir diezgan glīts un tieši tāds pats kā python sarakstu sagriešana.

Tagad darīsim dažas patiešām interesantas lietas. Mūsu mājokļu cenu datu kopā ir kolonna, kurā ir norādīta mājas cena, un vēl viena kolonna norāda guļamistabu skaitu konkrētajā mājā. Mājokļa cena ir nepārtraukta vērtība, tāpēc iespējams, ka mums nav divu māju ar vienādu cenu. Bet guļamistabu skaits ir nedaudz diskrēts, tāpēc mums var būt vairākas mājas ar divām, trim, četrām guļamistabām utt.

Ko darīt, ja mēs vēlamies iegūt visas mājas ar vienādu guļamistabu skaitu un atrast katras atsevišķas guļamistabas vidējo cenu? Pandās to izdarīt ir samērā vienkārši, to var izdarīt arī kā tādu;

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

Iepriekš minētais vispirms sagrupē DataFrame pēc datu kopām ar identisku guļamistabas numuru, izmantojot funkciju df.groupby(), pēc tam mēs sakām, lai tas mums piešķir tikai guļamistabas kolonnu un izmantojiet funkciju .mean(), lai atrastu katras mājas vidējo vērtību datu kopā. .

Ko darīt, ja mēs vēlamies vizualizēt iepriekš minēto? Mēs vēlamies pārbaudīt, kā atšķiras katra atsevišķa guļamistabas numura vidējā cena? Mums vienkārši jāsaista iepriekšējais kods ar .plot() funkciju kā tādu;

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

Mums būs izvade, kas izskatās kā tāda;

Iepriekš minētais parāda dažas tendences datos. Uz horizontālās ass mums ir atšķirīgs guļamistabu skaits (Ņemiet vērā, ka vairāk nekā vienā mājā var būt X guļamistabu skaits), uz vertikālās ass mums ir vidējās cenas attiecībā uz atbilstošo guļamistabu skaitu horizontālajā pusē. ass. Tagad mēs varam uzreiz pamanīt, ka mājas ar 5 līdz 10 guļamistabām maksā daudz vairāk nekā mājas ar 3 guļamistabām. Tāpat kļūs skaidrs, ka mājas, kurās ir aptuveni 7 vai 8 guļamistabas, maksā daudz vairāk nekā tās, kurās ir 15, 20 vai pat 30 istabas.

  Kā skatīt HTML avotu pārlūkprogrammā Google Chrome

Iepriekš minētā informācija ir iemesls, kāpēc datu analīze ir ļoti svarīga, mēs varam iegūt noderīgu ieskatu no datiem, ko bez analīzes nav uzreiz vai gluži neiespējami pamanīt.

Trūkst datu

Pieņemsim, ka es piedalos aptaujā, kas sastāv no vairākiem jautājumiem. Es kopīgoju saiti uz aptauju ar tūkstošiem cilvēku, lai viņi varētu sniegt atsauksmes. Mans galvenais mērķis ir veikt šo datu datu analīzi, lai es varētu gūt dažus galvenos ieskatus no datiem.

Tagad daudz kas var noiet greizi, daži mērnieki varētu justies neērti, atbildot uz dažiem maniem jautājumiem un atstāt to tukšu. Daudzi cilvēki varētu darīt to pašu attiecībā uz vairākām manu aptaujas jautājumu daļām. To varētu neuzskatīt par problēmu, taču iedomājieties, ja es savā aptaujā apkopotu skaitliskus datus un daļai analīzes būtu jāiegūst vai nu summa, vidējais vai kāda cita aritmētiska darbība. Vairākas trūkstošās vērtības manā analīzē radītu daudzas neprecizitātes, man ir jāizdomā veids, kā atrast un aizstāt šīs trūkstošās vērtības ar dažām vērtībām, kas varētu tās tuvs aizstāt.

Pandas nodrošina mums funkciju, lai atrastu trūkstošās vērtības DataFrame, ko sauc par isnull().

Funkciju isnull() var izmantot kā tādu;

df.isnull()

Tas atgriež Būla vērtību DataFrame, kas norāda, vai sākotnēji tur esošo datu patiesi trūka vai nepatiesi trūka. Izvade izskatītos kā tāda;

Mums ir nepieciešams veids, kā visas šīs trūkstošās vērtības aizstāt, visbiežāk trūkstošo vērtību izvēli var uzskatīt par nulli. Dažreiz to var uzskatīt par visu pārējo datu vidējo vērtību vai, iespējams, apkārtējo datu vidējo vērtību atkarībā no datu zinātnieka un analizējamo datu izmantošanas gadījuma.

Lai aizpildītu visas trūkstošās vērtības DataFrame, mēs izmantojam funkciju .fillna() kā tādu;

df.fillna(0)

Iepriekš mēs visus tukšos datus aizpildām ar nulles vērtību. Tas varētu būt arī jebkurš cits skaitlis, ko mēs to norādām.

Datu nozīmi nevar pārvērtēt, tie palīdz mums iegūt atbildes tieši no pašiem datiem!. Viņi saka, ka datu analīze ir jaunā digitālās ekonomikas eļļa.

Visi šajā rakstā minētie piemēri ir atrodami šeit.

Lai uzzinātu padziļināti, pārbaudiet Datu analīze ar Python un Pandas tiešsaistes kurss.