Analiza podatkov s Pythonom
V tem članku bomo razpravljali o tem, kako narediti analizo podatkov s Pythonom. Razpravljali bomo o vseh vrstah analiz podatkov, npr. analizi numeričnih podatkov z NumPy, tabelarnih podatkov s Pandas, vizualizacije podatkov Matplotlib in raziskovalne analize podatkov.
Analiza podatkov s Pythonom
Analiza podatkov je tehnika zbiranja, preoblikovanja in organiziranja podatkov za prihodnje napovedi in informirane odločitve na podlagi podatkov. Pomaga tudi pri iskanju možnih rešitev za poslovni problem. Obstaja šest korakov za analizo podatkov. To so:
- Vprašajte ali določite podatkovne zahteve
- Pripravite ali zberite podatke
- Očistite in obdelajte
- Analizirajte
- Deliti
- Ukrep ali prijava
Analiza podatkov s Pythonom
Opomba: Če želite izvedeti več o teh korakih, glejte naše NumPy je paket za obdelavo matrik v Pythonu in zagotavlja visoko zmogljiv večdimenzionalni matrični objekt in orodja za delo s temi polji. Je temeljni paket za znanstveno računalništvo s Pythonom.
Nizi v NumPy
Niz NumPy je tabela elementov (običajno števil), vseh istih tipov, indeksiranih s tulom pozitivnih celih števil. V Numpyju se število dimenzij matrike imenuje rang matrike. Tulka celih števil, ki dajejo velikost matrike vzdolž vsake dimenzije, je znana kot oblika matrike.
Ustvarjanje polja NumPy
Matrike NumPy je mogoče ustvariti na več načinov z različnimi rangi. Ustvariti ga je mogoče tudi z uporabo različnih podatkovnih tipov, kot so seznami, tuple itd. Tip nastale matrike se izpelje iz vrste elementov v zaporedju. NumPy ponuja več funkcij za ustvarjanje nizov z začetno vsebino ograd. Ti zmanjšajo potrebo po rasti nizov, ki je draga operacija.
Ustvari matriko z uporabo numpy.empty(shape, dtype=float, order='C')
Python3import numpy as np b = np.empty(2, dtype = int) print('Matrix b :
', b) a = np.empty([2, 2], dtype = int) print('
Matrix a :
', a) c = np.empty([3, 3]) print('
Matrix c :
', c) Izhod:
Prazna matrika z uporabo pand
Ustvari matriko z uporabo numpy.zeros(shape, dtype = None, order = 'C')
Python3import numpy as np b = np.zeros(2, dtype = int) print('Matrix b :
', b) a = np.zeros([2, 2], dtype = int) print('
Matrix a :
', a) c = np.zeros([3, 3]) print('
Matrix c :
', c) Izhod:
Matrix b : [0 0] Matrix a : [[0 0] [0 0]] Matrix c : [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
Operacije na nizih Numpy
Aritmetične operacije
- Dodatek:
import numpy as np # Defining both the matrices a = np.array([5, 72, 13, 100]) b = np.array([2, 5, 10, 30]) # Performing addition using arithmetic operator add_ans = a+b print(add_ans) # Performing addition using numpy function add_ans = np.add(a, b) print(add_ans) # The same functions and operations can be used for # multiple matrices c = np.array([1, 2, 3, 4]) add_ans = a+b+c print(add_ans) add_ans = np.add(a, b, c) print(add_ans)
Izhod:
[ 7 77 23 130] [ 7 77 23 130] [ 8 79 26 134] [ 7 77 23 130]
- odštevanje:
import numpy as np # Defining both the matrices a = np.array([5, 72, 13, 100]) b = np.array([2, 5, 10, 30]) # Performing subtraction using arithmetic operator sub_ans = a-b print(sub_ans) # Performing subtraction using numpy function sub_ans = np.subtract(a, b) print(sub_ans)
Izhod:
[ 3 67 3 70] [ 3 67 3 70]
- Množenje:
import numpy as np # Defining both the matrices a = np.array([5, 72, 13, 100]) b = np.array([2, 5, 10, 30]) # Performing multiplication using arithmetic # operator mul_ans = a*b print(mul_ans) # Performing multiplication using numpy function mul_ans = np.multiply(a, b) print(mul_ans)
Izhod:
[ 10 360 130 3000] [ 10 360 130 3000]
- Oddelek:
import numpy as np # Defining both the matrices a = np.array([5, 72, 13, 100]) b = np.array([2, 5, 10, 30]) # Performing division using arithmetic operators div_ans = a/b print(div_ans) # Performing division using numpy functions div_ans = np.divide(a, b) print(div_ans)
Izhod:
[ 2.5 14.4 1.3 3.33333333] [ 2.5 14.4 1.3 3.33333333]
Za več informacij se obrnite na našo NumPy – Vadnica za aritmetične operacije
Indeksiranje polja NumPy
Indeksiranje lahko naredite v NumPy z uporabo matrike kot indeksa. V primeru rezine je vrnjen pogled ali plitka kopija matrike, v indeksni matriki pa je vrnjena kopija izvirne matrike. Matrike Numpy je mogoče indeksirati z drugimi matrikami ali katerim koli drugim zaporedjem z izjemo tulp. Zadnji element je indeksiran z -1, zadnji z -2 in tako naprej.
Indeksiranje matrike Python NumPy
Python3# Python program to demonstrate # the use of index arrays. import numpy as np # Create a sequence of integers from # 10 to 1 with a step of -2 a = np.arange(10, 1, -2) print('
A sequential array with a negative step:
',a) # Indexes are specified inside the np.array method. newarr = a[np.array([3, 1, 2 ])] print('
Elements at these indices are:
',newarr) Izhod:
A sequential array with a negative step: [10 8 6 4 2] Elements at these indices are: [4 8 6]
Rezanje polja NumPy
Razmislite o sintaksi x[obj], kjer je x matrika in obj indeks. Objekt rezine je indeks v primeru osnovno rezanje . Osnovno rezanje se zgodi, ko je obj:
- predmet rezine, ki je v obliki začetek: stop: korak
- celo število
- ali nabor predmetov rezine in celih števil
Vse matrike, ustvarjene z osnovnim rezanjem, so vedno pogled v izvirni matriki.
Python3# Python program for basic slicing. import numpy as np # Arrange elements from 0 to 19 a = np.arange(20) print('
Array is:
',a) # a[start:stop:step] print('
a[-8:17:1] = ',a[-8:17:1]) # The : operator means all elements till the end. print('
a[10:] = ',a[10:]) Izhod:
Array is: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] a[-8:17:1] = [12 13 14 15 16] a[10:] = [10 11 12 13 14 15 16 17 18 19]
Elipso lahko uporabite tudi skupaj z osnovnim rezanjem. Elipsa (…) je število : objektov, potrebnih za izdelavo izbirne tuple enake dolžine kot so dimenzije matrike.
Python3# Python program for indexing using basic slicing with ellipsis import numpy as np # A 3 dimensional array. b = np.array([[[1, 2, 3],[4, 5, 6]], [[7, 8, 9],[10, 11, 12]]]) print(b[...,1]) #Equivalent to b[: ,: ,1 ]
Izhod:
[[ 2 5] [ 8 11]]
NumPy Array Broadcasting
Izraz oddajanje se nanaša na to, kako numpy obravnava matrike z različnimi dimenzijami med aritmetičnimi operacijami, ki vodijo do določenih omejitev, manjša matrika se oddaja čez večjo matriko, tako da imajo združljive oblike.
Predpostavimo, da imamo velik nabor podatkov, vsak podatek je seznam parametrov. V Numpyju imamo 2-D matriko, kjer je vsaka vrstica podatek, število vrstic pa je velikost nabora podatkov. Recimo, da želimo za vse te podatke uporabiti nekakšno skaliranje, vsak parameter dobi svoj faktor skaliranja ali recimo, da je vsak parameter pomnožen z nekim faktorjem.
Da bi imeli jasno razumevanje, preštejmo kalorije v živilih z razčlenitvijo makrohranil. Grobo povedano, kalorične dele hrane sestavljajo maščobe (9 kalorij na gram), beljakovine (4 CPG) in ogljikovi hidrati (4 CPG). Če torej navedemo nekatera živila (naši podatki) in za vsako živilo navedemo razčlenitev makrohranil (parametrov), lahko nato vsako hranilo pomnožimo z njegovo kalorično vrednostjo (uporabimo lestvico), da izračunamo kalorično razčlenitev vsakega živila.
S to transformacijo lahko zdaj izračunamo vse vrste uporabnih informacij. Na primer, kakšno je skupno število kalorij v neki hrani ali glede na razčlenitev moje večerje vedeti, koliko kalorij sem dobil iz beljakovin in tako naprej.
Oglejmo si naiven način izdelave tega izračuna z Numpyjem:
Python3import numpy as np macros = np.array([ [0.8, 2.9, 3.9], [52.4, 23.6, 36.5], [55.2, 31.7, 23.9], [14.4, 11, 4.9] ]) # Create a new array filled with zeros, # of the same shape as macros. result = np.zeros_like(macros) cal_per_macro = np.array([3, 3, 8]) # Now multiply each row of macros by # cal_per_macro. In Numpy, `*` is # element-wise multiplication between two arrays. for i in range(macros.shape[0]): result[i, :] = macros[i, :] * cal_per_macro result
Izhod:
array([[ 2.4, 8.7, 31.2], [157.2, 70.8, 292. ], [165.6, 95.1, 191.2], [ 43.2, 33. , 39.2]])
Pravila oddajanja: Pri oddajanju dveh nizov skupaj sledite tem pravilom:
- Če nizi nimajo istega ranga, dodajte 1 s pred obliko niza nižjega ranga, dokler obe obliki nimata enake dolžine.
- Polji sta združljivi v dimenziji, če imata enako velikost v dimenziji ali če ima ena od matrik velikost 1 v tej dimenziji.
- Nizi se lahko oddajajo skupaj, če so združljivi z vsemi dimenzijami.
- Po oddaji se vsaka matrika obnaša, kot da ima obliko, ki je enaka največjemu elementnemu številu oblik obeh vhodnih matrik.
- V kateri koli dimenziji, kjer je imela ena matrika velikost 1 in druga matrika večjo od 1, se prva matrika obnaša, kot da bi bila kopirana vzdolž te dimenzije.
import numpy as np v = np.array([12, 24, 36]) w = np.array([45, 55]) # To compute an outer product we first # reshape v to a column vector of shape 3x1 # then broadcast it against w to yield an output # of shape 3x2 which is the outer product of v and w print(np.reshape(v, (3, 1)) * w) X = np.array([[12, 22, 33], [45, 55, 66]]) # x has shape 2x3 and v has shape (3, ) # so they broadcast to 2x3, print(X + v) # Add a vector to each column of a matrix X has # shape 2x3 and w has shape (2, ) If we transpose X # then it has shape 3x2 and can be broadcast against w # to yield a result of shape 3x2. # Transposing this yields the final result # of shape 2x3 which is the matrix. print((X.T + w).T) # Another solution is to reshape w to be a column # vector of shape 2X1 we can then broadcast it # directly against X to produce the same output. print(X + np.reshape(w, (2, 1))) # Multiply a matrix by a constant, X has shape 2x3. # Numpy treats scalars as arrays of shape(); # these can be broadcast together to shape 2x3. print(X * 2)
Izhod:
[[ 540 660] [1080 1320] [1620 1980]] [[ 24 46 69] [ 57 79 102]] [[ 57 67 78] [100 110 121]] [[ 57 67 78] [100 110 121]] [[ 24 44 66] [ 90 110 132]]
Opomba: Za več informacij se obrnite na našo Vadnica za Python NumPy .
Analiziranje podatkov z uporabo Pandas
Python Pandas Uporablja se za relacijske ali označene podatke in ponuja različne podatkovne strukture za manipulacijo takih podatkov in časovnih vrst. Ta knjižnica je zgrajena na vrhu knjižnice NumPy. Ta modul se običajno uvozi kot:
import pandas as pd
Tu se pd imenuje vzdevek za Pande. Vendar pa ni potrebno uvoziti knjižnice z uporabo vzdevka, le pomaga pri pisanju manjše količine kode vsakič, ko se pokliče metoda ali lastnost. Pande na splošno zagotavljajo dve podatkovni strukturi za manipulacijo podatkov, to sta:
- serija
- Dataframe
serija:
Serija Pande je enodimenzionalna označena matrika, ki lahko vsebuje podatke katere koli vrste (celo število, niz, float, objekte python itd.). Oznake osi se skupaj imenujejo indeksi. Serija Pandas ni nič drugega kot stolpec v excelovem listu. Ni nujno, da so oznake unikatne, vendar morajo biti vrste, ki jo je mogoče zgostiti. Objekt podpira tako indeksiranje na podlagi celih števil kot indeksiranje na podlagi oznak in nudi množico metod za izvajanje operacij, ki vključujejo indeks.
Serija Pande
Ustvarite ga lahko s funkcijo Series() tako, da naložite nabor podatkov iz obstoječega pomnilnika, kot so SQL, zbirka podatkov, datoteke CSV, datoteke Excel itd., ali iz podatkovnih struktur, kot so seznami, slovarji itd.
Serija ustvarjanja Python Pandas
Python3import pandas as pd import numpy as np # Creating empty series ser = pd.Series() print(ser) # simple array data = np.array(['g', 'e', 'e', 'k', 's']) ser = pd.Series(data) print(ser)
Izhod:
serija pnadas
Dataframe:
Pandas DataFrame je dvodimenzionalna velikostno spremenljiva, potencialno heterogena tabelarična podatkovna struktura z označenimi osmi (vrstice in stolpci). Podatkovni okvir je dvodimenzionalna podatkovna struktura, tj. podatki so tabelarno poravnani v vrsticah in stolpcih. Pandas DataFrame je sestavljen iz treh glavnih komponent, podatkov, vrstic in stolpcev.
Pandas Dataframe
Ustvari se lahko z metodo Dataframe() in tako kot serija je lahko tudi iz različnih vrst datotek in podatkovnih struktur.
Python Pandas Ustvarjanje podatkovnega okvira
Python3import pandas as pd # Calling DataFrame constructor df = pd.DataFrame() print(df) # list of strings lst = ['Geeks', 'For', 'Geeks', 'is', 'portal', 'for', 'Geeks'] # Calling DataFrame constructor on list df = pd.DataFrame(lst) df
Izhod:
Ustvarjanje Dataframe iz seznama python
Ustvarjanje Dataframe iz CSV
Mi lahko ustvarite podatkovni okvir iz CSV datoteke z uporabo read_csv() funkcijo.
Python Pandas bere CSV
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # Printing top 5 rows df.head() Izhod:
glava podatkovnega okvira
Filtriranje DataFrame
Pande dataframe.filter() funkcija se uporablja za podnabor vrstic ali stolpcev podatkovnega okvira glede na oznake v podanem indeksu. Upoštevajte, da ta rutina ne filtrira podatkovnega okvira glede na njegovo vsebino. Filter se uporabi za oznake indeksa.
Podatkovni okvir filtra Python Pandas
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # applying filter function df.filter(['Species', 'SepalLengthCm', 'SepalLengthCm']).head() Izhod:
Uporaba filtra za nabor podatkov
Razvrščanje DataFrame
Če želite razvrstiti podatkovni okvir v pandah, uporabite funkcijo sort_values() se uporablja. Pandas sort_values() lahko razvrsti podatkovni okvir v naraščajočem ali padajočem vrstnem redu.
Python Pandas razvršča podatkovni okvir v naraščajočem vrstnem redu
Izhod:
Razvrščen nabor podatkov na podlagi vrednosti stolpca
Pandas GroupBy
Groupby je precej preprost koncept. Ustvarimo lahko skupino kategorij in za kategorije uporabimo funkcijo. V resničnih projektih znanosti o podatkih boste imeli opravka z velikimi količinami podatkov in preizkušali stvari znova in znova, zato za učinkovitost uporabljamo koncept Groupby. Groupby se v glavnem nanaša na postopek, ki vključuje enega ali več naslednjih korakov:
- Razdelitev: To je proces, pri katerem podatke razdelimo v skupine z uporabo nekaterih pogojev na naborih podatkov.
- Prijavljanje: Je proces, v katerem uporabimo funkcijo za vsako skupino neodvisno.
- Združevanje: Gre za postopek, pri katerem združimo različne nabore podatkov po uporabi groupby in rezultate v podatkovno strukturo.
Naslednja slika bo pomagala razumeti proces, ki je vključen v koncept Groupby.
1. Združite edinstvene vrednosti iz stolpca Ekipa
Metoda Panda Groupby
2. Zdaj je za vsako skupino svoje vedro
3. Druge podatke stresite v vedra
4. Uporabite funkcijo za stolpec teže vsakega vedra.
Uporaba funkcije v stolpcu teže vsakega stolpca
Python Pandas GroupBy
Python3# importing pandas module import pandas as pd # Define a dictionary containing employee data data1 = {'Name': ['Jai', 'Anuj', 'Jai', 'Princi', 'Gaurav', 'Anuj', 'Princi', 'Abhi'], 'Age': [27, 24, 22, 32, 33, 36, 27, 32], 'Address': ['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj', 'Jaunpur', 'Kanpur', 'Allahabad', 'Aligarh'], 'Qualification': ['Msc', 'MA', 'MCA', 'Phd', 'B.Tech', 'B.com', 'Msc', 'MA']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) print('Original Dataframe') display(df) # applying groupby() function to # group the data on Name value. gk = df.groupby('Name') # Let's print the first entries # in all the groups formed. print('After Creating Groups') gk.first() Izhod:
pande groupby
Uporaba funkcije za skupino:
Po razdelitvi podatkov v skupino uporabimo funkcijo za vsako skupino, da izvedemo nekaj operacij, ki so:
- Združevanje: To je postopek, v katerem izračunamo skupno statistiko (ali statistiko) o vsaki skupini. Na primer, izračunajte skupinske vsote ali povprečja
- Transformacija: To je proces, v katerem izvedemo nekaj izračunov, specifičnih za skupino, in vrnemo podobno indeksirano. Na primer, polnjenje NA znotraj skupin z vrednostjo, ki izhaja iz vsake skupine
- Filtracija: To je postopek, v katerem zavržemo nekatere skupine glede na skupinski izračun, ki oceni True ali False. Na primer, filtriranje podatkov glede na skupinsko vsoto ali povprečje
Pandas Aggregation
Združevanje je proces, v katerem izračunamo sumarno statistiko o vsaki skupini. Agregirana funkcija vrne eno samo agregirano vrednost za vsako skupino. Po razdelitvi podatkov v skupine s funkcijo groupby je mogoče na združenih podatkih izvesti več operacij združevanja.
Združevanje Python Pandas
Python3# importing pandas module import pandas as pd # importing numpy as np import numpy as np # Define a dictionary containing employee data data1 = {'Name': ['Jai', 'Anuj', 'Jai', 'Princi', 'Gaurav', 'Anuj', 'Princi', 'Abhi'], 'Age': [27, 24, 22, 32, 33, 36, 27, 32], 'Address': ['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj', 'Jaunpur', 'Kanpur', 'Allahabad', 'Aligarh'], 'Qualification': ['Msc', 'MA', 'MCA', 'Phd', 'B.Tech', 'B.com', 'Msc', 'MA']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) # performing aggregation using # aggregate method grp1 = df.groupby('Name') grp1.aggregate(np.sum) Izhod:
Uporaba agregatne funkcije vsote na naboru podatkov
Združevanje DataFrame
Da bi povezali podatkovni okvir, uporabljamo concat() funkcija, ki pomaga pri povezovanju podatkovnega okvira. Ta funkcija opravlja vse težke naloge izvajanja operacij veriženja skupaj z osjo objektov Pandas, medtem ko izvaja izbirno nastavljeno logiko (združevanje ali presečišče) indeksov (če obstajajo) na drugih oseh.
Python Pandas Concatenate Dataframe
Python3# importing pandas module import pandas as pd # Define a dictionary containing employee data data1 = {'key': ['K0', 'K1', 'K2', 'K3'], 'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 'Age':[27, 24, 22, 32],} # Define a dictionary containing employee data data2 = {'key': ['K0', 'K1', 'K2', 'K3'], 'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 'Qualification':['Btech', 'B.A', 'Bcom', 'B.hons']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) # Convert the dictionary into DataFrame df1 = pd.DataFrame(data2) display(df, df1) # combining series and dataframe res = pd.concat([df, df1], axis=1) res Izhod:
Združevanje DataFrame
Ko moramo združiti zelo velike podatkovne okvire, združitve služijo kot močan način za hitro izvajanje teh operacij. Združevanja je mogoče izvesti samo na dveh podatkovnih okvirih hkrati, označenih kot leva in desna tabela. Ključ je skupni stolpec, v katerem bosta združena dva podatkovna okvira. Dobra praksa je uporaba ključev, ki imajo edinstvene vrednosti v celotnem stolpcu, da se izognete nenamernemu podvajanju vrednosti vrstic. Pande zagotavljajo eno samo funkcijo, združi () , kot vstopno točko za vse standardne operacije združevanja baze podatkov med objekti DataFrame.
Obstajajo štirje osnovni načini za ravnanje z združevanjem (notranji, levi, desni in zunanji), odvisno od tega, katere vrstice morajo ohraniti svoje podatke.
Python Pandas Merge Dataframe
Python3# importing pandas module import pandas as pd # Define a dictionary containing employee data data1 = {'key': ['K0', 'K1', 'K2', 'K3'], 'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 'Age':[27, 24, 22, 32],} # Define a dictionary containing employee data data2 = {'key': ['K0', 'K1', 'K2', 'K3'], 'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 'Qualification':['Btech', 'B.A', 'Bcom', 'B.hons']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) # Convert the dictionary into DataFrame df1 = pd.DataFrame(data2) display(df, df1) # using .merge() function res = pd.merge(df, df1, on='key') res Izhod:
Povezovanje dveh nizov podatkov
Pridruževanje DataFrame
Da bi se pridružili podatkovnemu okvirju, uporabljamo .join() Ta funkcija se uporablja za združevanje stolpcev dveh potencialno različno indeksiranih DataFrame v en rezultat DataFrame.
Python Pandas Join Dataframe
Python3# importing pandas module import pandas as pd # Define a dictionary containing employee data data1 = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 'Age':[27, 24, 22, 32]} # Define a dictionary containing employee data data2 = {'Address':['Allahabad', 'Kannuaj', 'Allahabad', 'Kannuaj'], 'Qualification':['MCA', 'Phd', 'Bcom', 'B.hons']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1,index=['K0', 'K1', 'K2', 'K3']) # Convert the dictionary into DataFrame df1 = pd.DataFrame(data2, index=['K0', 'K2', 'K3', 'K4']) display(df, df1) # joining dataframe res = df.join(df1) res Izhod:
Združevanje dveh nizov podatkov
Za več informacij se obrnite na našo Pande Spajanje, združevanje in veriženje vadnica
Za celoten vodnik o pandah si oglejte naše Vadnica Pandas .
Vizualizacija z Matplotlib
Matplotlib je enostaven za uporabo in neverjetna vizualizacijska knjižnica v Pythonu. Zgrajen je na nizih NumPy in zasnovan za delo s širšim skladom SciPy ter je sestavljen iz več grafov, kot so črta, stolpec, razpršenost, histogram itd.
Pyplot
Pyplot je modul Matplotlib, ki nudi vmesnik, podoben MATLAB-u. Pyplot ponuja funkcije, ki so v interakciji s figuro, tj. ustvari figuro, okrasi risbo z oznakami in ustvari območje za risanje v figuri.
Python3# Python program to show pyplot module import matplotlib.pyplot as plt plt.plot([1, 2, 3, 4], [1, 4, 9, 16]) plt.axis([0, 6, 0, 20]) plt.show()
Izhod:
Stolpični diagram
A barska parcela ali palični grafikon je graf, ki predstavlja kategorijo podatkov s pravokotnimi palicami z dolžinami in višinami, ki so sorazmerne z vrednostmi, ki jih predstavljajo. Palične ploskve lahko narišete vodoravno ali navpično. Palični grafikon opisuje primerjave med ločenimi kategorijami. Ustvarite ga lahko z metodo bar().
Palični grafikon Python Matplotlib
Tukaj bomo uporabili samo nabor podatkov šarenice
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') # This will plot a simple bar chart plt.bar(df['Species'], df['SepalLengthCm']) # Title to the plot plt.title('Iris Dataset') # Adding the legends plt.legend(['bar']) plt.show() Izhod:
Palični grafikon z uporabo knjižnice matplotlib
Histogrami
A histogram se v bistvu uporablja za predstavitev podatkov v obliki nekaterih skupin. To je vrsta paličnega grafikona, kjer os X predstavlja razpone binov, medtem ko os Y daje informacije o frekvenci. Če želite ustvariti histogram, je prvi korak, da ustvarite bin obsegov, nato porazdelite celoten obseg vrednosti v vrsto intervalov in preštejete vrednosti, ki spadajo v vsakega od intervalov. Koši so jasno označeni kot zaporedni intervali spremenljivk, ki se ne prekrivajo. The hist() funkcija se uporablja za izračun in ustvarjanje histograma x.
Histogram Python Matplotlib
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.hist(df['SepalLengthCm']) # Title to the plot plt.title('Histogram') # Adding the legends plt.legend(['SepalLengthCm']) plt.show() Izhod:
Histplot z uporabo knjižnice matplotlib
Graf raztrosa
Razpršeni diagrami se uporabljajo za opazovanje odnosa med spremenljivkami in uporabljajo pike za prikaz odnosa med njimi. The razprši () metoda v knjižnici matplotlib se uporablja za risanje razpršenega grafa.
Python Matplotlib Scatter Plot
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.scatter(df['Species'], df['SepalLengthCm']) # Title to the plot plt.title('Scatter Plot') # Adding the legends plt.legend(['SepalLengthCm']) plt.show() Izhod:
Raztreseni grafikon z uporabo knjižnice matplotlib
Box Plot
A boxplot ,Korelacija, znana tudi kot graf škatle in brkov. Je zelo dobra vizualna predstavitev, ko gre za merjenje porazdelitve podatkov. Jasno prikazuje mediane vrednosti, izstopajoče vrednosti in kvartile. Razumevanje distribucije podatkov je še en pomemben dejavnik, ki vodi k boljši gradnji modela. Če imajo podatki odstopanja, je okvirni izris priporočen način za njihovo prepoznavanje in izvajanje potrebnih ukrepov. Grafikon s škatlami in brki prikazuje, kako so podatki razpršeni. V tabeli je običajno vključenih pet informacij
- Najmanjša vrednost je prikazana na skrajni levi strani grafikona, na koncu levega 'brka'
- Prvi kvartil, Q1, je skrajno levo od polja (levi brk)
- Mediana je prikazana kot črta na sredini polja
- Tretji kvartil, Q3, prikazan na skrajni desni strani polja (desna brka)
- Največ je na skrajni desni strani polja
Predstavitev škatlaste ploskve
Interkvartilni razpon
Ilustriranje škatlastega zapleta
Python Matplotlib Box Plot
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.boxplot(df['SepalWidthCm']) # Title to the plot plt.title('Box Plot') # Adding the legends plt.legend(['SepalWidthCm']) plt.show() Izhod:
Boxplot z uporabo knjižnice matplotlib
Korelacijski toplotni zemljevidi
2-D Heatmap je orodje za vizualizacijo podatkov, ki pomaga predstaviti velikost pojava v obliki barv. Korelacijski toplotni zemljevid je toplotni zemljevid, ki prikazuje 2D korelacijsko matriko med dvema diskretnima dimenzijama z uporabo barvnih celic za predstavitev podatkov iz navadno monokromatskega merila. Vrednosti prve dimenzije so prikazane kot vrstice tabele, medtem ko je druga dimenzija stolpec. Barva celice je sorazmerna s številom meritev, ki ustrezajo dimenzijski vrednosti. Zaradi tega so korelacijski toplotni zemljevidi idealni za analizo podatkov, saj naredijo vzorce zlahka berljive in poudarijo razlike in variacije v istih podatkih. Korelacijski toplotni zemljevid, tako kot običajni toplotni zemljevid, podpira barvna vrstica, zaradi katere so podatki lahko berljivi in razumljivi.
Opomba: Podatke je treba posredovati z metodo corr(), da se ustvari korelacijski toplotni zemljevid. Prav tako corr() sam izloči stolpce, ki med ustvarjanjem korelacijskega toplotnega zemljevida ne bodo koristni, in izbere tiste, ki jih je mogoče uporabiti.
Korelacijski toplotni zemljevid Python Matplotlib
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.imshow(df.corr() , cmap = 'autumn' , interpolation = 'nearest' ) plt.title('Heat Map') plt.show() Izhod:
Toplotni zemljevid z uporabo knjižnice matplotlib
Za več informacij o vizualizaciji podatkov glejte naše spodnje vadnice –
- Opomba: Uporabili bomo nabor podatkov Iris.
Pridobivanje informacij o naboru podatkov
Za pridobitev oblike nabora podatkov bomo uporabili parameter oblike.
Oblika Dataframe
Python3df.shapeIzhod:
(150, 6)Vidimo lahko, da podatkovni okvir vsebuje 6 stolpcev in 150 vrstic.
Opomba: Uporabili bomo nabor podatkov Iris.
Pridobivanje informacij o naboru podatkov
Zdaj pa poglejmo še stolpce in njihove vrste podatkov. Za to bomo uporabili info() metoda.
Informacije o naboru podatkov
Python3df.info()Izhod:
![]()
informacije o naboru podatkov
Vidimo lahko, da ima samo en stolpec kategorične podatke, vsi drugi stolpci pa so številskega tipa z vnosi, ki niso ničelni.
Pridobimo hiter statistični povzetek nabora podatkov z uporabo opisati () metoda. Funkcija describe() uporablja osnovne statistične izračune na naboru podatkov, kot so ekstremne vrednosti, število standardnih odstopanj podatkovnih točk itd. Vse manjkajoče vrednosti ali vrednosti NaN so samodejno preskočene. funkcija describe() daje dobro sliko porazdelitve podatkov.
Opis nabora podatkov
Python3df.describe()Izhod:
![]()
Opis nabora podatkov
Vidimo lahko število vsakega stolpca skupaj z njihovo srednjo vrednostjo, standardnim odklonom, najmanjšimi in največjimi vrednostmi.
Preverjanje manjkajočih vrednosti
Preverili bomo, ali naši podatki vsebujejo manjkajoče vrednosti ali ne. Manjkajoče vrednosti se lahko pojavijo, če ni podanih informacij za eno ali več postavk ali za celotno enoto. Uporabili bomo isnull() metoda.
koda python za manjkajočo vrednost
Python3df.isnull().sum()Izhod:
![]()
V naboru podatkov manjkajo vrednosti
Vidimo lahko, da noben stolpec nima manjkajoče vrednosti.
Preverjanje dvojnikov
Poglejmo, ali naš nabor podatkov vsebuje dvojnike ali ne. Pande drop_duplicates() metoda pomaga pri odstranjevanju dvojnikov iz okvira podatkov.
Funkcija Pandas za manjkajoče vrednosti
Python3data = df.drop_duplicates(subset ='Species',) dataIzhod:
![]()
Odstranjevanje podvojene vrednosti v naboru podatkov
Vidimo lahko, da obstajajo samo tri edinstvene vrste. Poglejmo, ali je nabor podatkov uravnotežen ali ne, tj. vse vrste vsebujejo enako količino vrstic ali ne. Uporabili bomo Series.value_counts() funkcijo. Ta funkcija vrne niz, ki vsebuje število edinstvenih vrednosti.
Koda Python za vrednost šteje v stolpcu
Python3df.value_counts('Species')Izhod:
![]()
število vrednosti v naboru podatkov
Vidimo lahko, da vse vrste vsebujejo enako število vrstic, zato ne smemo izbrisati nobenega vnosa.
Odnos med spremenljivkami
Videli bomo razmerje med dolžino in širino čašnega lista ter med dolžino in širino venčnega lista.
Primerjava dolžine in širine čašnice
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.scatterplot(x='SepalLengthCm', y='SepalWidthCm', hue='Species', data=df, ) # Placing Legend outside the Figure plt.legend(bbox_to_anchor=(1, 1), loc=2) plt.show()Izhod:
![]()
Raztreseni grafikon z uporabo knjižnice matplotlib
Iz zgornje risbe lahko sklepamo, da –
- Vrsta Setosa ima manjše dolžine čašnih listov, vendar večje širine čašnih listov.
- Versicolor Species leži v sredini med drugima dvema vrstama glede dolžine in širine čašnega lista
- Vrsta Virginica ima večje dolžine čašnih listov, vendar manjše širine čašnih listov.
Primerjava dolžine in širine cvetnega lista
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.scatterplot(x='PetalLengthCm', y='PetalWidthCm', hue='Species', data=df, ) # Placing Legend outside the Figure plt.legend(bbox_to_anchor=(1, 1), loc=2) plt.show()Izhod:
![]()
sactter plot dolžina cvetnega lista
Iz zgornje risbe lahko sklepamo, da –
- Vrsta Setosa ima manjše dolžine in širine cvetnih listov.
- Versicolor Species leži v sredini med drugima dvema vrstama glede na dolžino in širino cvetnih listov
- Vrsta Virginica ima največjo dolžino in širino cvetnih listov.
Narišimo vsa razmerja stolpcev z uporabo parne grafike. Uporablja se lahko za multivariatno analizo.
Koda Python za pairplot
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.pairplot(df.drop(['Id'], axis = 1), hue='Species', height=2)Izhod:
Parni načrt za nabor podatkov
Na tej ploskvi lahko vidimo veliko vrst odnosov, na primer vrsta Seotsa ima najmanjšo širino in dolžino cvetnih listov. Ima tudi najmanjšo dolžino čašnega lista, vendar večjo širino čašnega lista. Takšne informacije je mogoče zbrati o kateri koli drugi vrsti.
Ravnanje s korelacijo
Pande dataframe.corr() se uporablja za iskanje parne korelacije vseh stolpcev v podatkovnem okviru. Vse vrednosti NA so samodejno izključene. Vsi neštevilski stolpci podatkovnega tipa v podatkovnem okviru so prezrti.
primer:
Python3data.corr(method='pearson')Izhod:
![]()
korelacijo med stolpci v naboru podatkov
Toplotne karte
Toplotni zemljevid je tehnika vizualizacije podatkov, ki se uporablja za analizo nabora podatkov kot barv v dveh dimenzijah. V bistvu prikazuje korelacijo med vsemi numeričnimi spremenljivkami v naboru podatkov. Enostavneje povedano, zgoraj ugotovljeno korelacijo lahko narišemo z uporabo toplotnih kart.
python koda za toplotni zemljevid
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.heatmap(df.corr(method='pearson').drop( ['Id'], axis=1).drop(['Id'], axis=0), annot = True); plt.show()Izhod:
![]()
Toplotni zemljevid za korelacijo v naboru podatkov
Iz zgornjega grafa lahko vidimo, da -
- Širina in dolžina cvetnega lista imata visoko korelacijo.
- Dolžina cvetnega lista in širina čašnega lista sta dobro povezani.
- Širina cvetnega lista in dolžina čašnega lista sta dobro povezani.
Ravnanje z izstopajočimi vrednostmi
Outlier je podatkovna postavka/objekt, ki bistveno odstopa od preostalih (tako imenovanih normalnih) objektov. Lahko so posledica napak pri meritvah ali izvedbi. Analiza za odkrivanje izstopajočih vrednosti se imenuje rudarjenje izstopajočih vrednosti. Obstaja veliko načinov za odkrivanje izstopajočih vrednosti in postopek odstranjevanja je podatkovni okvir enak kot odstranitev podatkovne postavke iz pandinega podatkovnega okvira.
Oglejmo si nabor podatkov šarenice in narišimo polje za stolpec SepalWidthCm.
python koda za Boxplot
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt # Load the dataset df = pd.read_csv('Iris.csv') sns.boxplot(x='SepalWidthCm', data=df)Izhod:
![]()
Boxplot za stolpec sepalwidth
V zgornjem grafu vrednosti nad 4 in pod 2 delujejo kot izstopajoče vrednosti.
Odstranjevanje izstopajočih vrednosti
Za odstranitev izstopajoče vrednosti je treba slediti istemu postopku odstranjevanja vnosa iz nabora podatkov z uporabo njegovega natančnega položaja v naboru podatkov, ker je pri vseh zgornjih metodah zaznavanja izstopajočih vrednosti končni rezultat seznam vseh tistih podatkovnih elementov, ki ustrezajo definiciji izstopajočih vrednosti. glede na uporabljeno metodo.
Izstopajoče vrednosti bomo zaznali z uporabo IQR in potem jih bomo odstranili. Narisali bomo tudi škatlasto ploskev, da vidimo, ali so odstopanja odstranjena ali ne.
Python3# Importing import sklearn from sklearn.datasets import load_boston import pandas as pd import seaborn as sns # Load the dataset df = pd.read_csv('Iris.csv') # IQR Q1 = np.percentile(df['SepalWidthCm'], 25, interpolation = 'midpoint') Q3 = np.percentile(df['SepalWidthCm'], 75, interpolation = 'midpoint') IQR = Q3 - Q1 print('Old Shape: ', df.shape) # Upper bound upper = np.where(df['SepalWidthCm']>= (Q3+1,5*IQR)) # Spodnja meja spodnja = np.where(df['SepalWidthCm'] <= (Q1-1.5*IQR)) # Removing the Outliers df.drop(upper[0], inplace = True) df.drop(lower[0], inplace = True) print('New Shape: ', df.shape) sns.boxplot(x='SepalWidthCm', data=df)Izhod:
![]()
boxplot z uporabo knjižnice seaborn
Za več informacij o EDA glejte naše spodnje vadnice –