Tietojen analysointi Pythonilla
Tässä artikkelissa keskustelemme tietojen analysoinnista Pythonilla. Keskustelemme kaikenlaisista data-analyyseistä, eli numeerisen datan analysoinnista NumPyllä, taulukkotiedon analysoinnista Pandalla, datan visualisoinnista Matplotlibistä ja Exploratory data-analyysistä.
Tietojen analysointi Pythonilla
Tietojen analysointi on tekniikka tietojen keräämiseen, muuntamiseen ja järjestämiseen tulevaisuuden ennusteiden ja tietoon perustuvien päätösten tekemiseksi. Se auttaa myös löytämään mahdollisia ratkaisuja yritysongelmiin. Data-analyysissä on kuusi vaihetta. He ovat:
- Kysy tai määritä tietovaatimukset
- Valmistele tai kerää tietoja
- Puhdista ja käsittele
- Analysoida
- Jaa
- Toimi tai tee ilmoitus
Tietojen analysointi Pythonilla
Huomautus: Jos haluat lisätietoja näistä vaiheista, katso meidän NumPy on taulukonkäsittelypaketti Pythonissa ja tarjoaa tehokkaan moniulotteisen taulukkoobjektin ja työkalut näiden taulukoiden kanssa työskentelemiseen. Se on peruspaketti tieteelliselle laskennalle Pythonilla.
Taulukot NumPyssä
NumPy Array on samantyyppisten elementtien (yleensä numeroiden) taulukko, joka on indeksoitu positiivisten kokonaislukujen joukolla. Numpyssa taulukon dimensioiden määrää kutsutaan taulukon arvoksi. Kokonaislukujen monikko, joka antaa taulukon koon kussakin ulottuvuudessa, tunnetaan taulukon muotona.
NumPy-taulukon luominen
NumPy-taulukoita voidaan luoda useilla tavoilla, eri arvoilla. Se voidaan myös luoda käyttämällä erilaisia tietotyyppejä, kuten listoja, monikoita jne. Tuloksena olevan taulukon tyyppi päätellään sekvenssien elementtien tyypistä. NumPy tarjoaa useita toimintoja taulukoiden luomiseen alkuperäisen paikkamerkkisisällön kanssa. Nämä minimoivat ryhmien kasvattamisen tarpeen, mikä on kallis toimenpide.
Luo Array käyttämällä numpy.empty(muoto, dtype=float, order='C')
Python 3import 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) Lähtö:
Tyhjennä Matrix pandoilla
Luo Array käyttämällä numpy.zeros(muoto, dtype = ei mitään, järjestys = 'C')
Python 3import 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) Lähtö:
Matrix b : [0 0] Matrix a : [[0 0] [0 0]] Matrix c : [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
Toiminnot Numpy Arrays
Aritmeettiset operaatiot
- Lisäys:
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)
Lähtö:
[ 7 77 23 130] [ 7 77 23 130] [ 8 79 26 134] [ 7 77 23 130]
- Vähennyslasku:
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)
Lähtö:
[ 3 67 3 70] [ 3 67 3 70]
- Kertominen:
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)
Lähtö:
[ 10 360 130 3000] [ 10 360 130 3000]
- Jaosto:
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)
Lähtö:
[ 2.5 14.4 1.3 3.33333333] [ 2.5 14.4 1.3 3.33333333]
Lisätietoja saat osoitteestamme NumPy – Aritmeettisten operaatioiden opetusohjelma
NumPy-taulukon indeksointi
Indeksointi voidaan tehdä NumPyssä käyttämällä taulukkoa indeksinä. Viipaleen tapauksessa palautetaan näkymä tai matala kopio taulukosta, mutta indeksitaulukossa palautetaan kopio alkuperäisestä taulukosta. Numpy-taulukot voidaan indeksoida muiden taulukoiden tai minkä tahansa muun sekvenssin kanssa monikkoa lukuun ottamatta. Viimeinen elementti indeksoidaan -1 sekunti viimeisenä -2 ja niin edelleen.
Python NumPy -taulukon indeksointi
Python 3# 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) Lähtö:
A sequential array with a negative step: [10 8 6 4 2] Elements at these indices are: [4 8 6]
NumPy-taulukon viipalointi
Tarkastellaan syntaksia x[obj], jossa x on taulukko ja obj on indeksi. Slice-objekti on indeksi tapauksessa perus viipalointi . Perusleikkaus tapahtuu, kun obj on:
- slice-objekti, joka on muotoa aloitus: lopetus: askel
- kokonaisluku
- tai joukko slice-objekteja ja kokonaislukuja
Kaikki perusleikkauksella luodut taulukot ovat aina alkuperäisen taulukon näkymiä.
Python 3# 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:]) Lähtö:
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]
Ellipsiä voidaan käyttää myös perusviipaloinnin kanssa. Ellipsi (…) on : objektien lukumäärä, joka tarvitaan taulukon dimensioiden kanssa samanpituisen valintasarjan tekemiseen.
Python 3# 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 ]
Lähtö:
[[ 2 5] [ 8 11]]
NumPy Array Broadcasting
Termi lähetys viittaa siihen, kuinka numpy käsittelee eri ulottuvuuksia omaavia taulukoita aritmeettisten operaatioiden aikana, jotka johtavat tiettyihin rajoituksiin, pienempi taulukko lähetetään suuremman taulukon poikki, jotta niillä on yhteensopivat muodot.
Oletetaan, että meillä on suuri tietojoukko, jokainen datam on luettelo parametreista. Numpyssa meillä on 2-D-taulukko, jossa jokainen rivi on datam ja rivien määrä on tietojoukon koko. Oletetaan, että haluamme soveltaa jonkinlaista skaalausta kaikkiin näihin tietoihin, jokainen parametri saa oman skaalaustekijänsä tai sanotaan, että jokainen parametri kerrotaan jollakin tekijällä.
Selkeän käsityksen vuoksi lasketaan elintarvikkeiden kalorit makroravinteiden erittelyn avulla. Karkeasti sanottuna ruoan kaloripitoiset osat koostuvat rasvoista (9 kaloria grammaa kohti), proteiinista (4 CPG) ja hiilihydraateista (4 CPG). Joten jos luettelemme joitain ruokia (tietomme) ja kunkin ruoka-aineen makroravintoainejakauman (parametrit), voimme kertoa kunkin ravintoaineen sen kaloriarvolla (skaalaus) laskeaksemme jokaisen ruoka-aineen kalorijakauman.
Tämän muunnoksen avulla voimme nyt laskea kaikenlaista hyödyllistä tietoa. Esimerkiksi, mikä on joidenkin elintarvikkeiden sisältämien kalorien kokonaismäärä tai tietää illalliseni erittelyn perusteella, kuinka monta kaloria sain proteiinista ja niin edelleen.
Katsotaanpa naiivia tapaa tuottaa tämä laskenta Numpylla:
Python 3import 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
Lähtö:
array([[ 2.4, 8.7, 31.2], [157.2, 70.8, 292. ], [165.6, 95.1, 191.2], [ 43.2, 33. , 39.2]])
Lähetyssäännöt: Kahden taulukon lähettäminen yhdessä seuraa näitä sääntöjä:
- Jos taulukoilla ei ole sama arvo, lisää alemman tason taulukon muotoon 1, kunnes molemmilla muodoilla on sama pituus.
- Nämä kaksi taulukkoa ovat yhteensopivia dimensiossa, jos niiden dimensiossa on sama koko tai jos toisen taulukon koko on 1 kyseisessä ulottuvuudessa.
- Matriisit voidaan lähettää yhdessä, jos ne ovat yhteensopivia kaikkien ulottuvuuksien kanssa.
- Yleislähetyksen jälkeen kukin matriisi käyttäytyy ikään kuin sillä olisi muoto, joka on yhtä suuri kuin kahden syötetaulukon muotojen elementtikohtainen maksimi.
- Missä tahansa ulottuvuudessa, jossa yhden taulukon koko oli 1 ja toisen taulukon koko suurempi kuin 1, ensimmäinen matriisi käyttäytyy ikään kuin se olisi kopioitu tätä ulottuvuutta pitkin.
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)
Lähtö:
[[ 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]]
Huomautus: Lisätietoja saat osoitteestamme Python NumPy opetusohjelma .
Tietojen analysointi Pandan avulla
Python Pandas Käytetään relaatio- tai tunnistetiedoille, ja se tarjoaa erilaisia tietorakenteita tällaisten tietojen ja aikasarjojen käsittelyyn. Tämä kirjasto on rakennettu NumPy-kirjaston päälle. Tämä moduuli tuodaan yleensä seuraavasti:
import pandas as pd
Tässä pd:tä kutsutaan Pandan aliakseksi. Kirjastoa ei kuitenkaan tarvitse tuoda aliaksen avulla, se vain auttaa kirjoittamaan vähemmän koodia joka kerta, kun menetelmää tai ominaisuutta kutsutaan. Pandat tarjoavat yleensä kaksi tietorakennetta tietojen käsittelyyn. Ne ovat:
- Sarja
- Datakehys
Sarja:
Panda-sarja on yksiulotteinen merkitty taulukko, joka pystyy säilyttämään kaikentyyppisiä tietoja (kokonaisluku, merkkijono, float, python-objektit jne.). Akselitunnisteita kutsutaan yhteisesti indekseiksi. Pandas-sarja on vain sarake Excel-taulukossa. Tunnisteiden ei tarvitse olla yksilöllisiä, vaan niiden on oltava tiivistettävää tyyppiä. Objekti tukee sekä kokonaisluku- että tarrapohjaista indeksointia ja tarjoaa joukon menetelmiä indeksiin liittyvien toimintojen suorittamiseen.
Panda-sarja
Se voidaan luoda Series()-funktiolla lataamalla tietojoukko olemassa olevasta tallennustilasta, kuten SQL, tietokanta, CSV-tiedostot, Excel-tiedostot jne., tai tietorakenteista, kuten luetteloista, sanakirjoista jne.
Python Pandan luontisarja
Python 3import 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)
Lähtö:
pnadas-sarja
Datakehys:
Pandas DataFrame on kaksiulotteinen kokomuuttuva, mahdollisesti heterogeeninen taulukkomuotoinen tietorakenne, jossa on nimetyt akselit (rivit ja sarakkeet). Datakehys on kaksiulotteinen tietorakenne, eli tiedot kohdistetaan taulukkomuotoisesti riveihin ja sarakkeisiin. Pandas DataFrame koostuu kolmesta pääkomponentista, tiedoista, riveistä ja sarakkeista.
Pandas Dataframe
Se voidaan luoda Dataframe()-menetelmällä, ja aivan kuten sarja, se voi olla myös eri tiedostotyypeistä ja tietorakenteista.
Python Pandat luovat tietokehystä
Python 3import 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
Lähtö:
Datakehyksen luominen python-luettelosta
Datakehyksen luominen CSV-tiedostosta
Me voimme Luo tietokehys CSV:stä tiedostot käyttämällä read_csv() toiminto.
Python Pandas lukee CSV:tä
Python 3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # Printing top 5 rows df.head() Lähtö:
tietokehyksen pää
DataFramen suodatus
Pandat dataframe.filter() -toimintoa käytetään tietokehyksen rivien tai sarakkeiden alijoukkoon määritetyn indeksin otsikoiden mukaan. Huomaa, että tämä rutiini ei suodata datakehystä sen sisällöstä. Suodatinta käytetään indeksin otsikoissa.
Python Pandas Filter Dataframe
Python 3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # applying filter function df.filter(['Species', 'SepalLengthCm', 'SepalLengthCm']).head() Lähtö:
Suodattimen käyttö tietojoukossa
DataFramen lajittelu
Tietokehyksen lajittelemiseksi pandassa funktio sort_values() käytetään. Pandas sort_values() voi lajitella tietokehyksen nousevaan tai laskevaan järjestykseen.
Python Panda -tietokehyksen lajittelu nousevassa järjestyksessä
Lähtö:
Lajiteltu tietojoukko sarakkeen arvon perusteella
Pandas GroupBy
Groupby on melko yksinkertainen käsite. Voimme luoda luokkien ryhmittelyn ja soveltaa luokkiin funktiota. Todellisissa datatieteen projekteissa joudut käsittelemään suuria tietomääriä ja kokeilemaan asioita yhä uudelleen ja uudelleen, joten tehokkuuden lisäämiseksi käytämme Groupby-konseptia. Groupby viittaa pääasiassa prosessiin, joka sisältää yhden tai useamman seuraavista vaiheista:
- Jakaminen: Se on prosessi, jossa jaamme tiedot ryhmiin soveltamalla joitain ehtoja tietojoukkoihin.
- Hakeminen: Se on prosessi, jossa käytämme funktiota jokaiseen ryhmään itsenäisesti.
- Yhdistetään: Se on prosessi, jossa yhdistämme erilaisia tietojoukkoja groupby:n ja tulosten soveltamisen jälkeen tietorakenteeksi.
Seuraava kuva auttaa ymmärtämään Groupby-konseptin prosessia.
1. Ryhmittele yksilölliset arvot Ryhmä-sarakkeesta
Panda Groupby -menetelmä
2. Nyt jokaiselle ryhmälle on oma ämpäri
3. Heitä muut tiedot ämpäriin
4. Käytä funktiota kunkin kauhan painosarakkeeseen.
Toiminnon käyttäminen kunkin sarakkeen painosarakkeessa
Python Pandas GroupBy
Python 3# 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() Lähtö:
panda groupby
Toiminnon käyttäminen ryhmässä:
Kun tiedot on jaettu ryhmään, käytämme jokaiseen ryhmään funktiota, jotta voimme suorittaa joitakin toimintoja, jotka ovat:
- Aggregointi: Se on prosessi, jossa laskemme yhteenvetotilaston (tai tilastot) jokaisesta ryhmästä. Esimerkiksi Laske ryhmien summat tai keskiarvot
- Muunnos: Se on prosessi, jossa suoritamme joitain ryhmäkohtaisia laskelmia ja palautamme vastaavan indeksin. Esimerkiksi NA:iden täyttäminen ryhmien sisällä kustakin ryhmästä johdetuilla arvoilla
- Suodatus: Se on prosessi, jossa hylkäämme joitain ryhmiä ryhmäkohtaisen laskennan mukaan, joka arvioi tosi tai epätosi. Esimerkiksi tietojen suodattaminen ryhmän summan tai keskiarvon perusteella
Pandan yhdistäminen
Aggregointi on prosessi, jossa laskemme yhteenvetotilaston jokaisesta ryhmästä. Yhdistetty funktio palauttaa yhden yhdistetyn arvon kullekin ryhmälle. Kun tiedot on jaettu ryhmiin groupby-funktiolla, ryhmitellylle tiedolle voidaan suorittaa useita aggregointitoimintoja.
Python Pandas -yhdistelmä
Python 3# 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) Lähtö:
Summa-aggregate-funktion käyttö tietojoukossa
DataFramen ketjuttaminen
Käytämme datakehyksen yhdistämiseksi concat() toiminto, joka auttaa tietokehyksen yhdistämisessä. Tämä toiminto suorittaa kaiken raskaan noston ketjutusoperaatioiden suorittamisesta Panda-objektien akselin kanssa samalla kun se suorittaa valinnaisen sarjalogiikan (liitos tai leikkaus) indekseille (jos sellaisia on) muilla akseleilla.
Python Pandas Liitä tietokehys
Python 3# 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 Lähtö:
DataFramen yhdistäminen
Kun meidän on yhdistettävä erittäin suuria DataFrame-kehyksiä, liitokset toimivat tehokkaana tapana suorittaa nämä toiminnot nopeasti. Liitokset voidaan tehdä vain kahdelle DataFrame-kehykselle kerrallaan, jotka on merkitty vasen ja oikea taulukko. Avain on yhteinen sarake, johon kaksi DataFrame-kehystä liitetään. On hyvä käytäntö käyttää avaimia, joilla on yksilölliset arvot koko sarakkeessa, jotta vältetään riviarvojen tahaton päällekkäisyys. Pandat tarjoavat yhden toiminnon, yhdistää() , kaikkien DataFrame-objektien välisten standardien tietokantaliitostoimintojen aloituspisteenä.
Liitoksen käsittelyssä on neljä perustapaa (sisäinen, vasen, oikea ja ulompi) riippuen siitä, mitkä rivit säilyttävät tietonsa.
Python Pandas Yhdistä tietokehys
Python 3# 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 Lähtö:
Yhdistävä kaksi tietojoukkoa
Liittyminen DataFrameen
Tietokehykseen liittymiseksi käytämme .liittyä seuraan() toiminto tätä toimintoa käytetään yhdistämään kahden mahdollisesti eri tavalla indeksoidun datakehyksen sarakkeet yhdeksi tulokseksi DataFrameksi.
Python Pandat Liity Dataframeen
Python 3# 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 Lähtö:
Kahden tietojoukon yhdistäminen
Lisätietoja saat osoitteestamme Pandojen yhdistäminen, yhdistäminen ja ketjuttaminen opetusohjelma
Täydellisen oppaan Pandasta löydät meidän Pandas opetusohjelma .
Visualisointi Matplotlibillä
Matplotlib on helppokäyttöinen ja hämmästyttävä visualisoiva kirjasto Pythonissa. Se on rakennettu NumPy-taulukoille ja suunniteltu toimimaan laajemman SciPy-pinon kanssa, ja se koostuu useista kaavioista, kuten viiva, palkki, sironta, histogrammi jne.
Pyplot
Pyplot on Matplotlib-moduuli, joka tarjoaa MATLAB-tyyppisen käyttöliittymän. Pyplot tarjoaa toimintoja, jotka ovat vuorovaikutuksessa hahmon kanssa eli luovat hahmon, koristelevat juonen etiketeillä ja luovat piirtoalueen kuvioon.
Python 3# 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()
Lähtö:
Pylväsdiagrammi
A baarin juoni tai pylväskaavio on kaavio, joka edustaa tietoluokkaa suorakaiteen muotoisilla pylväillä, joiden pituus ja korkeus on verrannollinen niiden edustamiin arvoihin. Palkkikuvaajat voidaan piirtää vaaka- tai pystysuunnassa. Pylväskaavio kuvaa erillisten luokkien vertailut. Se voidaan luoda bar()-menetelmällä.
Python Matplotlib -pylväskaavio
Tässä käytämme vain iiristietojoukkoa
Python 3import 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() Lähtö:
Pylväskaavio matplotlib-kirjastolla
Histogrammit
A histogrammi käytetään periaatteessa edustamaan tietoja joidenkin ryhmien muodossa. Se on eräänlainen pylväsdiagrammi, jossa X-akseli edustaa bin-alueita, kun taas Y-akseli antaa tietoja taajuudesta. Histogrammin luomiseksi ensimmäinen askel on luoda alueista joukko, jakaa sitten koko arvojen alue sarjaan ja laskea arvot, jotka kuuluvat kuhunkin väliin. Säiliöt tunnistetaan selvästi peräkkäisiksi, ei-päällekkäisiksi muuttujien aikaväleiksi. The hist() funktiota käytetään x:n histogrammin laskemiseen ja luomiseen.
Python Matplotlib Histogrammi
Python 3import 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() Lähtö:
Histplot matplotlib-kirjaston avulla
Scatter Plot
Sirontakaavioita käytetään muuttujien välisten suhteiden tarkkailuun, ja ne kuvaavat niiden välistä suhdetta pisteiden avulla. The hajaantua() Matplotlib-kirjaston menetelmää käytetään sirontakuvaajan piirtämiseen.
Python Matplotlib -sirontakuvaaja
Python 3import 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() Lähtö:
Sirontadiagrammi käyttämällä matplotlib-kirjastoa
Laatikko tontti
A boxplot ,Korrelaatio, joka tunnetaan myös nimellä laatikko ja viiksi juoni. Se on erittäin hyvä visuaalinen esitys tietojen jakautumisen mittaamisessa. Piirtää selkeästi mediaaniarvot, poikkeamat ja kvartiilit. Tietojen jakautumisen ymmärtäminen on toinen tärkeä tekijä, joka johtaa parempaan mallin rakentamiseen. Jos tiedoissa on poikkeavuuksia, laatikkokaavio on suositeltava tapa tunnistaa ne ja ryhtyä tarvittaviin toimenpiteisiin. Laatikko- ja viiksikaavio näyttää, kuinka tiedot jakautuvat. Kaavioon sisältyy yleensä viisi tietoa
- Minimi näkyy kaavion vasemmassa reunassa, vasemman 'viskerin' lopussa
- Ensimmäinen kvartiili, Q1, on laatikon äärivasemmalla (vasemmalla viiksellä)
- Mediaani näkyy viivana laatikon keskellä
- Kolmas kvartiili, Q3, näkyy laatikon oikeassa reunassa (oikea viiksi)
- Maksimi on laatikon oikeassa reunassa
Laatikkokuvan esitys
Kvartiilien välinen alue
Havainnollistava laatikkojuoni
Python Matplotlib Box Plot
Python 3import 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() Lähtö:
Boxplot käyttämällä matplotlib-kirjastoa
Korrelaatiolämpökartat
2-D Heatmap on tietojen visualisointityökalu, joka auttaa esittämään ilmiön suuruuden väreinä. Korrelaatiolämpökartta on lämpökartta, joka näyttää 2D-korrelaatiomatriisin kahden erillisen ulottuvuuden välillä käyttäen värillisiä soluja edustamaan tietoja tavallisesti monokromaattisesta mittakaavasta. Ensimmäisen ulottuvuuden arvot näkyvät taulukon riveinä, kun taas toinen ulottuvuus on sarake. Solun väri on verrannollinen mitta-arvoa vastaavien mittausten määrään. Tämä tekee korrelaatiolämpökartoista ihanteellisia data-analyysiin, koska se tekee kuvioista helposti luettavia ja korostaa erot ja vaihtelut samoissa tiedoissa. Korrelaatiolämpökartan, kuten tavallisen lämpökartan, apuna on väripalkki, joka tekee tiedoista helposti luettavia ja ymmärrettäviä.
Huomautus: Tässä olevat tiedot on välitettävä corr()-menetelmällä korrelaatiolämpökartan luomiseksi. Lisäksi corr() itse eliminoi sarakkeet, joista ei ole hyötyä luotaessa korrelaatiolämpökarttaa, ja valitsee ne, joita voidaan käyttää.
Python Matplotlib -korrelaatiolämpökartta
Python 3import 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() Lähtö:
Lämpökartta matplotlib-kirjastolla
Lisätietoja tietojen visualisoinnista saat alla olevista opetusohjelmistamme -
- Huomautus: Käytämme Iris Datasetiä.
Tietojen saaminen tietojoukosta
Käytämme shape-parametria saadaksemme tietojoukon muodon.
Tietokehyksen muoto
Python 3df.shapeLähtö:
(150, 6)Näemme, että tietokehys sisältää 6 saraketta ja 150 riviä.
Huomautus: Käytämme Iris Datasetiä.
Tietojen saaminen tietojoukosta
Otetaan nyt myös sarakkeet ja niiden tietotyypit. Tätä varten käytämme tiedot() menetelmä.
Tietoa tietojoukosta
Python 3df.info()Lähtö:
![]()
tietoja tietojoukosta
Näemme, että vain yhdessä sarakkeessa on kategorisia tietoja ja kaikki muut sarakkeet ovat numeerisia, ja niissä on ei-nolla-merkintöjä.
Saadaan nopea tilastollinen yhteenveto tietojoukosta käyttämällä kuvaile () menetelmä. Funktio description() käyttää perustilastollisia laskelmia tietojoukossa, kuten ääriarvot, datapisteiden keskihajonnan määrä jne. Puuttuva arvo tai NaN-arvo ohitetaan automaattisesti. description()-funktio antaa hyvän kuvan datan jakautumisesta.
Tietojoukon kuvaus
Python 3df.describe()Lähtö:
![]()
Kuvaus tietojoukosta
Näemme jokaisen sarakkeen määrän sekä niiden keskiarvon, keskihajonnan sekä minimi- ja maksimiarvot.
Puuttuvien arvojen tarkistus
Tarkistamme, sisältävätkö tiedoissamme puuttuvia arvoja vai ei. Puuttuvat arvot voivat ilmetä, kun yhdestä tai useammasta tuotteesta tai koko yksiköstä ei ole annettu tietoja. Tulemme käyttämään isnull() menetelmä.
python-koodi puuttuvalle arvolle
Python 3df.isnull().sum()Lähtö:
![]()
Tietojoukosta puuttuu arvoja
Näemme, ettei mistään sarakkeesta ole puuttuvaa arvoa.
Kopioiden tarkistaminen
Katsotaan, sisältääkö tietojoukomme kaksoiskappaleita vai ei. Pandat drop_duplicates() menetelmä auttaa poistamaan kaksoiskappaleet tietokehyksestä.
Pandafunktio puuttuville arvoille
Python 3data = df.drop_duplicates(subset ='Species',) dataLähtö:
![]()
Pudotetaan kaksoisarvo tietojoukossa
Voimme nähdä, että on olemassa vain kolme ainutlaatuista lajia. Katsotaan onko tietojoukko tasapainossa vai ei, eli sisältävätkö kaikki lajit yhtä paljon rivejä vai eivät. Tulemme käyttämään Series.value_counts() toiminto. Tämä funktio palauttaa sarjan, joka sisältää yksilöllisten arvojen lukumäärän.
Python-koodi sarakkeen arvojen laskemiseen
Python 3df.value_counts('Species')Lähtö:
![]()
arvomäärä tietojoukossa
Näemme, että kaikki lajit sisältävät yhtä paljon rivejä, joten merkintöjä ei pidä poistaa.
Muuttujien välinen suhde
Näemme verholehden pituuden ja leveyden sekä terälehden pituuden ja leveyden välisen suhteen.
Vertaamalla verholehden pituutta ja leveyttä
Python 3# 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()Lähtö:
![]()
Sirontadiagrammi käyttämällä matplotlib-kirjastoa
Yllä olevasta juovasta voimme päätellä, että -
- Lajilla Setosa on verholehden pituus pienempi, mutta verholeveys suurempi.
- Versicolor Species on verholehden pituuden ja leveyden suhteen kahden muun lajin keskellä
- Lajilla Virginica on verholehtien pituudet, mutta verholeveydet pienemmät.
Terälehden pituuden ja leveyden vertailu
Python 3# 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()Lähtö:
![]()
sactter plot terälehden pituus
Yllä olevasta juovasta voimme päätellä, että -
- Setosa-lajilla on pienempi terälehtien pituus ja leveys.
- Versicolor Species sijaitsee terälehtien pituuden ja leveyden suhteen kahden muun lajin keskellä
- Virginica-lajilla on suurimmat terälehtien pituudet ja leveydet.
Piirretään kaikki sarakkeen suhteet parikaavion avulla. Sitä voidaan käyttää monimuuttuja-analyysissä.
Python-koodi pariplotille
Python 3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.pairplot(df.drop(['Id'], axis = 1), hue='Species', height=2)Lähtö:
Tietojoukon parikaavio
Näemme tästä juonesta monenlaisia suhteita, kuten lajilla Seotsa on pienin terälehtien leveys ja pituus. Sillä on myös pienin verholehti, mutta suurempi verholeveys. Tällaisia tietoja voidaan kerätä kaikista muista lajeista.
Korrelaation käsittely
Pandat dataframe.corr() käytetään etsimään tietokehyksen kaikkien sarakkeiden pareittainen korrelaatio. Kaikki NA-arvot suljetaan automaattisesti pois. Kaikki tietokehyksen ei-numeeriset tietotyyppisarakkeet ohitetaan.
Esimerkki:
Python 3data.corr(method='pearson')Lähtö:
![]()
tietojoukon sarakkeiden välinen korrelaatio
Lämpökartat
Lämpökartta on datan visualisointitekniikka, jota käytetään analysoimaan tietojoukko väreinä kahdessa ulottuvuudessa. Pohjimmiltaan se näyttää korrelaation tietojoukon kaikkien numeeristen muuttujien välillä. Yksinkertaisemmin sanottuna voimme piirtää yllä löydetyn korrelaation lämpökarttojen avulla.
python-koodi lämpökartalle
Python 3# 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()Lähtö:
![]()
Lämpökartta tietojoukon korrelaatiolle
Yllä olevasta kaaviosta voimme nähdä, että -
- Terälehden leveydellä ja pituudella on korkea korrelaatio.
- Terälehden pituudella ja verholehden leveydellä on hyvät korrelaatiot.
- Terälehden leveydellä ja verholehden pituudella on hyvät korrelaatiot.
Outliersin käsittely
Outlier on tietoyksikkö/objekti, joka poikkeaa merkittävästi muista (ns. normaaleista) objekteista. Ne voivat johtua mittaus- tai suoritusvirheistä. Outlier-detektio-analyysiä kutsutaan outlier-louhinnaksi. On monia tapoja havaita poikkeavia arvoja, ja poistoprosessi on sama tietokehys kuin tietokohteen poistaminen pandan tietokehyksestä.
Tarkastellaan iiristietojoukkoa ja piirretään SepalWidthCm-sarakkeen boxplot.
python-koodi Boxplotille
Python 3# 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)Lähtö:
![]()
Boxplot verholeveyssarakkeelle
Yllä olevassa kaaviossa arvot yli 4 ja alle 2 toimivat poikkeavina arvoina.
Poikkeamien poistaminen
Poikkeaman poistamiseksi on noudatettava samaa prosessia, jossa merkintä poistetaan tietojoukosta käyttämällä sen tarkkaa sijaintia tietojoukossa, koska kaikissa yllä olevissa poikkeamien havaitsemismenetelmissä lopputulos on luettelo kaikista niistä tiedoista, jotka täyttävät poikkeaman määritelmän. käytetyn menetelmän mukaan.
Tunnistamme poikkeamat käyttämällä IQR ja sitten poistamme ne. Piirrämme myös laatikkokaavion nähdäksemme, onko poikkeamat poistettu vai ei.
Python 3# 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)) # Alaraja alempi = 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)Lähtö:
![]()
boxplot käyttäen seaborn-kirjastoa
Lisätietoja EDA:sta saat alla olevista opetusohjelmistamme -