Наука о данных — подготовка данных


Прежде чем анализировать данные, Data Scientist должен извлечь данные и сделать их чистыми и ценными.


Извлечение и чтение данных с помощью Pandas

Прежде чем данные можно будет проанализировать, их необходимо импортировать/извлечь.

В приведенном ниже примере мы покажем вам, как импортировать данные с помощью Pandas в Python.

Мы используем read_csv()функцию для импорта CSV-файла с данными о работоспособности:

Пример

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data)

Объяснение примера

  • Импортируйте библиотеку Pandas
  • Назовите фрейм данных как health_data.
  • header=0 означает, что заголовки для имен переменных должны быть найдены в первой строке (обратите внимание, что 0 означает первую строку в Python)
  • sep=","означает, что "," используется в качестве разделителя между значениями. Это связано с тем, что мы используем тип файла .csv (значения, разделенные запятыми).

Совет. Если у вас большой CSV-файл, вы можете использовать эту head()функцию, чтобы отобразить только верхние 5 строк:

Пример

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data.head())

Очистка данных

Посмотрите на импортированные данные. Как видите, данные «грязные» с неправильными или незарегистрированными значениями:

Грязные данные
  • Есть пустые поля
  • Средний пульс 9 000 невозможен
  • 9 000 будет считаться нечисловым из-за разделителя пробелов.
  • Одно наблюдение максимального пульса обозначается как «AF», что не имеет смысла.

Итак, мы должны очистить данные, чтобы выполнить анализ.


Удалить пустые строки

Мы видим, что нечисловые значения (9 000 и AF) находятся в тех же строках с пропущенными значениями.

Решение: мы можем удалить строки с отсутствующими наблюдениями, чтобы решить эту проблему.

Когда мы загружаем набор данных с помощью Pandas, все пустые ячейки автоматически преобразуются в значения «NaN».

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

Мы можем использовать dropna()функцию для удаления NaN. axis=0 означает, что мы хотим удалить все строки со значением NaN:

Пример

health_data.dropna(axis=0,inplace=True)

print(health_data)

Результатом является набор данных без строк NaN:

Очищенные данные

Категории данных

Для анализа данных нам также необходимо знать типы данных, с которыми мы имеем дело.

Данные можно разделить на три основные категории:

  1. Числовой — содержит числовые значения. Можно разделить на две категории:
    • Дискретный: Числа считаются «целыми». Пример: Вы не можете тренироваться 2,5 занятия, это либо 2, либо 3
    • Непрерывный: Числа могут иметь бесконечную точность. Например, вы можете спать 7 часов 30 минут и 20 секунд или 7,533 часа.
  2. Категориальный — содержит значения, которые нельзя сравнивать друг с другом. Пример: цвет или тип тренировки
  3. Порядковый номер — содержит категориальные данные, которые можно сравнивать друг с другом. Пример: школьные оценки, где A лучше, чем B, и так далее.

Зная тип ваших данных, вы сможете узнать, какую технику использовать при их анализе.


Типы данных

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

Пример

print(health_data.info())

Результат:

Тип данных float и объект

Мы видим, что этот набор данных имеет два разных типа данных:

  • Поплавок64
  • Объект

Здесь мы не можем использовать объекты для вычислений и анализа. Мы должны преобразовать объект типа в float64 (float64 — это десятичное число в Python).

Мы можем использовать astype()функцию для преобразования данных в float64.

В следующем примере «Average_Pulse» и «Max_Pulse» преобразуются в данные типа float64 (другие переменные уже имеют тип данных float64):

Пример

health_data["Average_Pulse"] = health_data['Average_Pulse'].astype(float)
health_data["Max_Pulse"] = health_data["Max_Pulse"].astype(float)

print (health_data.info())

Результат:

Тип данных с плавающей запятой

Теперь в наборе данных есть только типы данных float64.


Анализ данных

Когда мы очистили набор данных, мы можем начать анализ данных.

Мы можем использовать describe()функцию в Python для суммирования данных:

Пример

print(health_data.describe())

Результат:

  Продолжительность Средний_пульс Max_Pulse Calorie_Burnage Часы_Работы Часы_Сна
Считать 10,0 10,0 10,0 10,0 10,0 10,0
Значит 51,0 102,5 137,0 285,0 6,6 7,5
стандарт 10.49 15,4 11.35 30.28 3,63 0,53
Мин. 30,0 80,0 120,0 240,0 0,0 7,0
25% 45,0 91,25 130,0 262,5 7,0 7,0
50% 52,5 102,5 140,0 285,0 8,0 7,5
75% 60,0 113,75 145,0 307,5 8,0 8,0
Максимум 60,0 125,0 150,0 330,0 10,0 8,0
  • Count — подсчитывает количество наблюдений
  • Среднее - среднее значение
  • Std — стандартное отклонение (поясняется в главе о статистике)
  • Мин . - наименьшее значение
  • 25% , 50% и 75% являются процентилями (объяснено в главе статистики)
  • Макс . - максимальное значение