Pandas, NumPy для очистки и манипуляции и matplotlib, seaborn для визуализации

В этой статье мы обсудим методы очистки и обработки данных, которые представляют собой процесс анализа данных.

Почему обработка данных важна в каждом проекте анализа данных?

Это важно, потому что все необработанные данные содержат шум и нерелевантные данные, которые бесполезны для будущего анализа и прогнозов. Некоторые проблемы, ключевые моменты в обработке данных, показаны ниже:

  • Когда мы извлекаем необработанные данные с веб-сайта или из других источников, иногда они имеют неправильный формат. Итак, нам нужно сделать данные в удобном для чтения и использования формате.
  • Необработанные данные поступают в неправильном формате, но также содержат различные дополнительные шумы, которые не имеют отношения к анализу. Итак, нам нужно убрать эти шумы также для анализа.
  • Данные могут быть огромными, и важен процесс их ускорения. Таким образом, уменьшить количество шума при очистке данных можно легко и быстро с помощью современных инструментов и вычислительной мощности.
  • Мы можем идентифицировать функции и прогнозировать взаимосвязь между ними, а также можем визуализировать линейно, классифицировать и кластеризовать.

В этой статье мы используем набор данных IPL, который загружается с Kaggle по ссылке здесь. В ходе анализа мы найдем основную информацию из данных параллельно с процессом.

Мы будем использовать блокнот jupyter в качестве инструмента для анализа.

Импортируйте библиотеки, которые нам нужны для этого анализа. Когда мы обрабатываем данные, нам нужны библиотеки, такие как pandas, NumPy для очистки и обработки и matplotlib, seaborn для визуализации.

#For data cleaning and manipulation
import pandas as pd 
import numpy as np 
#For data visualization
import matplotlib.pyplot as plt
import seaborn as sns 
#to not show warnings
import warnings
warnings.filterwarnings('ignore')

Теперь мы загрузим и просмотрим набор данных с помощью функции panda read_csv.

df = pd.read_csv(‘matches.csv’)
df.head()

Давайте проверим форму и типы данных.

df.shape
#output:
(636, 18)
#data type of the data columns
df.dtypes.value_counts()
#output:
object     12
int64       5
float64     1
dtype: int64

Из приведенного выше наблюдения мы видим, что это небольшой набор данных, всего 636 строк и 18 столбцов. Тип данных столбцов состоит из 12 категориальных столбцов, 5 числовых столбцов и выясняет, какой из них является столбцом с плавающей запятой.

#Extracting the float column
float_column = df.select_dtypes(['float64']).columns
float_column
#output:
Index(['umpire3'], dtype='object')

Столбец float64 - это umpire3. Очень странно, что при выборе float64, но на выходе он показывает тип объекта. Давайте проверим нулевые значения в наборе данных.

df.isnull().sum()
#output:
id                   0
season               0
city                 7
date                 0
team1                0
team2                0
toss_winner          0
toss_decision        0
result               0
dl_applied           0
winner               3
win_by_runs          0
win_by_wickets       0
player_of_match      3
venue                0
umpire1              1
umpire2              1
umpire3            636
dtype: int64

Ой! теперь мы видим, что столбец umpire3 не содержит никакой информации, и его лучше отбросить.





Как мы видим, количество нулевых значений в данных очень мало, поэтому мы можем отбросить эти значения.

df = df.dropna(axis= 0)
df.isnull().sum()
#output:
id                 0
season             0
city               0
date               0
team1              0
team2              0
toss_winner        0
toss_decision      0
result             0
dl_applied         0
winner             0
win_by_runs        0
win_by_wickets     0
player_of_match    0
venue              0
umpire1            0
umpire2            0
umpire3            0
dtype: int64

Теперь мы проверим сезон в данных, чтобы узнать, сколько сезонов в данных.

df1['season'].value_counts()
#output:
2013    76
2012    74
2011    73
2016    60
2014    60
2010    60
2017    59
2015    59
2008    58
2009    57
Name: season, dtype: int64

Из приведенного выше кода мы видим, что для анализа доступны всего "10" сезонных данных.

Мы также можем увидеть количество сезонов под кодом.

df1['season'].unique()
#output:
array([2017, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016],
      dtype=int64)
#length of the number of season
len(df1['season'].unique())
#output:
10

Мы можем визуализировать количество сезонов с помощью гистограммы.

plt.figure(figsize=(8,5))
sns.countplot(x ='season', data = df1)
plt.show()

Из приведенного выше графика легко увидеть, что максимальное количество сыгранных матчей в 2013 году.

Теперь посмотрим, сколько матчей команда выиграла за все сезоны.

df1['winner'].value_counts()
#output:
Mumbai Indians                 92
Chennai Super Kings            79
Kolkata Knight Riders          77
Royal Challengers Bangalore    73
Kings XI Punjab                70
Rajasthan Royals               63
Delhi Daredevils               62
Sunrisers Hyderabad            42
Deccan Chargers                29
Gujarat Lions                  13
Pune Warriors                  12
Rising Pune Supergiant         10
Kochi Tuskers Kerala            6
Rising Pune Supergiants         5
Name: winner, dtype: int64

Мы видим, что индейцы Мумбаи выиграли максимальное количество матчей за 10 сезонов. Мы также можем видеть это количество на горизонтальных столбчатых диаграммах.

data = df1.winner.value_counts()
sns.barplot(y = data.index, x = data, orient='h');

После подсчета игрока, выигравшего максимальное количество игроков в матче, мы выберем эти строки.

df[(df["player_of_match"] == "CH Gayle")]

Заключение

В этой статье дается основная идея подхода к обработке данных.

Надеюсь, статья вам понравилась. Свяжитесь со мной в моих LinkedIn и twitter.

Рекомендуемые статьи от автора

1. НЛП - от нуля до героя с Python
2. Структуры данных Python, типы данных и объекты
3. Концепции обработки исключений в Python
4. Чтение CSV (), Excel (), JSON () и HTML () форматы файлов в Pandas
5. Нейронные сети: рост рекуррентных нейронных сетей
6. Полностью объясненная линейная регрессия с помощью Python
7. Полностью объясненная логистическая регрессия с Python
8. Различия между concat (), merge () и join () с Python
9. Регуляризация Lasso (l1) и Ridge (l2) Приемы
10. Матрица неточностей в машинном обучении