Аналіз даних за допомогою Python
У цій статті ми обговоримо, як робити аналіз даних за допомогою Python. Ми обговоримо всі види аналізу даних, наприклад аналіз числових даних за допомогою NumPy, табличних даних за допомогою Pandas, візуалізації даних Matplotlib і дослідницького аналізу даних.
Аналіз даних за допомогою Python
Аналіз даних це техніка збору, перетворення та організації даних для прогнозування майбутнього та прийняття обґрунтованих рішень на основі даних. Це також допомагає знайти можливі рішення бізнес-проблем. Існує шість кроків для аналізу даних. Вони є:
- Запитайте або вкажіть вимоги до даних
- Підготуйте або зберіть дані
- Очистіть і обробіть
- Аналізуйте
- Поділіться
- Діяти або звітувати
Аналіз даних за допомогою Python
Примітка: Щоб дізнатися більше про ці кроки, зверніться до нашого NumPy є пакетом обробки масивів на Python і надає високопродуктивний об’єкт багатовимірного масиву та інструменти для роботи з цими масивами. Це основний пакет для наукових обчислень на Python.
Масиви в NumPy
Масив NumPy це таблиця елементів (зазвичай чисел), усіх тих самих типів, індексованих кортежем додатних цілих чисел. У Numpy кількість вимірів масиву називається рангом масиву. Кортеж цілих чисел, що визначає розмір масиву вздовж кожного виміру, відомий як форма масиву.
Створення масиву NumPy
Масиви NumPy можна створювати різними способами з різними рангами. Його також можна створити з використанням різних типів даних, таких як списки, кортежі тощо. Тип результуючого масиву виводиться з типу елементів у послідовностях. NumPy пропонує кілька функцій для створення масивів із початковим вмістом-заповнювачем. Це зводить до мінімуму необхідність вирощування масивів, дорогу операцію.
Створити масив за допомогою numpy.empty(форма, 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) Вихід:
Порожня матриця за допомогою панд
Створити масив за допомогою 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) Вихід:
Matrix b : [0 0] Matrix a : [[0 0] [0 0]] Matrix c : [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
Операції над масивами Numpy
Арифметичні операції
- доповнення:
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)
Вихід:
[ 7 77 23 130] [ 7 77 23 130] [ 8 79 26 134] [ 7 77 23 130]
- віднімання:
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)
Вихід:
[ 3 67 3 70] [ 3 67 3 70]
- Множення:
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)
Вихід:
[ 10 360 130 3000] [ 10 360 130 3000]
- Відділ:
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)
Вихід:
[ 2.5 14.4 1.3 3.33333333] [ 2.5 14.4 1.3 3.33333333]
Для отримання додаткової інформації зверніться до нашого NumPy – Підручник з арифметичних операцій
Індексація масиву NumPy
Індексація можна зробити в NumPy, використовуючи масив як індекс. У випадку зрізу повертається представлення або поверхнева копія масиву, але в масиві індексу повертається копія вихідного масиву. Масиви Numpy можна індексувати іншими масивами або будь-якою іншою послідовністю, за винятком кортежів. Останній елемент індексується -1, останній -2 і так далі.
Індексація масиву 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) Вихід:
A sequential array with a negative step: [10 8 6 4 2] Elements at these indices are: [4 8 6]
Нарізка масиву NumPy
Розглянемо синтаксис x[obj], де x — масив, а obj — індекс. Об'єкт фрагмента є індексом у випадку основна нарізка . Базове нарізання відбувається, коли obj є:
- об'єкт фрагмента, який має форму початок: зупинка: крок
- ціле число
- або кортеж об’єктів зрізу та цілих чисел
Усі масиви, згенеровані базовим нарізанням, завжди являють собою вигляд вихідного масиву.
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:]) Вихід:
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]
Еліпсис також можна використовувати разом із базовим нарізанням. Еліпсис (…) — це кількість : об’єктів, необхідних для створення кортежу вибору такої ж довжини, що й розміри масиву.
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 ]
Вихід:
[[ 2 5] [ 8 11]]
Трансляція масиву NumPy
Термін мовлення стосується того, як numpy обробляє масиви з різними розмірами під час арифметичних операцій, які призводять до певних обмежень, менший масив транслюється через більший масив, щоб вони мали сумісні форми.
Припустімо, що у нас є великий набір даних, кожна дата є списком параметрів. У Numpy ми маємо 2-D масив, де кожен рядок є даними, а кількість рядків — це розмір набору даних. Припустімо, ми хочемо застосувати певний вид масштабування до всіх цих даних, кожен параметр отримує власний коефіцієнт масштабування, або скажімо, кожен параметр множиться на певний коефіцієнт.
Щоб мати чітке розуміння, давайте підрахуємо калорії в продуктах за допомогою розподілу макроелементів. Грубо кажучи, калорійність їжі складається з жирів (9 калорій на грам), білків (4 CPG) і вуглеводів (4 CPG). Отже, якщо ми перерахуємо деякі продукти (наші дані) і для кожної їжі перерахуємо розподіл макропоживних речовин (параметри), ми зможемо помножити кожну поживну речовину на її калорійність (застосувати масштабування), щоб обчислити розподіл калорійності кожного продукту.
Завдяки цій трансформації тепер ми можемо обчислювати будь-яку корисну інформацію. Наприклад, яка загальна кількість калорій у певній їжі або, враховуючи розбивку мого обіду, знати, скільки калорій я отримав із білка тощо.
Давайте подивимося наївний спосіб створення цього обчислення за допомогою 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
Вихід:
array([[ 2.4, 8.7, 31.2], [157.2, 70.8, 292. ], [165.6, 95.1, 191.2], [ 43.2, 33. , 39.2]])
Правила трансляції: Трансляція двох масивів разом дотримується таких правил:
- Якщо масиви не мають однакового рангу, тоді до форми масиву нижчого рангу додайте 1, доки обидві фігури не матимуть однакову довжину.
- Два масиви сумісні у вимірі, якщо вони мають однаковий розмір у вимірі або якщо один із масивів має розмір 1 у цьому вимірі.
- Масиви можна транслювати разом, якщо вони сумісні з усіма розмірами.
- Після трансляції кожен масив поводиться так, ніби він має форму, що дорівнює поелементному максимуму форм двох вхідних масивів.
- У будь-якому вимірі, де розмір одного масиву дорівнює 1, а розмір іншого масиву перевищує 1, перший масив поводиться так, ніби його було скопійовано вздовж цього виміру.
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)
Вихід:
[[ 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]]
Примітка: Для отримання додаткової інформації зверніться до нашого Підручник з Python NumPy .
Аналіз даних за допомогою Pandas
Python Pandas Використовується для реляційних або позначених даних і надає різні структури даних для маніпулювання такими даними та часовими рядами. Ця бібліотека побудована на основі бібліотеки NumPy. Цей модуль зазвичай імпортується як:
import pandas as pd
Тут pd згадується як псевдонім Pandas. Однак не обов’язково імпортувати бібліотеку за допомогою псевдоніма, це просто допомагає писати меншу кількість коду під час кожного виклику методу чи властивості. Panda зазвичай надає дві структури даних для маніпулювання даними, це:
- Серія
- Кадр даних
Серія:
Серія панд це одновимірний позначений масив, здатний зберігати дані будь-якого типу (цілі числа, рядки, числа з плаваючою точкою, об’єкти python тощо). Мітки осей разом називаються індексами. Серія Pandas — це не що інше, як стовпець у аркуші Excel. Мітки не обов’язково повинні бути унікальними, але мають мати хешований тип. Об’єкт підтримує індексування як цілих чисел, так і індексування на основі міток і надає безліч методів для виконання операцій із залученням індексу.
Серія панд
Його можна створити за допомогою функції Series(), завантаживши набір даних із наявного сховища, наприклад SQL, бази даних, файлів CSV, файлів Excel тощо, або зі структур даних, таких як списки, словники тощо.
Серія створення 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)
Вихід:
серія pnadas
Кадр даних:
Pandas DataFrame це двовимірна, змінювана розміром, потенційно неоднорідна таблична структура даних із позначеними осями (рядки та стовпці). Фрейм даних — це двовимірна структура даних, тобто дані вирівнюються в табличному вигляді в рядках і стовпцях. Pandas DataFrame складається з трьох основних компонентів: даних, рядків і стовпців.
Pandas Data Frame
Він може бути створений за допомогою методу Dataframe() і, як і серія, також може бути з різних типів файлів і структур даних.
Python Pandas Створення Dataframe
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
Вихід:
Створення Dataframe зі списку python
Створення Dataframe з CSV
Ми можемо створити фрейм даних із CSV файли за допомогою read_csv() функція.
Python Pandas читає CSV
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # Printing top 5 rows df.head() Вихід:
заголовок кадру даних
Фільтрування DataFrame
панди dataframe.filter() функція використовується для піднабору рядків або стовпців кадру даних відповідно до міток у вказаному індексі. Зауважте, що ця процедура не фільтрує фрейм даних за його вмістом. Фільтр застосовується до міток індексу.
Фрейм даних фільтра 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() Вихід:
Застосування фільтра до набору даних
Сортування DataFrame
Щоб відсортувати кадр даних у pandas, функція sort_values() використовується. Pandas sort_values() може сортувати кадр даних у порядку зростання або спадання.
Python Pandas сортує фрейм даних у порядку зростання
Вихід:
Відсортований набір даних на основі значення стовпця
Pandas GroupBy
Groupby це досить проста концепція. Ми можемо створити групування категорій і застосувати до категорій функцію. У реальних наукових проектах даних вам доведеться мати справу з великими обсягами даних і пробувати щось знову і знову, тому для ефективності ми використовуємо концепцію Groupby. Groupby в основному відноситься до процесу, який включає один або кілька з наступних кроків:
- Розщеплення: Це процес, у якому ми розбиваємо дані на групи, застосовуючи певні умови до наборів даних.
- Застосування: Це процес, у якому ми застосовуємо функцію до кожної групи незалежно.
- Комбінування: Це процес, у якому ми об’єднуємо різні набори даних після застосування groupby і результатів у структуру даних.
Наступне зображення допоможе зрозуміти процес, задіяний у концепції Groupby.
1. Згрупуйте унікальні значення зі стовпця Команда
Метод групування панд
2. Тепер для кожної групи є відро
3. Викладіть інші дані у відра
4. Застосуйте функцію до стовпця ваги кожного відра.
Застосування функції до вагового стовпця кожного стовпця
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() Вихід:
панди groupby
Застосування функції до групи:
Після поділу даних на групу ми застосовуємо функцію до кожної групи, щоб виконати деякі операції:
- Агрегація: Це процес, у якому ми обчислюємо підсумкову статистику (або статистику) щодо кожної групи. Наприклад, обчислити групові суми або середні значення
- Трансформація: Це процес, у якому ми виконуємо певні групові обчислення та повертаємо подібний індекс. Наприклад, заповнення NA в групах значенням, отриманим із кожної групи
- Фільтрація: Це процес, у якому ми відкидаємо деякі групи відповідно до групових обчислень, які оцінюють True або False. Наприклад, відфільтрування даних на основі суми або середнього значення групи
Агрегація Pandas
Агрегація це процес, у якому ми обчислюємо підсумкову статистику щодо кожної групи. Агрегована функція повертає єдине агреговане значення для кожної групи. Після розбиття даних на групи за допомогою функції groupby над згрупованими даними можна виконати декілька операцій агрегування.
Агрегація 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) Вихід:
Використання агрегатної функції sum для набору даних
Конкатенація DataFrame
Щоб об’єднати фрейм даних, ми використовуємо concat() функція, яка допомагає об’єднувати фрейм даних. Ця функція виконує всю важку роботу, пов’язану з виконанням операцій конкатенації разом із віссю об’єктів Pandas, одночасно виконуючи необов’язкову логіку набору (об’єднання або перетину) індексів (якщо такі є) на інших осях.
Python Pandas Concatenate Data Frame
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 Вихід:
Об’єднання DataFrame
Коли нам потрібно об’єднати дуже великі DataFrames, об’єднання служать потужним засобом для швидкого виконання цих операцій. Об’єднання можна виконувати лише на двох DataFrames одночасно, позначених як ліва та права таблиці. Ключ — це загальний стовпець, у якому будуть об’єднані два DataFrames. Рекомендується використовувати ключі, які мають унікальні значення в стовпці, щоб уникнути ненавмисного дублювання значень рядків. Панди забезпечують одну функцію, злиття () , як точка входу для всіх стандартних операцій з’єднання бази даних між об’єктами DataFrame.
Існує чотири основні способи обробки об’єднання (внутрішнє, ліве, праве та зовнішнє), залежно від того, які рядки мають зберігати свої дані.
Python Pandas Merge Data Frame
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 Вихід:
Конкатинація двох наборів даних
Приєднання до DataFrame
Щоб приєднатися до фрейму даних, ми використовуємо .join() Ця функція використовується для об’єднання стовпців двох потенційно різноіндексованих DataFrame в один результат 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 Вихід:
Об’єднання двох наборів даних
Для отримання додаткової інформації зверніться до нашого Pandas Злиття, приєднання та конкатенація підручник
Щоб отримати повний довідник про Pandas, зверніться до нашого Підручник Pandas .
Візуалізація за допомогою Matplotlib
Matplotlib проста у використанні та чудова бібліотека візуалізації на Python. Він побудований на основі масивів NumPy і призначений для роботи з ширшим стеком SciPy і складається з кількох графіків, таких як лінія, стовпчик, розкид, гістограма тощо.
Pyplot
Pyplot це модуль Matplotlib, який забезпечує схожий на MATLAB інтерфейс. Pyplot надає функції, які взаємодіють із фігурою, тобто створює фігуру, прикрашає графік мітками та створює область малювання на фігурі.
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()
Вихід:
Гістограма
А барна ділянка або стовпчаста діаграма — це графік, який представляє категорію даних за допомогою прямокутних стовпчиків, довжина та висота яких пропорційна значенням, які вони представляють. Стовпчасті діаграми можуть бути нанесені горизонтально або вертикально. Гістограма описує порівняння між окремими категоріями. Його можна створити за допомогою методу bar().
Гістограма Python Matplotlib
Тут ми будемо використовувати лише набір даних райдужної оболонки ока
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() Вихід:
Гістограма з використанням бібліотеки matplotlib
Гістограми
А гістограма в основному використовується для представлення даних у вигляді деяких груп. Це тип стовпчастої діаграми, де вісь X представляє діапазони бінів, а вісь Y дає інформацію про частоту. Щоб створити гістограму, першим кроком є створення діапазону діапазонів, потім розподілення всього діапазону значень на серію інтервалів і підрахунок значень, які потрапляють у кожен з інтервалів. Біни чітко визначені як послідовні інтервали змінних, які не перекриваються. The історія () функція використовується для обчислення та створення гістограми x.
Гістограма 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() Вихід:
Histplot з використанням бібліотеки matplotlib
Діаграма розкиду
Діаграма розсіювання використовується для спостереження за зв’язком між змінними та використання точок для відображення зв’язку між ними. The scatter() метод у бібліотеці matplotlib використовується для малювання діаграми розсіювання.
Точкова діаграма Python Matplotlib
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() Вихід:
Точкова діаграма за допомогою бібліотеки matplotlib
Box Plot
А boxplot , Кореляція, також відома як прямокутна діаграма. Це дуже гарне візуальне представлення, коли справа доходить до вимірювання розподілу даних. Чітко відображає медіанні значення, викиди та квартилі. Розуміння розподілу даних є ще одним важливим фактором, який веде до кращого створення моделі. Якщо дані мають викиди, рекомендований спосіб їх ідентифікації та вжиття необхідних заходів — коробковий графік. Діаграма прямокутників і вусів показує, як розподіляються дані. У діаграмі зазвичай міститься п’ять елементів інформації
- Мінімум показаний у крайньому лівому куті діаграми, на кінці лівого «вуса»
- Перший квартиль, Q1, є крайнім лівим кутом прямокутника (лівий вискер)
- Медіана показана у вигляді лінії в центрі рамки
- Третій квартиль, Q3, показаний у крайньому правому куті прямокутника (правий вус)
- Максимум знаходиться в правій частині вікна
Зображення коробчатого сюжету
Міжквартильний діапазон
Ілюстрація сюжету коробки
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() Вихід:
Boxplot з використанням бібліотеки matplotlib
Теплові карти кореляції
2-D Heatmap – це інструмент візуалізації даних, який допомагає відобразити масштаб явища у вигляді кольорів. Теплова карта кореляції – це теплова карта, яка показує двовимірну кореляційну матрицю між двома дискретними вимірами, використовуючи кольорові клітинки для представлення даних зазвичай у монохроматичному масштабі. Значення першого виміру відображаються як рядки таблиці, тоді як другий вимір є стовпцем. Колір комірки пропорційний кількості вимірювань, які відповідають розмірному значенню. Це робить кореляційні теплові карти ідеальними для аналізу даних, оскільки вони роблять шаблони легко читаними та підкреслюють відмінності та варіації в тих самих даних. Кореляційна теплова карта, як і звичайна теплова карта, має кольорову панель, що робить дані легко читаними та зрозумілими.
Примітка: Дані тут потрібно передати за допомогою методу corr() для створення кореляційної теплової карти. Крім того, сам corr() усуває стовпці, які не будуть корисними під час генерації теплової карти кореляції, і вибирає ті, які можна використовувати.
Теплова карта кореляції Python Matplotlib
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.imshow(df.corr() , cmap = 'autumn' , interpolation = 'nearest' ) plt.title('Heat Map') plt.show() Вихід:
Теплова карта з використанням бібліотеки matplotlib
Для отримання додаткової інформації про візуалізацію даних зверніться до наших посібників нижче –
- Примітка: Ми будемо використовувати набір даних Iris.
Отримання інформації про набір даних
Ми будемо використовувати параметр shape, щоб отримати форму набору даних.
Форма Dataframe
Python3df.shapeВихід:
(150, 6)Ми бачимо, що фрейм даних містить 6 стовпців і 150 рядків.
Примітка: Ми будемо використовувати набір даних Iris.
Отримання інформації про набір даних
Тепер розглянемо також стовпці та їхні типи даних. Для цього ми будемо використовувати інформація() метод.
Інформація про набір даних
Python3df.info()Вихід:
![]()
інформація про набір даних
Ми бачимо, що лише один стовпець містить категоричні дані, а всі інші стовпці мають числовий тип із записами, відмінними від Null.
Давайте отримаємо короткий статистичний підсумок набору даних за допомогою описати() метод. Функція describe() застосовує основні статистичні обчислення до набору даних, як-от екстремальні значення, кількість точок даних, стандартне відхилення тощо. Будь-яке пропущене значення або значення NaN автоматично пропускається. Функція describe() дає хорошу картину розподілу даних.
Опис набору даних
Python3df.describe()Вихід:
![]()
Опис набору даних
Ми можемо побачити кількість кожного стовпця разом із їхнім середнім значенням, стандартним відхиленням, мінімальними та максимальними значеннями.
Перевірка відсутніх значень
Ми перевіримо, чи містять наші дані пропущені значення чи ні. Відсутні значення можуть виникати, якщо не надається інформація для одного або кількох елементів або для цілого підрозділу. Ми будемо використовувати isnull() метод.
код python для відсутнього значення
Python3df.isnull().sum()Вихід:
![]()
У наборі даних відсутні значення
Ми бачимо, що жоден стовпець не має пропущеного значення.
Перевірка дублікатів
Давайте перевіримо, чи містить наш набір даних дублікати чи ні. панди drop_duplicates() метод допомагає у видаленні дублікатів із кадру даних.
Функція Pandas для відсутніх значень
Python3data = df.drop_duplicates(subset ='Species',) dataВихід:
![]()
Видалення повторюваного значення в наборі даних
Ми бачимо, що існує лише три унікальних види. Давайте подивимося, чи збалансований набір даних, тобто всі види містять однакову кількість рядків чи ні. Ми будемо використовувати Series.value_counts() функція. Ця функція повертає ряд, що містить кількість унікальних значень.
Код Python для підрахунку значення в стовпці
Python3df.value_counts('Species')Вихід:
![]()
кількість значень у наборі даних
Ми бачимо, що всі види містять однакову кількість рядків, тому нам не слід видаляти жодні записи.
Зв'язок між змінними
Ми побачимо співвідношення між довжиною та шириною чашолистка, а також між довжиною та шириною пелюстки.
Порівняння довжини та ширини чашолистка
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()Вихід:
![]()
Точкова діаграма за допомогою бібліотеки matplotlib
З наведеного вище сюжету ми можемо зробити висновок, що –
- Вид Setosa має меншу довжину чашолистка, але більшу ширину.
- Versicolor Вид знаходиться посередині двох інших видів за довжиною та шириною чашолистка
- Вид Virginica має більшу довжину чашолистка, але меншу ширину.
Порівняння довжини та ширини пелюстки
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()Вихід:
![]()
sactter ділянка довжини пелюстки
З наведеного вище сюжету ми можемо зробити висновок, що –
- Вид Setosa має меншу довжину та ширину пелюсток.
- Versicolor Species знаходиться в середині двох інших видів за довжиною та шириною пелюсток
- Найбільшу довжину і ширину пелюсток має вид Virginica.
Давайте побудуємо всі зв’язки стовпців за допомогою парної діаграми. Його можна використовувати для багатофакторного аналізу.
Код Python для парної графіки
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.pairplot(df.drop(['Id'], axis = 1), hue='Species', height=2)Вихід:
Парний графік для набору даних
На цьому графіку ми можемо побачити багато типів взаємозв’язків, наприклад, вид Seotsa має найменшу ширину та довжину пелюсток. Він також має найменшу довжину чашолистка, але більшу ширину чашолистка. Таку інформацію можна зібрати про будь-який інший вид.
Кореляція обробки
панди dataframe.corr() використовується для пошуку парної кореляції всіх стовпців у кадрі даних. Будь-які значення NA автоматично виключаються. Будь-які нечислові стовпці типу даних у кадрі даних ігноруються.
приклад:
Python3data.corr(method='pearson')Вихід:
![]()
кореляція між стовпцями в наборі даних
Теплові карти
Теплова карта – це техніка візуалізації даних, яка використовується для аналізу набору даних як кольорів у двох вимірах. По суті, він показує кореляцію між усіма числовими змінними в наборі даних. Простіше кажучи, ми можемо побудувати знайдену вище кореляцію за допомогою теплових карт.
код python для теплової карти
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()Вихід:
![]()
Теплова карта для кореляції в наборі даних
З наведеного вище графіка ми бачимо, що –
- Ширина і довжина пелюстки мають високі кореляції.
- Довжина пелюстки і ширина чашолистка добре співвідносяться.
- Ширина пелюстки та довжина чашолистка добре співвідносяться.
Обробка викидів
Викид — це елемент/об’єкт даних, який значно відрізняється від решти (так званих нормальних) об’єктів. Вони можуть бути викликані помилками вимірювання або виконання. Аналіз для виявлення викидів називається аналізом викидів. Існує багато способів виявлення викидів, і процес видалення кадру даних такий самий, як і видалення елемента даних із кадру даних панди.
Давайте розглянемо набір даних райдужної оболонки і побудуємо коробковий графік для стовпця SepalWidthCm.
код python для 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)Вихід:
![]()
Boxplot для стовпця sepalwidth
На наведеному вище графіку значення вище 4 і нижче 2 діють як викиди.
Видалення викидів
Для видалення викиду потрібно виконати той самий процес видалення запису з набору даних, використовуючи його точне положення в наборі даних, оскільки в усіх вищезазначених методах виявлення викидів кінцевим результатом є список усіх елементів даних, які задовольняють визначенню викидів відповідно до використовуваного методу.
Ми виявимо викиди за допомогою IQR а потім ми їх видалимо. Ми також намалюємо коробкову діаграму, щоб побачити, видалені викиди чи ні.
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)) # Нижня межа нижня = 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)Вихід:
![]()
boxplot з використанням бібліотеки seaborn
Для отримання додаткової інформації про EDA зверніться до наших посібників нижче –