Dataanalys med Python
I den här artikeln kommer vi att diskutera hur man gör dataanalys med Python. Vi kommer att diskutera alla typer av dataanalyser, dvs. analysera numerisk data med NumPy, tabelldata med Pandas, datavisualisering Matplotlib och Exploratory dataanalys.
Dataanalys med Python
Dataanalys är tekniken för att samla in, omvandla och organisera data för att göra framtida förutsägelser och informerade datadrivna beslut. Det hjälper också att hitta möjliga lösningar på ett affärsproblem. Det finns sex steg för dataanalys. Dom är:
- Fråga eller specificera datakrav
- Förbered eller samla in data
- Rengör och bearbeta
- Analysera
- Dela med sig
- Agera eller anmäla
Dataanalys med Python
Notera: För att veta mer om dessa steg, se vår NumPy är ett arraybearbetningspaket i Python och tillhandahåller ett högpresterande flerdimensionellt arrayobjekt och verktyg för att arbeta med dessa arrayer. Det är det grundläggande paketet för vetenskaplig beräkning med Python.
Arrayer i NumPy
NumPy Array är en tabell med element (vanligtvis siffror), alla av samma typ, indexerade med en tupel av positiva heltal. I Numpy kallas antalet dimensioner för arrayen rangen för arrayen. En tuppel av heltal som anger storleken på arrayen längs varje dimension kallas formen på arrayen.
Skapar NumPy Array
NumPy-matriser kan skapas på flera sätt, med olika rangordningar. Den kan också skapas med hjälp av olika datatyper som listor, tupler, etc. Typen av den resulterande arrayen härleds från typen av element i sekvenserna. NumPy erbjuder flera funktioner för att skapa arrayer med initialt platshållarinnehåll. Dessa minimerar behovet av växande arrayer, en dyr operation.
Skapa Array med hjälp 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) Produktion:
Tom Matrix med pandor
Skapa Array med hjälp av numpy.zeros(shape, dtype = Ingen, 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) Produktion:
Matrix b : [0 0] Matrix a : [[0 0] [0 0]] Matrix c : [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
Operationer på Numpy Arrays
Aritmetiska operationer
- Tillägg:
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)
Produktion:
[ 7 77 23 130] [ 7 77 23 130] [ 8 79 26 134] [ 7 77 23 130]
- Subtraktion:
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)
Produktion:
[ 3 67 3 70] [ 3 67 3 70]
- Multiplikation:
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)
Produktion:
[ 10 360 130 3000] [ 10 360 130 3000]
- Division:
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)
Produktion:
[ 2.5 14.4 1.3 3.33333333] [ 2.5 14.4 1.3 3.33333333]
För mer information, se vår NumPy – Handledning för aritmetiska operationer
NumPy Array Indexing
Indexering kan göras i NumPy genom att använda en array som ett index. När det gäller segmentet returneras en vy eller ytlig kopia av arrayen men i index arrayen returneras en kopia av den ursprungliga arrayen. Numpy-arrayer kan indexeras med andra arrayer eller någon annan sekvens med undantag för tupler. Det sista elementet indexeras med -1 näst sist med -2 och så vidare.
Python NumPy Array Indexing
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) Produktion:
A sequential array with a negative step: [10 8 6 4 2] Elements at these indices are: [4 8 6]
NumPy Array Slicing
Betrakta syntaxen x[obj] där x är matrisen och obj är indexet. Sliceobjektet är indexet i fallet med grundläggande skivning . Grundläggande skärning sker när obj är:
- ett skivobjekt som är av formen start: stop: step
- ett heltal
- eller en tupel av skivobjekt och heltal
Alla arrayer som genereras av grundläggande slicing är alltid vyn i den ursprungliga 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:]) Produktion:
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 också användas tillsammans med grundläggande skivning. Ellipsis (...) är antalet : objekt som behövs för att göra en urvalstupel av samma längd som dimensionerna för arrayen.
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 ]
Produktion:
[[ 2 5] [ 8 11]]
NumPy Array Broadcasting
Termen sändning hänvisar till hur numpy behandlar arrayer med olika dimensioner under aritmetiska operationer som leder till vissa begränsningar, den mindre arrayen sänds över den större arrayen så att de har kompatibla former.
Låt oss anta att vi har en stor datamängd, varje datum är en lista med parametrar. I Numpy har vi en 2D-array, där varje rad är ett datum och antalet rader är storleken på datamängden. Anta att vi vill tillämpa någon form av skalning på alla dessa data varje parameter får sin egen skalningsfaktor eller säg att varje parameter multipliceras med någon faktor.
Bara för att ha en klar förståelse, låt oss räkna kalorier i livsmedel med hjälp av en nedbrytning av makronäringsämnen. Grovt uttryckt är de kaloririka delarna av maten gjorda av fetter (9 kalorier per gram), protein (4 CPG) och kolhydrater (4 CPG). Så om vi listar några livsmedel (våra data), och för varje livsmedelslista dess makronäringsfördelning (parametrar), kan vi sedan multiplicera varje näringsämne med dess kalorivärde (tillämpa skalning) för att beräkna kalorifördelningen för varje livsmedel.
Med denna transformation kan vi nu beräkna all slags användbar information. Till exempel, vad är det totala antalet kalorier som finns i någon mat eller, givet en uppdelning av min middag, vet hur många kalorier jag fick från protein och så vidare.
Låt oss se ett naivt sätt att producera den här beräkningen 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
Produktion:
array([[ 2.4, 8.7, 31.2], [157.2, 70.8, 292. ], [165.6, 95.1, 191.2], [ 43.2, 33. , 39.2]])
Sändningsregler: Att sända två arrayer tillsammans följer dessa regler:
- Om arrayerna inte har samma rangordning, lägg sedan formen på den lägre rangordningen med 1:or tills båda formerna har samma längd.
- De två arrayerna är kompatibla i en dimension om de har samma storlek i dimensionen eller om en av arrayerna har storlek 1 i den dimensionen.
- Matriserna kan sändas tillsammans om de är kompatibla med alla dimensioner.
- Efter sändning beter sig varje array som om den hade en form som är lika med elementmässigt maximum av former för de två inmatningsmatriserna.
- I alla dimensioner där en matris hade en storlek på 1 och den andra matrisen hade en storlek större än 1, beter sig den första matrisen som om den kopierades längs den dimensionen.
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)
Produktion:
[[ 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]]
Notera: För mer information, se vår Python NumPy Tutorial .
Analysera data med hjälp av pandor
Python Pandas Används för relationell eller märkt data och tillhandahåller olika datastrukturer för att manipulera sådana data och tidsserier. Detta bibliotek är byggt ovanpå NumPy-biblioteket. Denna modul importeras vanligtvis som:
import pandas as pd
Här hänvisas pd till som ett alias till pandorna. Det är dock inte nödvändigt att importera biblioteket med hjälp av aliaset, det hjälper bara att skriva mindre mängd kod varje gång en metod eller egenskap anropas. Pandas tillhandahåller i allmänhet två datastrukturer för att manipulera data, de är:
- Serier
- Dataram
Serier:
Panda-serien är en endimensionell märkt array som kan innehålla data av vilken typ som helst (heltal, sträng, float, pythonobjekt, etc.). Axeletiketterna kallas gemensamt för index. Pandas Series är inget annat än en kolumn i ett excelark. Etiketter behöver inte vara unika utan måste vara en hashbar typ. Objektet stöder både heltals- och etikettbaserad indexering och tillhandahåller en mängd metoder för att utföra operationer som involverar indexet.
Panda-serien
Den kan skapas med funktionen Series() genom att ladda datamängden från den befintliga lagringen som SQL, Database, CSV-filer, Excel-filer, etc., eller från datastrukturer som listor, ordböcker etc.
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)
Produktion:
pnadas-serien
Dataram:
Pandas DataFrame är en tvådimensionell storleksföränderlig, potentiellt heterogen tabelldatastruktur med märkta axlar (rader och kolumner). En dataram är en tvådimensionell datastruktur, d.v.s. data är inriktade i tabellform i rader och kolumner. Pandas DataFrame består av tre huvudkomponenter, data, rader och kolumner.
Pandas dataram
Den kan skapas med metoden Dataframe() och precis som en serie kan den också vara från olika filtyper och datastrukturer.
Python Pandas skapar dataram
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
Produktion:
Skapar dataram från pythonlistan
Skapar dataram från CSV
Vi kan skapa en dataram från CSV:en filer med hjälp av read_csv() fungera.
Python Pandas läser CSV
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # Printing top 5 rows df.head() Produktion:
chef för en dataram
Filtrera DataFrame
Pandas dataframe.filter() funktionen används för att underställa rader eller kolumner i dataramen enligt etiketter i det angivna indexet. Observera att denna rutin inte filtrerar en dataram på dess innehåll. Filtret tillämpas på indexets etiketter.
Python Pandas filterdataram
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # applying filter function df.filter(['Species', 'SepalLengthCm', 'SepalLengthCm']).head() Produktion:
Använder filter på dataset
Sortering av DataFrame
För att sortera dataramen i pandor, funktionen sort_values() är använd. Pandas sort_values() kan sortera dataramen i stigande eller fallande ordning.
Python Pandas sorterar dataram i stigande ordning
Produktion:
Sorterad datauppsättning baserat på ett kolumnvärde
Pandas GroupBy
Grupp av är ett ganska enkelt koncept. Vi kan skapa en gruppering av kategorier och tillämpa en funktion på kategorierna. I riktiga datavetenskapliga projekt kommer du att hantera stora mängder data och prova saker om och om igen, så för effektiviteten använder vi Groupby-konceptet. Groupby hänvisar huvudsakligen till en process som involverar ett eller flera av följande steg:
- Uppdelning: Det är en process där vi delar upp data i grupper genom att tillämpa vissa villkor på datamängder.
- Ansöker: Det är en process där vi tillämpar en funktion för varje grupp oberoende.
- Kombinerande: Det är en process där vi kombinerar olika datamängder efter att ha tillämpat groupby och resultat till en datastruktur.
Följande bild hjälper dig att förstå processen som ingår i Groupby-konceptet.
1. Gruppera de unika värdena från kolumnen Team
Pandas Groupby Method
2. Nu finns det en hink för varje grupp
3. Kasta andra data i hinkarna
4. Använd en funktion på viktkolumnen för varje hink.
Tillämpa funktion på viktkolumnen i varje kolumn
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() Produktion:
pandas gruppby
Använder funktionen på gruppen:
Efter att ha delat upp en data i en grupp, tillämpar vi en funktion på varje grupp för att göra att vi utför några operationer de är:
- Aggregation: Det är en process där vi beräknar en sammanfattande statistik (eller statistik) om varje grupp. Till exempel, Beräkna gruppsummor eller medelvärden
- Omvandling: Det är en process där vi utför några gruppspecifika beräkningar och returnerar en lika-indexerad. Till exempel, fylla NA inom grupper med ett värde som härrör från varje grupp
- Filtrering: Det är en process där vi förkastar vissa grupper, enligt en gruppvis beräkning som utvärderar Sant eller Falskt. Till exempel filtrering av data baserat på gruppsumma eller medelvärde
Panda Aggregation
Aggregation är en process där vi beräknar en sammanfattande statistik om varje grupp. Den aggregerade funktionen returnerar ett enda aggregerat värde för varje grupp. Efter att ha delat upp data i grupper med hjälp av groupby-funktionen kan flera aggregeringsoperationer utföras på den grupperade datan.
Python Pandas Aggregation
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) Produktion:
Användning av summaaggregatfunktion på dataset
Sammanfoga DataFrame
För att sammanfoga dataramen använder vi concat() funktion som hjälper till att sammanfoga dataramen. Den här funktionen gör allt det tunga arbetet med att utföra sammanlänkningsoperationer tillsammans med en axel av Pandas-objekt samtidigt som den utför valfri inställningslogik (förening eller skärning) av indexen (om några) på de andra axlarna.
Python Pandas sammanfoga dataram
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 Produktion:
Sammanfogar DataFrame
När vi behöver kombinera mycket stora DataFrames, fungerar joins som ett kraftfullt sätt att utföra dessa operationer snabbt. Joins kan endast göras på två DataFrames åt gången, betecknade som vänster och höger tabeller. Nyckeln är den gemensamma kolumnen som de två DataFrames kommer att sammanfogas på. Det är en bra praxis att använda nycklar som har unika värden i hela kolumnen för att undvika oavsiktlig dubblering av radvärden. Pandas ger en enda funktion, sammanfoga() , som startpunkt för alla standarddatabaskopplingsoperationer mellan DataFrame-objekt.
Det finns fyra grundläggande sätt att hantera kopplingen (inre, vänster, höger och yttre), beroende på vilka rader som måste behålla sina data.
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 Produktion:
Sammankoppling av två datamängder
Går med i DataFrame
För att gå med i dataramen använder vi .Ansluta sig() funktion den här funktionen används för att kombinera kolumnerna i två potentiellt olika indexerade DataFrames till en enda resultat DataFrame.
Python Pandas går med i 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 Produktion:
Sammanfogar två datamängder
För mer information, se vår Panda slår samman, sammanfogar och sammanfogar handledning
För en komplett guide om pandor, se vår Handledning för pandor .
Visualisering med Matplotlib
Matplotlib är lätt att använda och ett fantastiskt visualiseringsbibliotek i Python. Den är byggd på NumPy-arrayer och designad för att fungera med den bredare SciPy-stacken och består av flera plotter som linje, stapel, scatter, histogram, etc.
Pyplot
Pyplot är en Matplotlib-modul som ger ett MATLAB-liknande gränssnitt. Pyplot tillhandahåller funktioner som interagerar med figuren, dvs skapar en figur, dekorerar tomten med etiketter och skapar ett plottande områ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()
Produktion:
Stapeldiagram
A bartomt eller stapeldiagram är ett diagram som representerar kategorin av data med rektangulära staplar med längder och höjder som är proportionella mot de värden som de representerar. Staplarna kan plottas horisontellt eller vertikalt. Ett stapeldiagram beskriver jämförelserna mellan de diskreta kategorierna. Det kan skapas med metoden bar().
Python Matplotlib stapeldiagram
Här kommer vi endast att använda irisdataset
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() Produktion:
Stapeldiagram med matplotlib-bibliotek
Histogram
A histogram används i grunden för att representera data i form av vissa grupper. Det är en typ av stapeldiagram där X-axeln representerar bin-intervallen medan Y-axeln ger information om frekvens. För att skapa ett histogram är det första steget att skapa en bin med intervallen, sedan fördela hela intervallet av värdena i en serie intervall och räkna värdena som faller inom vart och ett av intervallen. Bins är tydligt identifierade som på varandra följande, icke-överlappande intervall av variabler. De hist() funktionen används för att beräkna och skapa ett 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() Produktion:
Histplot med matplotlib-bibliotek
Scatter Plot
Spridningsdiagram används för att observera förhållandet mellan variabler och använder punkter för att representera förhållandet mellan dem. De sprida ut() metod i matplotlib-biblioteket används för att rita ett spridningsdiagram.
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() Produktion:
Scatterplot med matplotlib-bibliotek
Box Plot
A boxplot ,Korrelation även känd som en ruta och morrhårsplott. Det är en mycket bra visuell representation när det gäller att mäta datafördelningen. Plotta tydligt medianvärdena, extremvärdena och kvartilerna. Att förstå datadistribution är en annan viktig faktor som leder till bättre modellbygge. Om data har extremvärden är boxplot ett rekommenderat sätt att identifiera dem och vidta nödvändiga åtgärder. Rutan och morrhårsdiagrammet visar hur data sprids ut. Fem uppgifter ingår i allmänhet i diagrammet
- Minimum visas längst till vänster i diagrammet, i slutet av vänster 'morrhår'
- Första kvartilen, Q1, är längst till vänster i rutan (vänster morrhår)
- Medianen visas som en linje i mitten av rutan
- Tredje kvartilen, Q3, visas längst till höger i rutan (höger morrhår)
- Maximum är längst till höger i rutan
Representation av boxplot
Kvartilavståndet
Illustrerande boxplott
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() Produktion:
Boxplot med matplotlib-bibliotek
Korrelationsvärmekartor
En 2-D Heatmap är ett datavisualiseringsverktyg som hjälper till att representera fenomenets storlek i form av färger. En korrelationsvärmekarta är en värmekarta som visar en 2D-korrelationsmatris mellan två diskreta dimensioner, med hjälp av färgade celler för att representera data från vanligtvis en monokromatisk skala. Värdena för den första dimensionen visas som rader i tabellen medan den andra dimensionen är en kolumn. Cellens färg är proportionell mot antalet mätningar som matchar det dimensionella värdet. Detta gör korrelationsvärmekartor idealiska för dataanalys eftersom det gör mönster lättlästa och framhäver skillnaderna och variationen i samma data. En korrelationsvärmekarta, som en vanlig värmekarta, assisteras av ett färgfält som gör data lätt läsbara och begripliga.
Notera: Data här måste skickas med metoden corr() för att generera en korrelationsvärmekarta. Dessutom eliminerar corr() självt kolumner som inte kommer att vara till någon nytta när en korrelationsvärmekarta genereras och väljer de som kan användas.
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() Produktion:
Värmekarta med matplotlib-bibliotek
För mer information om datavisualisering, se våra tutorials nedan -
- Notera: Vi kommer att använda Iris Dataset.
Få information om datamängden
Vi kommer att använda parametern shape för att få formen på datasetet.
Form av dataram
Python3df.shapeProduktion:
(150, 6)Vi kan se att dataramen innehåller 6 kolumner och 150 rader.
Notera: Vi kommer att använda Iris Dataset.
Få information om datamängden
Nu, låt oss också kolumnerna och deras datatyper. För detta kommer vi att använda info() metod.
Information om Dataset
Python3df.info()Produktion:
![]()
information om datamängden
Vi kan se att endast en kolumn har kategorisk data och alla andra kolumner är av numerisk typ med icke-Null-poster.
Låt oss få en snabb statistisk sammanfattning av datamängden med hjälp av beskriva() metod. Funktionen describe() tillämpar grundläggande statistiska beräkningar på datamängden som extrema värden, antal datapunkters standardavvikelse, etc. Alla saknade värden eller NaN-värden hoppas automatiskt över. funktion describe() ger en bra bild av distributionen av data.
Beskrivning av dataset
Python3df.describe()Produktion:
![]()
Beskrivning om datasetet
Vi kan se antalet för varje kolumn tillsammans med deras medelvärde, standardavvikelse, minimi- och maximivärden.
Kontrollera saknade värden
Vi kommer att kontrollera om vår data innehåller några saknade värden eller inte. Saknade värden kan uppstå när ingen information ges för en eller flera artiklar eller för en hel enhet. Vi kommer att använda är inget() metod.
python-kod för saknat värde
Python3df.isnull().sum()Produktion:
![]()
Saknade värden i datamängden
Vi kan se att ingen kolumn saknar något värde.
Kontrollerar dubbletter
Låt oss se om vår datauppsättning innehåller några dubbletter eller inte. Pandas drop_duplicates() metod hjälper till att ta bort dubbletter från dataramen.
Pandafunktion för saknade värden
Python3data = df.drop_duplicates(subset ='Species',) dataProduktion:
![]()
Ta bort dubblettvärde i datamängden
Vi kan se att det bara finns tre unika arter. Låt oss se om datasetet är balanserat eller inte, dvs alla arter innehåller lika många rader eller inte. Vi kommer att använda Series.value_counts() fungera. Denna funktion returnerar en serie som innehåller antalet unika värden.
Python-kod för värden i kolumnen
Python3df.value_counts('Species')Produktion:
![]()
värderäkning i datamängden
Vi kan se att alla arter innehåller lika många rader, så vi bör inte ta bort några poster.
Relation mellan variabler
Vi kommer att se sambandet mellan foderbladslängd och foderbladsbredd och även mellan kronbladslängd och kronbladsbredd.
Jämföra foderbladslängd och foderbladsbredd
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()Produktion:
![]()
Scatterplot med matplotlib-bibliotek
Från ovanstående handling kan vi dra slutsatsen att -
- Arten Setosa har mindre foderbladslängder men större foderbladsbredder.
- Versicolor Species ligger i mitten av de andra två arterna vad gäller foderbladslängd och bredd
- Arten Virginica har större foderbladslängder men mindre foderbladsbredder.
Jämför kronbladslängd och kronbladsbredd
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()Produktion:
![]()
sactter plot kronbladslängd
Från ovanstående handling kan vi dra slutsatsen att -
- Arten Setosa har mindre kronbladslängder och -bredder.
- Versicolor Species ligger i mitten av de andra två arterna vad gäller kronbladslängd och bredd
- Arten Virginica har de största kronbladslängderna och -bredderna.
Låt oss plotta alla kolumns relationer med hjälp av ett pardiagram. Den kan användas för multivariat analys.
Python-kod för parplot
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.pairplot(df.drop(['Id'], axis = 1), hue='Species', height=2)Produktion:
Parplot för datamängden
Vi kan se många typer av släktskap från denna tomt som arten Seotsa har den minsta av kronbladens bredd och längd. Den har också den minsta foderbladslängden men större foderbladsbredder. Sådan information kan samlas in om vilken annan art som helst.
Hanteringskorrelation
Pandas dataframe.corr() används för att hitta den parvisa korrelationen för alla kolumner i dataramen. Alla NA-värden exkluderas automatiskt. Alla icke-numeriska datatypkolumner i dataramen ignoreras.
Exempel:
Python3data.corr(method='pearson')Produktion:
![]()
korrelation mellan kolumner i datamängden
Värmekartor
Värmekartan är en datavisualiseringsteknik som används för att analysera datamängden som färger i två dimensioner. I grund och botten visar den en korrelation mellan alla numeriska variabler i datamängden. I enklare termer kan vi plotta den ovan hittade korrelationen med hjälp av värmekartorna.
python-kod för heatmap
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()Produktion:
![]()
Värmekarta för korrelation i datasetet
Från grafen ovan kan vi se att -
- Kronbladsbredd och kronbladslängd har höga korrelationer.
- Kronbladslängd och foderbladsbredd har goda korrelationer.
- Kronbladsbredd och foderbladslängd har goda korrelationer.
Hantering av extremvärden
En Outlier är ett dataobjekt/objekt som avviker avsevärt från resten av de (så kallade normala) objekten. De kan orsakas av mät- eller exekveringsfel. Analysen för detektering av extremvärden benämns outlier mining. Det finns många sätt att upptäcka extremvärden, och borttagningsprocessen är samma dataram som att ta bort ett dataobjekt från pandans dataram.
Låt oss överväga irisdatauppsättningen och låt oss plotta boxplotten för SepalWidthCm-kolumnen.
python-kod för 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)Produktion:
![]()
Boxplot för sepalwidth kolumn
I diagrammet ovan fungerar värdena över 4 och under 2 som extremvärden.
Ta bort extremvärden
För att ta bort extremvärdet måste man följa samma process för att ta bort en post från datamängden med hjälp av dess exakta position i datamängden eftersom i alla ovanstående metoder för att upptäcka extremvärden är slutresultatet listan över alla de dataobjekt som uppfyller avvikerdefinitionen enligt den metod som används.
Vi kommer att upptäcka extremvärden som använder IQR och sedan tar vi bort dem. Vi kommer också att rita boxplotten för att se om extremvärdena är borttagna eller inte.
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 gräns 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)Produktion:
![]()
boxplot med Seaborn-biblioteket
För mer information om EDA, se våra tutorials nedan -