Особенности категориальных данных

Разведочный анализ данных на Python

George Boorman

Curriculum Manager, DataCamp

Зачем выполнять разведочный анализ данных?

  • Выявление закономерностей и связей

 

 

  • Формулировка вопросов и гипотез

 

 

  • Подготовка данных для машинного обучения

Вопросительный знак в красном неоновом свете

1 Image credit: https://unsplash.com/@simonesecci
Разведочный анализ данных на Python

Репрезентативные данные

  • Выборка представляет генеральную совокупность

Например:

  • Образование и доходы в США
    • Данные из Франции не подходят

Флаг США

Флаг Франции

1 Image credits: https://unsplash.com/@cristina_glebova; https://unsplash.com/@nimbus_vulpis
Разведочный анализ данных на Python

Категориальные классы

  • Классы = метки

 

  • Опрос об отношении к браку
    • Семейное положение
      • Не в браке
      • В браке
      • Разведён/разведена
Разведочный анализ данных на Python

Дисбаланс классов

Столбчатая диаграмма с количеством по семейному положению: 700 разведённых, 250 одиноких, 50 в браке

Разведочный анализ данных на Python

Частота классов

print(planes["Destination"].value_counts())
Cochin       4391
Banglore     2773
Delhi        1219
New Delhi     888
Hyderabad     673
Kolkata       369
Name: Destination, dtype: int64
Разведочный анализ данных на Python

Относительная частота классов

  • 40% внутренних рейсов по Индии летят в Дели
planes["Destination"].value_counts(normalize=True)
Cochin       0.425773
Banglore     0.268884
Delhi        0.118200
New Delhi    0.086105
Hyderabad    0.065257
Kolkata      0.035780
Name: Destination, dtype: float64
  • Репрезентативна ли наша выборка для генеральной совокупности (внутренние рейсы по Индии)?
Разведочный анализ данных на Python

Перекрёстная таблица

Вызов pd.crosstab

pd.crosstab(
Разведочный анализ данных на Python

Выбор индекса

Выбор столбца для использования в качестве индекса

pd.crosstab(planes["Source"],
Разведочный анализ данных на Python

Выбор столбцов

Выбор столбца

pd.crosstab(planes["Source"], planes["Destination"])
Разведочный анализ данных на Python

Перекрёстная таблица

Destination  Banglore  Cochin  Delhi  Hyderabad  Kolkata  New Delhi
Source                                                             
Banglore            0       0   1199          0        0        868
Chennai             0       0      0          0      364          0
Delhi               0    4318      0          0        0          0
Kolkata          2720       0      0          0        0          0
Mumbai              0       0      0        662        0          0
Разведочный анализ данных на Python

Расширение перекрёстной таблицы

Source Destination Median Price (IDR)
Banglore Delhi 4232.21
Banglore New Delhi 12114.56
Chennai Kolkata 3859.76
Delhi Cochin 9987.63
Kolkata Banglore 9654.21
Mumbai Hyderabad 3431.97
Разведочный анализ данных на Python

Агрегированные значения с pd.crosstab()

pd.crosstab(planes["Source"], planes["Destination"],

values=planes["Price"], aggfunc="median")
Destination  Banglore   Cochin   Delhi  Hyderabad  Kolkata  New Delhi
Source                                                               
Banglore          NaN      NaN  4823.0        NaN      NaN    10976.5
Chennai           NaN      NaN     NaN        NaN   3850.0        NaN
Delhi             NaN  10262.0     NaN        NaN      NaN        NaN
Kolkata        9345.0      NaN     NaN        NaN      NaN        NaN
Mumbai            NaN      NaN     NaN     3342.0      NaN        NaN
Разведочный анализ данных на Python

Сравнение выборки с генеральной совокупностью

Source Destination Median Price (IDR) Median Price (dataset)
Banglore Delhi 4232.21 4823.0
Banglore New Delhi 12114.56 10976.50
Chennai Kolkata 3859.76 3850.0
Delhi Cochin 9987.63 10260.0
Kolkata Banglore 9654.21 9345.0
Mumbai Hyderabad 3431.97 3342.0
Разведочный анализ данных на Python

Давайте потренируемся!

Разведочный анализ данных на Python

Preparing Video For Download...