Dataanalyse med Python
I denne artikkelen vil vi diskutere hvordan du gjør dataanalyse med Python. Vi vil diskutere alle slags dataanalyse, det vil si å analysere numeriske data med NumPy, tabelldata med Pandaer, datavisualisering Matplotlib og utforskende dataanalyse.
Dataanalyse med Python
Dataanalyse er teknikken for å samle inn, transformere og organisere data for å ta fremtidige spådommer og informerte datadrevne beslutninger. Det hjelper også å finne mulige løsninger på et forretningsproblem. Det er seks trinn for dataanalyse. De er:
- Spør eller spesifiser datakrav
- Forbered eller samle inn data
- Rengjør og bearbeid
- Analysere
- Dele
- Handle eller rapportere
Dataanalyse med Python
Merk: For å vite mer om disse trinnene, se vår NumPy er en array-behandlingspakke i Python og gir et flerdimensjonalt array-objekt med høy ytelse og verktøy for å jobbe med disse arrayene. Det er den grunnleggende pakken for vitenskapelig databehandling med Python.
Matriser i NumPy
NumPy Array er en tabell med elementer (vanligvis tall), alle av samme type, indeksert med en tuppel av positive heltall. I Numpy kalles antall dimensjoner til matrisen rangeringen til matrisen. En tuppel av heltall som gir størrelsen på matrisen langs hver dimensjon er kjent som formen på matrisen.
Opprette NumPy Array
NumPy-matriser kan opprettes på flere måter, med forskjellige rangeringer. Den kan også lages ved bruk av forskjellige datatyper som lister, tupler, etc. Typen av den resulterende matrisen utledes fra typen elementer i sekvensene. NumPy tilbyr flere funksjoner for å lage matriser med innledende plassholderinnhold. Disse minimerer nødvendigheten av voksende arrays, en kostbar operasjon.
Opprett Array ved hjelp av 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) Produksjon:
Tøm Matrix med pandaer
Opprett Array ved hjelp av numpy.zeros(form, dtype = Ingen, rekkefølge = '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) Produksjon:
Matrix b : [0 0] Matrix a : [[0 0] [0 0]] Matrix c : [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
Operasjoner på Numpy Arrays
Aritmetiske operasjoner
- Addisjon:
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)
Produksjon:
[ 7 77 23 130] [ 7 77 23 130] [ 8 79 26 134] [ 7 77 23 130]
- Subtraksjon:
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)
Produksjon:
[ 3 67 3 70] [ 3 67 3 70]
- Multiplikasjon:
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)
Produksjon:
[ 10 360 130 3000] [ 10 360 130 3000]
- Inndeling:
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)
Produksjon:
[ 2.5 14.4 1.3 3.33333333] [ 2.5 14.4 1.3 3.33333333]
For mer informasjon, se vår NumPy – Opplæring i aritmetiske operasjoner
NumPy Array-indeksering
Indeksering kan gjøres i NumPy ved å bruke en matrise som en indeks. Når det gjelder snittet, returneres en visning eller en grunn kopi av matrisen, men i indeksmatrisen returneres en kopi av den originale matrisen. Numpy-arrayer kan indekseres med andre arrays eller en hvilken som helst annen sekvens med unntak av tuples. Det siste elementet indekseres med -1 nest sist med -2 og så videre.
Python NumPy Array-indeksering
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) Produksjon:
A sequential array with a negative step: [10 8 6 4 2] Elements at these indices are: [4 8 6]
NumPy Array Slicing
Tenk på syntaksen x[obj] der x er matrisen og obj er indeksen. Skiveobjektet er indeksen i tilfelle av grunnleggende skjæring . Grunnleggende skjæring skjer når obj er:
- et skiveobjekt som er av formen start: stop: step
- et heltall
- eller en tuppel av skiveobjekter og heltall
Alle arrays generert av grunnleggende slicing er alltid visningen i den originale arrayen.
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:]) Produksjon:
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]
Ellipsis kan også brukes sammen med grunnleggende skjæring. Ellipsis (...) er antallet : objekter som trengs for å lage en seleksjonstuppel av samme lengde som dimensjonene til matrisen.
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 ]
Produksjon:
[[ 2 5] [ 8 11]]
NumPy Array Broadcasting
Begrepet kringkasting refererer til hvordan numpy behandler matriser med forskjellige dimensjoner under aritmetiske operasjoner som fører til visse begrensninger, den mindre matrisen kringkastes over den større matrisen slik at de har kompatible former.
La oss anta at vi har et stort datasett, hvert datum er en liste over parametere. I Numpy har vi en 2D-matrise, der hver rad er et datum og antall rader er størrelsen på datasettet. Anta at vi ønsker å bruke en slags skalering på alle disse dataene hver parameter får sin egen skaleringsfaktor eller si at hver parameter multipliseres med en eller annen faktor.
Bare for å ha en klar forståelse, la oss telle kalorier i matvarer ved å bruke en nedbrytning av makronæringsstoffer. Grovt sagt er de kaloririke delene av maten laget av fett (9 kalorier per gram), protein (4 CPG) og karbohydrater (4 CPG). Så hvis vi lister opp noen matvarer (dataene våre), og for hver matliste dens makronæringsstoffnedbrytning (parametre), kan vi multiplisere hvert næringsstoff med kaloriverdien (bruk skalering) for å beregne kalorisammensetningen for hver matvare.
Med denne transformasjonen kan vi nå beregne all slags nyttig informasjon. For eksempel, hva er det totale antallet kalorier som finnes i mat eller, gitt en oversikt over middagen min, vet hvor mange kalorier jeg fikk fra protein og så videre.
La oss se en naiv måte å produsere denne beregningen på med Numpy:
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
Produksjon:
array([[ 2.4, 8.7, 31.2], [157.2, 70.8, 292. ], [165.6, 95.1, 191.2], [ 43.2, 33. , 39.2]])
Kringkastingsregler: Å kringkaste to arrays sammen følger disse reglene:
- Hvis matrisene ikke har samme rangering, kan du sette formen til den nedre rangerte matrisen med 1-er til begge figurene har samme lengde.
- De to matrisene er kompatible i en dimensjon hvis de har samme størrelse i dimensjonen eller hvis en av matrisene har størrelse 1 i den dimensjonen.
- Arrayene kan kringkastes sammen hvis de er kompatible med alle dimensjoner.
- Etter kringkasting oppfører hver matrise seg som om den hadde en form som er lik elementmessig maksimum av former for de to inngangsmatrisene.
- I enhver dimensjon der en matrise hadde en størrelse på 1 og den andre matrisen hadde en størrelse større enn 1, oppfører den første matrisen seg som om den ble kopiert langs den dimensjonen.
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)
Produksjon:
[[ 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]]
Merk: For mer informasjon, se vår Python NumPy opplæring .
Analysere data ved hjelp av pandaer
Python Pandas Brukes for relasjonelle eller merkede data og gir ulike datastrukturer for å manipulere slike data og tidsserier. Dette biblioteket er bygget på toppen av NumPy-biblioteket. Denne modulen importeres vanligvis som:
import pandas as pd
Her omtales pd som et alias til pandaene. Det er imidlertid ikke nødvendig å importere biblioteket ved å bruke aliaset, det hjelper bare å skrive mindre mengdekode hver gang en metode eller egenskap kalles. Pandaer gir vanligvis to datastrukturer for å manipulere data, de er:
- Serie
- Dataramme
Serie:
Panda-serien er en endimensjonal merket array som er i stand til å inneholde data av enhver type (heltall, streng, float, python-objekter, etc.). Akseetikettene kalles samlet indekser. Pandas-serien er ikke annet enn en spalte i et excel-ark. Etiketter trenger ikke være unike, men må være en hashbar type. Objektet støtter både heltalls- og etikettbasert indeksering og gir en rekke metoder for å utføre operasjoner som involverer indeksen.
Panda-serien
Den kan opprettes ved å bruke Series()-funksjonen ved å laste datasettet fra den eksisterende lagringen som SQL, Database, CSV-filer, Excel-filer, etc., eller fra datastrukturer som lister, ordbøker osv.
Python Pandas Creating Series
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)
Produksjon:
Pnadas-serien
Dataramme:
Pandas DataFrame er en todimensjonal størrelse-muterbar, potensielt heterogen tabelldatastruktur med merkede akser (rader og kolonner). En dataramme er en todimensjonal datastruktur, dvs. data er justert i tabellform i rader og kolonner. Pandas DataFrame består av tre hovedkomponenter, data, rader og kolonner.
Pandas dataramme
Den kan lages ved hjelp av Dataframe()-metoden, og akkurat som en serie kan den også være fra forskjellige filtyper og datastrukturer.
Python Pandas skaper dataramme
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
Produksjon:
Opprette dataramme fra python-liste
Opprette dataramme fra CSV
Vi kan opprette en dataramme fra CSV-en filer ved hjelp av read_csv() funksjon.
Python Pandas leser CSV
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # Printing top 5 rows df.head() Produksjon:
leder av en dataramme
Filtrering av DataFrame
Pandaer dataframe.filter() funksjonen brukes til å undersette rader eller kolonner av dataramme i henhold til etiketter i den angitte indeksen. Merk at denne rutinen ikke filtrerer en dataramme på innholdet. Filteret brukes på etikettene til indeksen.
Python Pandas filterdataramme
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # applying filter function df.filter(['Species', 'SepalLengthCm', 'SepalLengthCm']).head() Produksjon:
Bruker filter på datasettet
Sortering av DataFrame
For å sortere datarammen i pandaer, funksjonen sort_verdier() benyttes. Pandas sort_values() kan sortere datarammen i stigende eller synkende rekkefølge.
Python Pandas sortering av dataramme i stigende rekkefølge
Produksjon:
Sortert datasett basert på en kolonneverdi
Pandas GroupBy
Gruppe av er et ganske enkelt konsept. Vi kan lage en gruppering av kategorier og bruke en funksjon på kategoriene. I ekte datavitenskapelige prosjekter vil du håndtere store mengder data og prøve ting om og om igjen, så for effektiviteten bruker vi Groupby-konseptet. Groupby refererer hovedsakelig til en prosess som involverer ett eller flere av følgende trinn:
- Splitting: Det er en prosess der vi deler data inn i grupper ved å bruke noen betingelser på datasett.
- Søker: Det er en prosess der vi bruker en funksjon på hver gruppe uavhengig.
- Kombinere: Det er en prosess der vi kombinerer ulike datasett etter å ha brukt groupby og resultater til en datastruktur.
Følgende bilde vil hjelpe deg med å forstå prosessen involverer i Groupby-konseptet.
1. Grupper de unike verdiene fra Team-kolonnen
Pandas Groupby-metoden
2. Nå er det en bøtte for hver gruppe
3. Kast de andre dataene i bøttene
4. Bruk en funksjon på vektkolonnen til hver bøtte.
Bruke funksjon på vektkolonnen i hver kolonne
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() Produksjon:
pandaer gruppeby
Bruker funksjon på gruppe:
Etter å ha delt en data i en gruppe, bruker vi en funksjon på hver gruppe for å gjøre at vi utfører noen operasjoner de er:
- Aggregasjon: Det er en prosess der vi beregner en oppsummerende statistikk (eller statistikk) om hver gruppe. For eksempel, Beregn gruppesummer eller middel
- Transformasjon: Det er en prosess der vi utfører noen gruppespesifikke beregninger og returnerer en like-indeksert. For eksempel fylle NA-er innenfor grupper med en verdi avledet fra hver gruppe
- Filtrering: Det er en prosess der vi forkaster noen grupper, i henhold til en gruppevis beregning som evaluerer Sant eller Usant. For eksempel filtrering av data basert på gruppesum eller gjennomsnitt
Panda Aggregasjon
Aggregasjon er en prosess der vi beregner en oppsummerende statistikk om hver gruppe. Den aggregerte funksjonen returnerer én enkelt aggregert verdi for hver gruppe. Etter å ha delt data i grupper ved å bruke groupby-funksjonen, kan flere aggregeringsoperasjoner utføres på de grupperte dataene.
Python Pandas aggregasjon
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) Produksjon:
Bruk av sum aggregert funksjon på datasett
Sammenkoble DataFrame
For å samle datarammen bruker vi concat() funksjon som hjelper til med å sette sammen datarammen. Denne funksjonen utfører alt det tunge løftet med å utføre sammenkoblingsoperasjoner sammen med en akse av Pandas-objekter mens den utfører valgfri innstillingslogikk (forening eller skjæring) av indeksene (hvis noen) på de andre aksene.
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 Produksjon:
Slår sammen DataFrame
Når vi trenger å kombinere veldig store DataFrames, fungerer sammenføyninger som en kraftig måte å utføre disse operasjonene raskt på. Sammenføyninger kan bare gjøres på to DataFrames om gangen, betegnet som venstre og høyre tabell. Nøkkelen er den vanlige kolonnen som de to DataFrames skal kobles sammen på. Det er en god praksis å bruke nøkler som har unike verdier i hele kolonnen for å unngå utilsiktet duplisering av radverdier. Pandaer gir en enkelt funksjon, slå sammen() , som inngangspunkt for alle standard databasesammenføyningsoperasjoner mellom DataFrame-objekter.
Det er fire grunnleggende måter å håndtere sammenføyningen på (indre, venstre, høyre og ytre), avhengig av hvilke rader som må beholde dataene sine.
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 Produksjon:
Sammenslåing av to datasett
Bli med i DataFrame
For å bli med i datarammen bruker vi .bli med() funksjon denne funksjonen brukes til å kombinere kolonnene til to potensielt forskjellig indekserte DataFrames til en enkelt resultat 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 Produksjon:
Sammenføyning av to datasett
For mer informasjon, se vår Pandaer slår sammen, sammenføyer og sammenføyer opplæringen
For en fullstendig guide om pandaer, se vår Panda-opplæring .
Visualisering med Matplotlib
Matplotlib er enkel å bruke og et fantastisk visualiseringsbibliotek i Python. Den er bygget på NumPy-matriser og designet for å fungere med den bredere SciPy-stakken og består av flere plott som linje, bar, spredning, histogram, etc.
Pyplot
Pyplot er en Matplotlib-modul som gir et MATLAB-lignende grensesnitt. Pyplot gir funksjoner som samhandler med figuren, dvs. lager en figur, dekorerer plottet med etiketter og lager et plotteområde i en figur.
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()
Produksjon:
Stolpediagram
EN bartomt eller stolpediagram er en graf som representerer kategorien data med rektangulære stolper med lengder og høyder som er proporsjonale med verdiene de representerer. Barplottene kan plottes horisontalt eller vertikalt. Et søylediagram beskriver sammenligningene mellom de diskrete kategoriene. Den kan opprettes ved å bruke bar()-metoden.
Python Matplotlib stolpediagram
Her vil vi kun bruke iris-datasettet
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() Produksjon:
Stolpediagram med matplotlib-bibliotek
Histogrammer
EN histogram brukes i utgangspunktet til å representere data i form av noen grupper. Det er en type søyleplott hvor X-aksen representerer bingeområdene mens Y-aksen gir informasjon om frekvens. For å lage et histogram er det første trinnet å lage en beholder med områdene, deretter fordele hele området av verdiene i en serie med intervaller, og telle verdiene som faller inn i hvert av intervallene. Binger er tydelig identifisert som påfølgende, ikke-overlappende intervaller av variabler. De hist() funksjonen brukes til å beregne og lage et histogram av x.
Python Matplotlib Histogram
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() Produksjon:
Histplot ved hjelp av matplotlib-bibliotek
Spredningsplott
Spredningsplott brukes til å observere forhold mellom variabler og bruker prikker for å representere forholdet mellom dem. De spre() metoden i matplotlib-biblioteket brukes til å tegne et spredningsplott.
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() Produksjon:
Spredningsplott ved hjelp av matplotlib-biblioteket
Box Plot
EN boksplott ,Korrelasjon også kjent som et boks- og værhårsplot. Det er en veldig god visuell representasjon når det gjelder å måle datafordelingen. Plott tydelig medianverdiene, uteliggere og kvartilene. Å forstå datadistribusjon er en annen viktig faktor som fører til bedre modellbygging. Hvis data har uteliggere, er boksplott en anbefalt måte å identifisere dem og iverksette nødvendige handlinger. Boks- og værhårsdiagrammet viser hvordan data er spredt. Fem opplysninger er vanligvis inkludert i diagrammet
- Minimum vises helt til venstre i diagrammet, på slutten av venstre 'whisker'
- Første kvartil, Q1, er lengst til venstre i boksen (venstre værhår)
- Medianen vises som en linje i midten av boksen
- Tredje kvartil, Q3, vist helt til høyre i boksen (høyre værhår)
- Maksimum er helt til høyre i boksen
Representasjon av kassetomt
Interkvartilområde
Illustrerende boksplott
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() Produksjon:
Boxplot ved hjelp av matplotlib-biblioteket
Korrelasjon varmekart
Et 2-D Heatmap er et datavisualiseringsverktøy som hjelper til med å representere fenomenets størrelse i form av farger. Et korrelasjonsvarmekart er et varmekart som viser en 2D-korrelasjonsmatrise mellom to diskrete dimensjoner, ved å bruke fargede celler for å representere data fra vanligvis en monokromatisk skala. Verdiene til den første dimensjonen vises som radene i tabellen, mens den andre dimensjonen er en kolonne. Fargen på cellen er proporsjonal med antall målinger som samsvarer med dimensjonsverdien. Dette gjør korrelasjonsvarmekart ideelle for dataanalyse siden det gjør mønstre lett lesbare og fremhever forskjellene og variasjonen i de samme dataene. Et korrelasjonsvarmekart, som et vanlig varmekart, assisteres av en fargelinje som gjør data lett lesbare og forståelige.
Merk: Dataene her må sendes med corr()-metoden for å generere et korrelasjonsvarmekart. Corr() eliminerer også kolonner som ikke vil være til nytte mens de genererer et korrelasjonsvarmekart og velger de som kan brukes.
Python Matplotlib Correlation Heatmap
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() Produksjon:
Varmekart ved hjelp av matplotlib-biblioteket
For mer informasjon om datavisualisering, se veiledningene nedenfor –
- Merk: Vi kommer til å bruke Iris Dataset.
Få informasjon om datasettet
Vi vil bruke shape-parameteren for å få formen på datasettet.
Form av dataramme
Python3df.shapeProduksjon:
(150, 6)Vi kan se at datarammen inneholder 6 kolonner og 150 rader.
Merk: Vi kommer til å bruke Iris Dataset.
Få informasjon om datasettet
La oss nå også kolonnene og deres datatyper. Til dette vil vi bruke info() metode.
Informasjon om datasett
Python3df.info()Produksjon:
![]()
informasjon om datasettet
Vi kan se at bare én kolonne har kategoriske data og alle de andre kolonnene er av numerisk type med ikke-Null-oppføringer.
La oss få et raskt statistisk sammendrag av datasettet ved å bruke beskrive() metode. Describe()-funksjonen bruker grunnleggende statistiske beregninger på datasettet som ekstreme verdier, antall datapunkter standardavvik osv. Enhver manglende verdi eller NaN-verdi hoppes automatisk over. funksjonen describe() gir et godt bilde av distribusjonen av data.
Beskrivelse av datasett
Python3df.describe()Produksjon:
![]()
Beskrivelse av datasettet
Vi kan se tellingen av hver kolonne sammen med deres middelverdi, standardavvik, minimums- og maksimumsverdier.
Sjekker manglende verdier
Vi vil sjekke om dataene våre inneholder manglende verdier eller ikke. Manglende verdier kan oppstå når det ikke er gitt informasjon for ett eller flere elementer eller for en hel enhet. Vi vil bruke isnull() metode.
python-kode for manglende verdi
Python3df.isnull().sum()Produksjon:
![]()
Manglende verdier i datasettet
Vi kan se at ingen kolonne har noen manglende verdi.
Sjekker duplikater
La oss se om datasettet vårt inneholder noen duplikater eller ikke. Pandaer drop_duplicates() metoden hjelper til med å fjerne duplikater fra datarammen.
Panda-funksjon for manglende verdier
Python3data = df.drop_duplicates(subset ='Species',) dataProduksjon:
![]()
Slipper duplikatverdi i datasettet
Vi kan se at det bare er tre unike arter. La oss se om datasettet er balansert eller ikke, det vil si at alle artene inneholder like mange rader eller ikke. Vi vil bruke Series.value_counts() funksjon. Denne funksjonen returnerer en serie som inneholder antall unike verdier.
Python-kode for verditellinger i kolonnen
Python3df.value_counts('Species')Produksjon:
![]()
verditelling i datasettet
Vi kan se at alle artene inneholder like mange rader, så vi bør ikke slette noen oppføringer.
Sammenheng mellom variabler
Vi vil se sammenhengen mellom begerbladlengden og begerbladets bredde og også mellom kronbladlengden og kronbladsbredden.
Sammenligning av begerbladlengde og begerbladsbredde
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()Produksjon:
![]()
Spredningsplott ved hjelp av matplotlib-biblioteket
Fra plottet ovenfor kan vi slutte at -
- Arten Setosa har mindre begerbladlengder, men større begerbladsbredder.
- Versicolor Species ligger i midten av de to andre artene når det gjelder begerbladlengde og -bredde
- Arten Virginica har større begerbladlengder, men mindre begerbladsbredder.
Sammenligning av kronbladlengde og kronbladbredde
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()Produksjon:
![]()
sactter plot kronbladslengde
Fra plottet ovenfor kan vi slutte at -
- Arten Setosa har mindre kronbladlengder og -bredder.
- Versicolor Species ligger i midten av de to andre artene når det gjelder kronbladlengde og -bredde
- Arten Virginica har de største kronbladlengdene og -breddene.
La oss plotte alle kolonnens relasjoner ved å bruke et parplott. Den kan brukes til multivariat analyse.
Python-kode for parplot
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.pairplot(df.drop(['Id'], axis = 1), hue='Species', height=2)Produksjon:
Parplott for datasettet
Vi kan se mange typer slektskap fra denne tomten, slik som arten Seotsa har den minste av kronbladbredder og -lengder. Den har også den minste begerbladlengden, men større begerbladsbredder. Slik informasjon kan samles inn om alle andre arter.
Håndteringskorrelasjon
Pandaer dataframe.corr() brukes til å finne den parvise korrelasjonen til alle kolonnene i datarammen. Eventuelle NA-verdier ekskluderes automatisk. Alle ikke-numeriske datatypekolonner i datarammen ignoreres.
Eksempel:
Python3data.corr(method='pearson')Produksjon:
![]()
korrelasjon mellom kolonner i datasettet
Varmekart
Varmekartet er en datavisualiseringsteknikk som brukes til å analysere datasettet som farger i to dimensjoner. I utgangspunktet viser den en korrelasjon mellom alle numeriske variabler i datasettet. I enklere termer kan vi plotte den ovenfor funnet korrelasjonen ved å bruke varmekartene.
python-kode for varmekart
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()Produksjon:
![]()
Varmekart for korrelasjon i datasettet
Fra grafen ovenfor kan vi se at -
- Kronbladbredde og kronbladlengde har høye korrelasjoner.
- Kronbladlengde og begerbladbredde har gode korrelasjoner.
- Kronbladbredde og begerbladlengde har gode korrelasjoner.
Håndtering av uteliggere
En Outlier er et dataelement/objekt som avviker betydelig fra resten av (såkalt normal)objektene. De kan være forårsaket av måle- eller utførelsesfeil. Analysen for avviksdeteksjon omtales som yttergruvedrift. Det er mange måter å oppdage uteliggere, og fjerningsprosessen er datarammen på samme måte som å fjerne et dataelement fra pandaens dataramme.
La oss vurdere iris-datasettet og la oss plotte boksplotten for SepalWidthCm-kolonnen.
python-kode for 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)Produksjon:
![]()
Boksplott for sepalwidth kolonne
I grafen ovenfor fungerer verdiene over 4 og under 2 som uteliggere.
Fjerne uteliggere
For å fjerne uteliggeren, må man følge den samme prosessen med å fjerne en oppføring fra datasettet ved å bruke dens nøyaktige posisjon i datasettet, fordi i alle metodene ovenfor for å oppdage uteliggere er sluttresultatet listen over alle dataelementene som tilfredsstiller uteliggerdefinisjonen. i henhold til metoden som er brukt.
Vi vil oppdage uteliggere ved hjelp av IQR og så fjerner vi dem. Vi vil også tegne boxplotten for å se om ytterpunktene er fjernet eller ikke.
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)) # Nedre grense nedre = 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)Produksjon:
![]()
boxplot ved hjelp av seaborn-biblioteket
For mer informasjon om EDA, se veiledningene nedenfor –