Ссылки:
Описание
В этом уроке:
- Создаем категориальные переменные
- Бины
- Сортировка
- Переименование категорий
- Удаление категорий
Решение
Импорт нужных модулей.
import numpy as np
import pandas as pd
import datetime
from datetime import datetime, date
Создание категорий из списка
# Создаем из списка
education = ["bachelor's degree",
"some college",
"master's degree",
"associate's degree",
"some college",
"associate's degree",
"some college",
"some college",
"high school",
"high school",
"associate's degree",
"associate's degree",
"high school",
"some college",
"master's degree",
"some high school",
"high school",
"some high school",
"master's degree",
"associate's degree"]
education_cat = pd.Categorical(education)
education_cat
Посмотрим получившиеся категории.
# Посмотреть категории
education_cat.categories
У каждой категории есть свой числовой код.
# Посмотреть коды категорий
education_cat.codes
Явное указание категорий
Исходный список будет тот же.
# Создадим категории
education_cat_2 = pd.Categorical(education,
categories=["some high school",
"high school",
"some college",
"bachelor's degree",
"associate's degree",
"master's degree"])
Создаем категориальную переменную из Series
# Указываем тип данных
education_cat_series = pd.Series(education,
dtype='category')
education_cat_series[:4]
То же самое, но с помощью метода astype.
# С помощью .astype()
education_cat_series_2 = pd.Series(education)
education_cat_series_2 = education_cat_series_2.astype('category')
education_cat_series_2[:4]
Индекс категориальной переменной.
# Индекс категориальной переменной
education_cat_series_2.cat.categories
Бины
Сначала импортируем данные.
# Импорт данных
height = pd.read_csv('height.csv',
usecols=['Rank', 'Country Name', 'Male Height in Cm'])
height[:4]
Переименуем столбцы для удобства.
# Переименуем столбцы
height.columns = ['rank', 'country', 'male_height_cm']
Создаем бины.
# Столбец с бинами
height['bin'] = pd.cut(height['male_height_cm'],
range(160, 185, 1))
Группируем с агрегированием и создаем столбиковый график.
# Группировка с агрегированием
height.groupby('bin').count()['country'].plot(kind='barh',
figsize=(4,8))
Упорядоченные категориальные переменные
Порядок нам говорит о том насколько высоко образование.
# Создаем упорядоченные категории
# Порядок важен для определения высоты образования
ed_cats = ["some high school",
"high school",
"some college",
"bachelor's degree",
"associate's degree",
"master's degree"]
ed_categorical_asc = pd.Categorical(education,
categories=ed_cats,
ordered=True)
ed_categorical_asc
Создадим такую же переменную, но в обратном порядке.
# Такая же переменная, но в обратном порядке. Сами категории сохраняют верный порядок
ed_categorical_desc = pd.Categorical(education[::-1],
categories=ed_cats,
ordered=True)
ed_categorical_desc
Сравним эти переменные. Они не равны, потому что порядок разный.
# Сравним эти 2 переменные. У них одинаковые значения, но в разном порядке
ed_categorical_asc == ed_categorical_desc
Переименование категорий
Если мы переименуем категории, то и значения категориальной переменной изменятся.
# Переименуем категории, а вместе с ними и значения
ed_categorical_asc.categories = ['Неоконченная школа',
'Школа',
'Неоконченное высшее',
'Бакалавр',
'Специалист',
'Магистр']
ed_categorical_asc
Переименуем только одну категорию.
ed_categorical_desc = ed_categorical_desc.rename_categories({'some high school': 'Неоконченное высшее'})
ed_categorical_desc
Добавление и удаление категорий
Добавление категорий.
# Добавим категорию
ed_categorical_asc = ed_categorical_asc.add_categories(['Кандидат наук', 'Доктор наук'])
ed_categorical_asc
Удалим категорию.
# Удалим категории
ed_categorical_asc = ed_categorical_asc.remove_categories(['Доктор наук'])
ed_categorical_asc
Удаление неиспользуемых категорий.
# Удаление неиспользуемых категорий
ed_categorical_asc = ed_categorical_asc.remove_unused_categories()
ed_categorical_asc
Указать категории методом .set_categories
education_s = pd.Series(education,
dtype='category')
education_s = education_s.cat.set_categories(["some high school",
"high school",
"some college",
"bachelor's degree",
"associate's degree",
"master's degree"])
education_s
Примененные функции
- pandas.Categorical
- pandas.DataFrame.sort_values
- pandas.Series
- pandas.DataFrame.astype
- pandas.read_csv
- pandas.Series.min
- pandas.Series.max
- pandas.cut
- pandas.Series.isna
- pandas.DataFrame.groupby
- sum
- pandas.DataFrame.plot
- display
- type
- pandas.Series.cat.rename_categories
- pandas.Series.cat.add_categories
- pandas.Series.cat.remove_categories
- pandas.Series.cat.remove_unused_categories
- pandas.Series.cat.set_categories
Курс Pandas Базовый
Номер урока | Урок | Описание |
---|---|---|
1 | Pandas Базовый №1. Создание DataFrame и запись в CSV | Познакомимся с объектом DataFrame. Научимся его создавать двумя разными способами и научимся записывать его в файл. |
2 | Pandas Базовый №2. Создание DataFrame 2 | Изучим еще несколько способов создания объекта DataFrame. В этом уроке мы создадим DataFrame из массива numpy, Series, словаря Series. |
3 | Pandas Базовый №3. Отбор строк и столбцов, Размерность, Импорт CSV | Получить информацию о размере DataFrame, отбор строк и столбцов, индексация. |
4 | Pandas Базовый №4. Операции со столбцами DataFrame | Операции со столбцами в Pandas. Переименование столбцов, добавление новых столбцов, изменить существующий столбец, удаление столбцов. |
5 | Pandas Базовый №5. Операции со строками | Объединение по вертикали методами append и concat, Создание строк вручную, Удаление строк методом drop, Фильтрация строк условием или срезом. |
6 | Pandas Базовый №6. Индексы | Зачем нужны индексы, Как задать индекс, Как пользоваться индексами. |
7 | Pandas Базовый №7. Категории | Что такое категориальные переменные. |