Analýza údajov pomocou Pythonu
V tomto článku budeme diskutovať o tom, ako vykonať analýzu údajov pomocou Pythonu. Budeme diskutovať o všetkých druhoch analýzy údajov, t. j. analýze numerických údajov pomocou NumPy, tabuľkových údajov s Pandas, vizualizácii údajov Matplotlib a prieskumnej analýze údajov.
Analýza údajov pomocou Pythonu
Analýza dát je technika zhromažďovania, transformácie a organizovania údajov s cieľom robiť budúce predpovede a informované rozhodnutia založené na údajoch. Pomáha tiež nájsť možné riešenia obchodného problému. Analýza údajov má šesť krokov. Oni sú:
- Spýtajte sa alebo špecifikujte požiadavky na údaje
- Pripravte alebo zbierajte údaje
- Vyčistite a spracujte
- Analyzovať
- zdieľam
- Konať alebo nahlásiť
Analýza údajov pomocou Pythonu
Poznámka: Ak sa chcete dozvedieť viac o týchto krokoch, pozrite si naše NumPy je balík na spracovanie poľa v Pythone a poskytuje vysokovýkonný viacrozmerný objekt poľa a nástroje na prácu s týmito poľami. Je to základný balík pre vedecké výpočty s Pythonom.
Polia v NumPy
NumPy Array je tabuľka prvkov (zvyčajne čísel), všetky rovnakého typu, indexované n-ticou kladných celých čísel. V Numpy sa počet rozmerov poľa nazýva hodnosť poľa. N-tica celých čísel, ktoré udávajú veľkosť poľa pozdĺž každého rozmeru, sa nazýva tvar poľa.
Vytvára sa pole NumPy
NumPy polia môžu byť vytvorené viacerými spôsobmi, s rôznou úrovňou. Môže byť tiež vytvorený s použitím rôznych dátových typov, ako sú zoznamy, n-tice atď. Typ výsledného poľa je odvodený od typu prvkov v sekvenciách. NumPy ponúka niekoľko funkcií na vytváranie polí s počiatočným zástupným obsahom. Tieto minimalizujú potrebu rastúcich polí, čo je nákladná operácia.
Vytvorte pole pomocou numpy.empty(tvar, 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) Výkon:
Vyprázdnite Matrix pomocou pandy
Vytvorte pole pomocou numpy.zeros(shape, dtype = None, order = ‘C’)
Python3import numpy as np b = np.zeros(2, dtype = int) print('Matrix b :
', b) a = np.zeros([2, 2], dtype = int) print('
Matrix a :
', a) c = np.zeros([3, 3]) print('
Matrix c :
', c) Výkon:
Matrix b : [0 0] Matrix a : [[0 0] [0 0]] Matrix c : [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
Operácie na Numpy Arrays
Aritmetické operácie
- Doplnenie:
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)
Výkon:
[ 7 77 23 130] [ 7 77 23 130] [ 8 79 26 134] [ 7 77 23 130]
- Odčítanie:
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)
Výkon:
[ 3 67 3 70] [ 3 67 3 70]
- Násobenie:
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)
Výkon:
[ 10 360 130 3000] [ 10 360 130 3000]
- divízia:
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)
Výkon:
[ 2.5 14.4 1.3 3.33333333] [ 2.5 14.4 1.3 3.33333333]
Viac informácií nájdete v našom NumPy – Návod na aritmetické operácie
Indexovanie NumPy Array
Indexovanie možno vykonať v NumPy pomocou poľa ako indexu. V prípade rezu sa vráti pohľad alebo plytká kópia poľa, ale v poli indexov sa vráti kópia pôvodného poľa. Numpy polia môžu byť indexované s inými poliami alebo akoukoľvek inou sekvenciou s výnimkou n-tic. Posledný prvok je indexovaný o -1 sekundu, posledný o -2 atď.
Indexovanie poľa Python NumPy
Python3# Python program to demonstrate # the use of index arrays. import numpy as np # Create a sequence of integers from # 10 to 1 with a step of -2 a = np.arange(10, 1, -2) print('
A sequential array with a negative step:
',a) # Indexes are specified inside the np.array method. newarr = a[np.array([3, 1, 2 ])] print('
Elements at these indices are:
',newarr) Výkon:
A sequential array with a negative step: [10 8 6 4 2] Elements at these indices are: [4 8 6]
NumPy Array Slicing
Zvážte syntax x[obj], kde x je pole a obj je index. Objekt rezu je v prípade indexu základné krájanie . Základné krájanie nastáva, keď je obj:
- objekt výrezu, ktorý má tvar začiatok: zastavenie: krok
- celé číslo
- alebo n-tica slice objektov a celých čísel
Všetky polia vygenerované základným krájaním sú vždy zobrazením v pôvodnom poli.
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:]) Výkon:
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]
Elipsu možno použiť aj spolu so základným krájaním. Elipsa (…) je počet : objektov potrebných na vytvorenie výberovej n-tice rovnakej dĺžky, ako sú rozmery poľa.
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 ]
Výkon:
[[ 2 5] [ 8 11]]
NumPy Array vysielanie
Termín vysielanie sa týka toho, ako numpy zaobchádza s poľami s rôznymi rozmermi počas aritmetických operácií, ktoré vedú k určitým obmedzeniam, menšie pole sa vysiela cez väčšie pole, takže majú kompatibilné tvary.
Predpokladajme, že máme veľký súbor údajov, každý údaj je zoznam parametrov. V Numpy máme 2-D pole, kde každý riadok je údaj a počet riadkov je veľkosť súboru údajov. Predpokladajme, že chceme na všetky tieto údaje použiť nejaký druh škálovania, každý parameter dostane svoj vlastný škálovací faktor alebo povedzme, že každý parameter je vynásobený nejakým faktorom.
Aby sme tomu rozumeli, počítajme kalórie v potravinách pomocou rozdelenia makroživín. Zhruba povedané, kalorické časti jedla sú vyrobené z tukov (9 kalórií na gram), bielkovín (4 CPG) a sacharidov (4 CPG). Takže ak uvedieme niektoré potraviny (naše údaje) a pre každú potravinu uvedieme jej makroživiny (parametre), potom môžeme vynásobiť každú živinu jej kalorickou hodnotou (aplikovať škálovanie), aby sme vypočítali kalorické rozdelenie každej potraviny.
S touto transformáciou teraz môžeme vypočítať všetky druhy užitočných informácií. Napríklad, aký je celkový počet kalórií prítomných v niektorom jedle alebo, vzhľadom na rozpis mojej večere, vedieť, koľko kalórií som získal z bielkovín a podobne.
Pozrime sa na naivný spôsob vytvárania tohto výpočtu pomocou 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
Výkon:
array([[ 2.4, 8.7, 31.2], [157.2, 70.8, 292. ], [165.6, 95.1, 191.2], [ 43.2, 33. , 39.2]])
Pravidlá vysielania: Spoločné vysielanie dvoch polí sa riadi týmito pravidlami:
- Ak polia nemajú rovnakú hodnotu, pridajte pred tvar poľa nižšej kategórie 1 s, kým oba tvary nebudú mať rovnakú dĺžku.
- Tieto dve polia sú kompatibilné v dimenzii, ak majú rovnakú veľkosť v dimenzii alebo ak jedno z polí má v danej dimenzii veľkosť 1.
- Polia môžu byť vysielané spoločne, ak sú kompatibilné so všetkými rozmermi.
- Po odoslaní sa každé pole správa tak, ako keby malo tvar rovnajúci sa elementovému maximu tvarov dvoch vstupných polí.
- V akejkoľvek dimenzii, kde jedno pole malo veľkosť 1 a druhé pole malo veľkosť väčšiu ako 1, sa prvé pole správa tak, ako keby bolo skopírované pozdĺž tejto dimenzie.
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)
Výkon:
[[ 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]]
Poznámka: Viac informácií nájdete v našom Výukový program Python NumPy .
Analýza údajov pomocou Pandas
Python Pandas Používa sa pre relačné alebo označené údaje a poskytuje rôzne dátové štruktúry na manipuláciu s takýmito údajmi a časovými radmi. Táto knižnica je postavená nad knižnicou NumPy. Tento modul sa vo všeobecnosti importuje ako:
import pandas as pd
Tu sa pd označuje ako alias Pandy. Nie je však potrebné importovať knižnicu pomocou aliasu, len pomáha pri písaní menšieho množstva kódu pri každom volaní metódy alebo vlastnosti. Pandy vo všeobecnosti poskytujú dve dátové štruktúry na manipuláciu s údajmi, sú to:
- séria
- Dataframe
Séria:
Séria Pandy je jednorozmerné označené pole schopné uchovávať dáta akéhokoľvek typu (celé číslo, reťazec, float, python objekty atď.). Označenia osí sa súhrnne nazývajú indexy. Séria Pandas nie je nič iné ako stĺpec v hárku programu Excel. Štítky nemusia byť jedinečné, ale musia byť hašovateľného typu. Objekt podporuje celočíselné aj indexovanie založené na návestiach a poskytuje množstvo metód na vykonávanie operácií zahŕňajúcich index.
Séria Pandy
Dá sa vytvoriť pomocou funkcie Series() načítaním množiny údajov z existujúceho úložiska, ako je SQL, databáza, súbory CSV, súbory Excel atď., alebo z údajových štruktúr, ako sú zoznamy, slovníky atď.
Séria vytvárania Python Pandas
Python3import pandas as pd import numpy as np # Creating empty series ser = pd.Series() print(ser) # simple array data = np.array(['g', 'e', 'e', 'k', 's']) ser = pd.Series(data) print(ser)
Výkon:
séria pnadas
Dátový rámec:
DataFrame Pandas je dvojrozmerná, veľkosťou meniteľná, potenciálne heterogénna tabuľková dátová štruktúra s označenými osami (riadky a stĺpce). Dátový rámec je dvojrozmerná dátová štruktúra, t.j. dáta sú zoradené tabuľkovým spôsobom do riadkov a stĺpcov. Pandas DataFrame pozostáva z troch hlavných komponentov, údajov, riadkov a stĺpcov.
Dátový rámec Pandas
Môže byť vytvorený pomocou metódy Dataframe() a rovnako ako séria môže byť aj z rôznych typov súborov a dátových štruktúr.
Python Pandas vytvára dátový rámec
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
Výkon:
Vytvorenie dátového rámca zo zoznamu python
Vytvorenie dátového rámca z CSV
Môžeme vytvorte dátový rámec z CSV súbory pomocou read_csv() funkciu.
Python Pandy čítajú CSV
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # Printing top 5 rows df.head() Výkon:
hlava dátového rámca
Filtrovanie dátového rámca
pandy dataframe.filter() funkcia sa používa na podnastavenie riadkov alebo stĺpcov dátového rámca podľa štítkov v zadanom indexe. Všimnite si, že táto rutina nefiltruje dátový rámec na svojom obsahu. Filter sa použije na štítky indexu.
Dátový rámec filtra Python Pandas
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # applying filter function df.filter(['Species', 'SepalLengthCm', 'SepalLengthCm']).head() Výkon:
Aplikovanie filtra na množinu údajov
Triedenie DataFrame
Aby bolo možné zoradiť dátový rámec v pandách, funkcia sort_values() sa používa. Pandas sort_values() dokáže zoradiť dátový rámec vo vzostupnom alebo zostupnom poradí.
Python Pandas zoraďuje dátový rámec vo vzostupnom poradí
Výkon:
Zoradená množina údajov na základe hodnoty stĺpca
Pandas GroupBy
Groupby je celkom jednoduchý koncept. Môžeme vytvoriť zoskupenie kategórií a aplikovať na kategórie funkciu. V skutočných projektoch vedy o údajoch sa budete zaoberať veľkým množstvom údajov a skúšať veci znova a znova, takže pre efektivitu používame koncept Groupby. Groupby sa týka hlavne procesu zahŕňajúceho jeden alebo viacero z nasledujúcich krokov, ktorými sú:
- Rozdelenie: Je to proces, v ktorom rozdeľujeme údaje do skupín použitím určitých podmienok na súbory údajov.
- Uplatňuje sa: Je to proces, v ktorom aplikujeme funkciu na každú skupinu nezávisle.
- Kombinácia: Je to proces, v ktorom kombinujeme rôzne dátové množiny po aplikovaní groupby a výsledkov do dátovej štruktúry.
Nasledujúci obrázok vám pomôže pochopiť proces zapojenia do konceptu Groupby.
1. Zoskupte jedinečné hodnoty zo stĺpca Tím
Pandas Groupby Method
2. Teraz je tu vedro pre každú skupinu
3. Ostatné údaje vhoďte do vedier
4. Použite funkciu na stĺpec hmotnosti každého vedra.
Použitie funkcie na stĺpec hmotnosti každého stĺpca
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() Výkon:
pandy groupby
Aplikácia funkcie na skupinu:
Po rozdelení údajov do skupiny aplikujeme funkciu na každú skupinu, aby sme vykonali niektoré operácie, ktorými sú:
- Agregácia: Je to proces, v ktorom počítame súhrnnú štatistiku (alebo štatistiku) o každej skupine. Napríklad vypočítajte súčty alebo priemery skupín
- Transformácia: Je to proces, v ktorom vykonávame niektoré skupinovo špecifické výpočty a vraciame podobné indexovanie. Napríklad vyplnenie NA v rámci skupín hodnotou odvodenou z každej skupiny
- Filtrácia: Je to proces, v ktorom vyradíme niektoré skupiny podľa skupinového výpočtu, ktorý vyhodnotí Pravda alebo Nepravda. Napríklad odfiltrovanie údajov na základe súčtu alebo priemeru skupiny
Agregácia Pandas
Agregácia je proces, v ktorom vypočítavame súhrnnú štatistiku o každej skupine. Agregovaná funkcia vráti jednu agregovanú hodnotu pre každú skupinu. Po rozdelení údajov do skupín pomocou funkcie groupby je možné na zoskupených údajoch vykonať niekoľko operácií agregácie.
Agregácia Python Pandas
Python3# importing pandas module import pandas as pd # importing numpy as np import numpy as np # Define a dictionary containing employee data data1 = {'Name': ['Jai', 'Anuj', 'Jai', 'Princi', 'Gaurav', 'Anuj', 'Princi', 'Abhi'], 'Age': [27, 24, 22, 32, 33, 36, 27, 32], 'Address': ['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj', 'Jaunpur', 'Kanpur', 'Allahabad', 'Aligarh'], 'Qualification': ['Msc', 'MA', 'MCA', 'Phd', 'B.Tech', 'B.com', 'Msc', 'MA']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) # performing aggregation using # aggregate method grp1 = df.groupby('Name') grp1.aggregate(np.sum) Výkon:
Použitie súčtovej agregačnej funkcie na množine údajov
Reťazenie dátového rámca
Na spojenie dátového rámca používame concat() funkcia, ktorá pomáha pri zreťazení dátového rámca. Táto funkcia robí všetku ťažkú prácu pri vykonávaní operácií zreťazenia spolu s osou objektov Pandas, pričom vykonáva voliteľnú logiku množiny (spojenie alebo priesečník) indexov (ak existujú) na ostatných osiach.
Python Pandas zreťazil dátový rámec
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 Výkon:
Zlúčenie dátového rámca
Keď potrebujeme skombinovať veľmi veľké dátové rámce, spojenia slúžia ako účinný spôsob na rýchle vykonávanie týchto operácií. Spojenie je možné vykonať iba na dvoch DataFrames naraz, označovaných ako ľavá a pravá tabuľka. Kľúčom je spoločný stĺpec, v ktorom budú dva DataFrame spojené. Je dobrým zvykom používať kľúče, ktoré majú jedinečné hodnoty v celom stĺpci, aby ste sa vyhli neúmyselnej duplikácii hodnôt riadkov. Pandy poskytujú jedinú funkciu, zlúčiť() , ako vstupný bod pre všetky štandardné operácie spájania databáz medzi objektmi DataFrame.
Existujú štyri základné spôsoby spracovania spojenia (vnútorné, ľavé, pravé a vonkajšie), v závislosti od toho, ktoré riadky si musia zachovať svoje údaje.
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 Výkon:
Spojenie dvoch množín údajov
Pripája sa k DataFrame
Aby sme sa mohli pripojiť k dátovému rámcu, používame .join() funkcia Táto funkcia sa používa na spojenie stĺpcov dvoch potenciálne rozdielne indexovaných dátových rámcov do jedného výsledného dátového rámca.
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 Výkon:
Spojenie dvoch množín údajov
Viac informácií nájdete v našom Zlučovanie, spájanie a zreťazenie pandy tutoriál
Kompletného sprievodcu o Pandách nájdete v našom Návod na pandy .
Vizualizácia pomocou Matplotlib
Matplotlib je ľahko použiteľný a úžasná vizualizačná knižnica v Pythone. Je postavený na poliach NumPy a navrhnutý tak, aby pracoval so širším zásobníkom SciPy a pozostáva z niekoľkých grafov, ako je čiara, stĺpec, rozptyl, histogram atď.
Pyplot
Pyplot je modul Matplotlib, ktorý poskytuje rozhranie podobné MATLABu. Pyplot poskytuje funkcie, ktoré interagujú s figúrkou, t. j. vytvára figúrku, zdobí plot menovkami a vytvára vykresľovaciu oblasť na figúre.
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()
Výkon:
Stĺpcový graf
A barový pozemok alebo pruhový graf je graf, ktorý predstavuje kategóriu údajov s obdĺžnikovými pruhmi s dĺžkami a výškami, ktoré sú úmerné hodnotám, ktoré predstavujú. Tyčové pozemky je možné vykresliť horizontálne alebo vertikálne. Stĺpcový graf popisuje porovnania medzi jednotlivými kategóriami. Dá sa vytvoriť pomocou metódy bar().
Stĺpcový graf Python Matplotlib
Tu použijeme iba súbor údajov o dúhovke
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() Výkon:
Stĺpcový graf pomocou knižnice matplotlib
Histogramy
A histogram sa v podstate používa na reprezentáciu údajov vo forme niektorých skupín. Je to typ stĺpcového grafu, kde os X predstavuje rozsahy zásobníkov, zatiaľ čo os Y poskytuje informácie o frekvencii. Na vytvorenie histogramu je prvým krokom vytvorenie zásobníka rozsahov, potom rozdelenie celého rozsahu hodnôt do série intervalov a spočítanie hodnôt, ktoré spadajú do každého z intervalov. Bins sú jasne identifikované ako po sebe idúce, neprekrývajúce sa intervaly premenných. The hist() funkcia sa používa na výpočet a vytvorenie histogramu x.
Histogram Python Matplotlib
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.hist(df['SepalLengthCm']) # Title to the plot plt.title('Histogram') # Adding the legends plt.legend(['SepalLengthCm']) plt.show() Výkon:
Histplot pomocou knižnice matplotlib
Bodový diagram
Bodové grafy sa používajú na pozorovanie vzťahu medzi premennými a používajú bodky na znázornenie vzťahu medzi nimi. The rozptyl() metóda v knižnici matplotlib sa používa na kreslenie bodového grafu.
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() Výkon:
Bodový graf pomocou knižnice matplotlib
Krabicový pozemok
A boxplot ,Korelácia známa aj ako krabicový a fúzový graf. Je to veľmi dobrá vizuálna reprezentácia, pokiaľ ide o meranie distribúcie údajov. Jasne zobrazuje stredné hodnoty, odľahlé hodnoty a kvartily. Pochopenie distribúcie údajov je ďalším dôležitým faktorom, ktorý vedie k lepšiemu budovaniu modelu. Ak majú údaje odľahlé hodnoty, odporúčaným spôsobom ich identifikácie a vykonania potrebných opatrení je krabicový graf. Rámcový a fúzový graf ukazuje, ako sú dáta rozložené. V tabuľke je vo všeobecnosti zahrnutých päť informácií
- Minimum je zobrazené úplne vľavo na grafe, na konci ľavého „fúza“
- Prvý kvartil, Q1, je úplne vľavo od poľa (ľavý fúz)
- Medián je zobrazený ako čiara v strede rámčeka
- Tretí kvartil, Q3, zobrazený úplne vpravo na rámčeku (pravý fúz)
- Maximum je úplne vpravo na krabici
Znázornenie krabicového pozemku
Medzikvartilový rozsah
Ilustrujúca krabicová zápletka
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() Výkon:
Boxplot pomocou knižnice matplotlib
Korelačné tepelné mapy
2-D teplotná mapa je nástroj na vizualizáciu údajov, ktorý pomáha reprezentovať veľkosť javu vo forme farieb. Korelačná teplotná mapa je tepelná mapa, ktorá zobrazuje 2D korelačnú maticu medzi dvoma diskrétnymi rozmermi, pričom farebné bunky reprezentujú údaje zvyčajne v monochromatickej mierke. Hodnoty prvej dimenzie sa zobrazia ako riadky tabuľky, zatiaľ čo druhá dimenzia je stĺpec. Farba bunky je úmerná počtu meraní, ktoré zodpovedajú rozmerovej hodnote. Vďaka tomu sú korelačné tepelné mapy ideálne na analýzu údajov, pretože umožňujú ľahko čitateľné vzory a zvýrazňujú rozdiely a variácie v rovnakých údajoch. Korelačnej teplotnej mape, podobne ako bežnej tepelnej mape, pomáha farebný pruh, vďaka ktorému sú údaje ľahko čitateľné a zrozumiteľné.
Poznámka: Údaje tu musia byť odovzdané pomocou metódy corr(), aby sa vytvorila korelačná teplotná mapa. Taktiež samotná funkcia corr() eliminuje stĺpce, ktoré nebudú pri generovaní korelačnej tepelnej mapy k ničomu, a vyberie tie, ktoré možno použiť.
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() Výkon:
Heatmap pomocou knižnice matplotlib
Viac informácií o vizualizácii údajov nájdete v našich nižšie uvedených tutoriáloch –
- Poznámka: Budeme používať Iris Dataset.
Získanie informácií o množine údajov
Na získanie tvaru množiny údajov použijeme parameter tvar.
Tvar dátového rámca
Python3df.shapeVýkon:
(150, 6)Vidíme, že dátový rámec obsahuje 6 stĺpcov a 150 riadkov.
Poznámka: Budeme používať Iris Dataset.
Získanie informácií o množine údajov
Teraz sa pozrime aj na stĺpce a ich typy údajov. Na to použijeme Info() metóda.
Informácie o množine údajov
Python3df.info()Výkon:
![]()
informácie o súbore údajov
Vidíme, že iba jeden stĺpec obsahuje kategorické údaje a všetky ostatné stĺpce sú číselného typu s nenulovými položkami.
Poďme získať rýchly štatistický súhrn množiny údajov pomocou opísať () metóda. Funkcia description() aplikuje základné štatistické výpočty na množinu údajov, ako sú extrémne hodnoty, počet štandardných odchýlok dátových bodov atď. Akákoľvek chýbajúca hodnota alebo hodnota NaN sa automaticky preskočí. Funkcia description() poskytuje dobrý obraz o distribúcii údajov.
Popis súboru údajov
Python3df.describe()Výkon:
![]()
Popis súboru údajov
Môžeme vidieť počet každého stĺpca spolu s ich strednou hodnotou, štandardnou odchýlkou, minimálnymi a maximálnymi hodnotami.
Kontrola chýbajúcich hodnôt
Skontrolujeme, či naše údaje obsahujú nejaké chýbajúce hodnoty alebo nie. Chýbajúce hodnoty sa môžu vyskytnúť, keď nie sú poskytnuté žiadne informácie pre jednu alebo viacero položiek alebo pre celú jednotku. Budeme používať isnull() metóda.
python kód pre chýbajúcu hodnotu
Python3df.isnull().sum()Výkon:
![]()
Chýbajúce hodnoty v množine údajov
Vidíme, že žiadny stĺpec nemá žiadnu chýbajúcu hodnotu.
Kontrola duplikátov
Pozrime sa, či náš súbor údajov obsahuje nejaké duplikáty alebo nie. pandy drop_duplicates() metóda pomáha pri odstraňovaní duplikátov z dátového rámca.
Funkcia Pandas pre chýbajúce hodnoty
Python3data = df.drop_duplicates(subset ='Species',) dataVýkon:
![]()
Zrušenie duplicitnej hodnoty v množine údajov
Vidíme, že existujú iba tri jedinečné druhy. Pozrime sa, či je súbor údajov vyvážený alebo nie, t. j. všetky druhy obsahujú rovnaké množstvo riadkov alebo nie. Budeme používať Series.value_counts() funkciu. Táto funkcia vracia sériu obsahujúcu počty jedinečných hodnôt.
Python kód pre počty hodnôt v stĺpci
Python3df.value_counts('Species')Výkon:
![]()
počet hodnôt v množine údajov
Vidíme, že všetky druhy obsahujú rovnaký počet riadkov, takže by sme nemali vymazávať žiadne položky.
Vzťah medzi premennými
Uvidíme vzťah medzi dĺžkou sepalu a šírkou sepalu a tiež medzi dĺžkou okvetného lístka a šírkou okvetného lístka.
Porovnanie dĺžky a šírky sepalu
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()Výkon:
![]()
Bodový graf pomocou knižnice matplotlib
Z vyššie uvedeného grafu môžeme usúdiť, že -
- Druh Setosa má menšiu dĺžku sepalu, ale väčšiu šírku sepalu.
- Versicolor Species leží v strede medzi ďalšími dvoma druhmi, pokiaľ ide o dĺžku a šírku sepalu
- Druh Virginica má väčšiu dĺžku sepalu, ale menšiu šírku sepalu.
Porovnanie dĺžky a šírky okvetných lístkov
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()Výkon:
![]()
dĺžka okvetného lístka sactter plot
Z vyššie uvedeného grafu môžeme usúdiť, že -
- Druh Setosa má menšie dĺžky a šírky okvetných lístkov.
- Versicolor Species leží v strede medzi ďalšími dvoma druhmi, pokiaľ ide o dĺžku a šírku okvetných lístkov
- Druh Virginica má najväčšie dĺžky a šírky okvetných lístkov.
Nakreslite všetky vzťahy stĺpca pomocou párového grafu. Môže sa použiť na viacrozmernú analýzu.
Python kód pre párový graf
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.pairplot(df.drop(['Id'], axis = 1), hue='Species', height=2)Výkon:
Párový graf pre súbor údajov
Z tohto pozemku môžeme vidieť mnoho typov vzťahov, ako napríklad druh Seotsa má najmenšiu šírku a dĺžku okvetných lístkov. Má tiež najmenšiu dĺžku sepalu, ale väčšiu šírku sepalu. Takéto informácie možno získať o akomkoľvek inom druhu.
Manipulačná korelácia
pandy dataframe.corr() sa používa na nájdenie párovej korelácie všetkých stĺpcov v dátovom rámci. Akékoľvek hodnoty NA sú automaticky vylúčené. Všetky nečíselné stĺpce typu údajov v údajovom rámci sa ignorujú.
Príklad:
Python3data.corr(method='pearson')Výkon:
![]()
korelácia medzi stĺpcami v množine údajov
Tepelné mapy
Teplotná mapa je technika vizualizácie údajov, ktorá sa používa na analýzu množiny údajov ako farieb v dvoch rozmeroch. V podstate ukazuje koreláciu medzi všetkými číselnými premennými v súbore údajov. Zjednodušene povedané, vyššie zistenú koreláciu môžeme vykresliť pomocou tepelných máp.
python kód pre 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()Výkon:
![]()
Teplotná mapa pre koreláciu v množine údajov
Z vyššie uvedeného grafu môžeme vidieť, že –
- Šírka a dĺžka okvetných lístkov majú vysokú koreláciu.
- Dĺžka okvetného lístka a šírka sepalu majú dobré korelácie.
- Šírka okvetných lístkov a dĺžka sepalu majú dobré korelácie.
Manipulácia s odľahlými hodnotami
Odľahlá hodnota je dátová položka/objekt, ktorý sa výrazne odlišuje od ostatných (tzv. normálnych) objektov. Môžu byť spôsobené chybami merania alebo vykonávania. Analýza detekcie odľahlých hodnôt sa označuje ako ťažba odľahlých hodnôt. Existuje mnoho spôsobov, ako odhaliť odľahlé hodnoty a proces odstránenia je dátový rámec rovnaký ako odstránenie dátovej položky z dátového rámca pandy.
Uvažujme o množine údajov o dúhovke a načrtnime boxplot pre stĺpec SepalWidthCm.
python kód pre 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)Výkon:
![]()
Boxplot pre stĺpec sepalwidth
Vo vyššie uvedenom grafe hodnoty nad 4 a pod 2 pôsobia ako odľahlé hodnoty.
Odstránenie odľahlých hodnôt
Na odstránenie odľahlých hodnôt je potrebné postupovať podľa rovnakého procesu odstránenia položky zo súboru údajov s použitím jeho presnej polohy v súbore údajov, pretože pri všetkých vyššie uvedených metódach zisťovania odľahlých hodnôt je konečným výsledkom zoznam všetkých tých údajových položiek, ktoré spĺňajú definíciu odľahlých hodnôt. podľa použitej metódy.
Odľahlé hodnoty zistíme pomocou IQR a potom ich odstránime. Taktiež nakreslíme boxplot, aby sme zistili, či sú odľahlé hodnoty odstránené alebo nie.
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)) # Dolná hranica nižšia = 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)Výkon:
![]()
boxplot pomocou knižnice seaborn
Viac informácií o EDA nájdete v našich nižšie uvedených tutoriáloch –