Ваш первый шаг к анализу данных.

С 2010 года, когда pandas впервые получил открытый исходный код, он превратился в красивую и обширную библиотеку для анализа данных. Он часто используется вместе с вычислительными и статистическими библиотеками, такими как NumPy, scikit-learn, matplotlib и т. Д.

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

pandas имеет 2 структуры данных, которые многократно используются снова и снова: Series и DataFrame.

Серии

Проще говоря, серия - это одномерный массив элементов, но с дополнительной функцией: существует явный индекс для адресации каждого элемента. Чтобы создать серию, вам нужно передать массив (список, словарь или даже кортеж). Вы также можете передать явный массив для индекса. Индексируя серию, думайте о ней как о хэш-карте, ассоциативном массиве или структуре данных словаря.

>>> import pandas as pd
>>> series = pd.Series([1,2,3,4,5,6,7])
>>> series
0    1
1    2
2    3
3    4
4    5
5    6
6    7
dtype: int64
>>> series.index
RangeIndex(start=0, stop=7, step=1)
>>> #or pass an explicit index
>>> series2 = pd.Series([1,2,3,4,5,6,7], index['a','b','c','d','e','f','g'])
>>> series2
a    1
b    2
c    3
d    4
e    5
f    6
g    7
dtype: int64

DataFrame

pandas предназначен для работы с табличными или разнородными данными. Это достигается за счет структуры данных DataFrame. Это похоже на таблицу - она ​​содержит строки и столбцы, которые можно индексировать. Существует множество способов создать набор данных, наиболее распространенным из которых является передача словаря. Давай создадим его.

>>> diction = {'name': ['Alex', 'Bob', 'Charlie', 'Jack', 'Melissa'],
          'age': [20, 18, 19, 20, 19],
          'score': [109, 108, 99, 120, 115]}
>>> dataframe1 = pd.DataFrame(diction)

Чтобы проиллюстрировать истинную мощь библиотеки pandas, мы начнем работать с небольшим набором данных из kaggle. Это набор данных об успеваемости учащихся на экзаменах и о том, как на нее влияют экономические, личные и социальные факторы. Загрузите набор данных здесь.

Импорт набора данных

Чтобы импортировать набор данных в формате csv с помощью pandas, мы используем функцию pandas read_csv.

>>> df = pd.read_csv('StudentsPerformance.csv')

Изучение данных

Часто, когда мы работаем с набором данных, нам интересно знать, какие столбцы он содержит и что описывает каждый столбец. Это легко сделать с помощью функций pandas head () и info ().

>>> df.head()

>>> df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 8 columns):
gender                         1000 non-null object
race/ethnicity                 1000 non-null object
parental level of education    1000 non-null object
lunch                          1000 non-null object
test preparation course        1000 non-null object
math score                     1000 non-null int64
reading score                  1000 non-null int64
writing score                  1000 non-null int64
dtypes: int64(3), object(5)
memory usage: 62.6+ KB

Проверка нулевых значений

Наборы данных часто содержат нулевые значения, которые могут мешать работе во время машинного обучения. Мы можем проверить нулевые значения с помощью функции info () или суммировать по каждому отдельному столбцу, чтобы проверить наличие нулей в столбцах.

>>> df.isnull().sum()
gender                         0
race/ethnicity                 0
parental level of education    0
lunch                          0
test preparation course        0
math score                     0
reading score                  0
writing score                  0
dtype: int64

Описание данных

Еще одна очень полезная функция - description (). Это дает 5-кратную сводку данных вместе с некоторой другой полезной статистикой для интерпретации диапазона, в котором будут находиться наши данные.

df.describe()

Задавать вопросы по данным

Основная причина изучения набора данных - это возможность ответить на вопросы. Например, можно было бы узнать, посмотрев на набор данных: «Сколько студентов сдали экзамен по математике?» Или: «Сколько учеников набрали процент выше 80?» С пандами легко ответить на этот вопрос.

>>> # how many students passed the math exam?
>>> passing_score = 40
>>> math_stats = df['math score'] >= passing_score
>>> print(math_stats.sum())
960
>>> # how many students scored a percentage above 80?
>>> total_marks = df['math score'] + df['reading score'] + df['writing score']
>>> total = 3
>>> total_percentage = (total_marks/total)
>>> above_80 = total_percentage >= 80
>>> print(total_percentage[above_80].count())
198

Сортировка данных по процентам

Теперь, когда мы рассчитали процентное соотношение для всех студентов, мы можем отсортировать данные по их рангу. pandas позволяет сортировать по желаемому столбцу. Для этого давайте добавим еще один столбец с именем «процент» в наш набор данных и отсортируем его.

>>> df['percentage'] = total_percentage
>>> df.sort_values(by='percentage', ascending=False)

Подсчет по значениям

Иногда нас может заинтересовать анализ определенного столбца из нашего набора данных. Например, столбец «Уровень образования родителей» содержит 5 уникальных значений по всему столбцу. Мы можем захотеть подсчитать эти значения. Функция pandas value_counts () делает это очень просто.

>>> df['parental level of education'].unique()
array(["bachelor's degree", 'some college', "master's degree",
       "associate's degree", 'high school', 'some high school'],
      dtype=object)
>>> df['parental level of education'].value_counts()
some college          226
associate's degree    222
high school           196
some high school      179
bachelor's degree     118
master's degree        59
Name: parental level of education, dtype: int64

Подведение итогов

Здесь я обсудил всего несколько удобных функций, которые постоянно используются во время исследовательского анализа данных. Лучшим источником полного руководства по использованию панд является сама документация!