Найти в Дзене

Готовим таблицу для работы с данными. Изучение и подготовка таблицы.

Здесь мы рассмотрим самые простые способы понимание работы с пропусками и закономерностями в таблицы. Если только начинаешь, то это прям отличный гайд. Весь код будет в конце, используйте с умом. Небольшой словарик (если на опыте, то листай дальше): Тут набор функций я всегда применяю один и тот же: df = pandas.read_csv("путь_к_файлу") - Применяем для записи таблицы в переменную (по ссылке отдельная статья про эту функцию. df.head() - смотрим 5 первых строк в таблице df.info() - смотрим краткую информацию о таблицы df.isna().sum() - проверяем количество пропусков в таблицы. df.describe() - Проверяем краткую сводку по столбцам с количественными переменными (с числами в общем). Знаете как узнать максимальные, средние, минимальные значения и не только. Верно .describe() - Выводит количество значений ("count") имеющихся в данных, максимально ("min"), минимальное ("max") и среднее ("mean") значения, стандартное отклонение ("std"), медианное значение("50%") и квартили ("25%", "75%"), про
Оглавление

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

Небольшой словарик (если на опыте, то листай дальше):

  • df - dataframe - чаще всего я так называю таблицу с данными
  • .метод() - перед методом всегда ставиться точка, а сразу после без пробелов две скобки

Всегда смотрим что у нас есть в таблице.

Тут набор функций я всегда применяю один и тот же:

df = pandas.read_csv("путь_к_файлу") - Применяем для записи таблицы в переменную (по ссылке отдельная статья про эту функцию.
df.head() - смотрим 5 первых строк в таблице
df.info() - смотрим краткую информацию о таблицы
df.isna().sum() - проверяем количество пропусков в таблицы.
df.describe() - Проверяем краткую сводку по столбцам с количественными переменными (с числами в общем).

На что обращать внимание?

  • Очень важно после вызова метода head(если сюда вписать число, например 15, то он выведет 15 строк) посмотреть примерно как выглядит ваша таблица. Смотрим какая индексация (если не ровная или там написаны буквы, то работать с ней становиться не удобно), как записаны название столбцов (тут также как и с индексами, написаны не ровно, есть пробелы, или в середине слов есть большие буквы, слишком длинные названия и др., нужно исправить, потом запутаетесь и даже не сможете понять откуда ноги растут). Тут еще можно рассказать, но лучше пойдем дальше.
  • .info() - тут прям серьезно нужно почитать. Сразу можно увидеть сколько столбцов и строк в таблице, сколько всего НЕНУЛЕВЫХ значений, какого типа данные в каждом столбце. Это прям топовый инструмент, который использую всегда.
-2
  • Еще конечно надо узнать сколько пропусков присутствует у нас в нашей табличке. .isna() - ставит true если есть пропуски, а true приравнивается к 1, соответственно их можно посчитать методом .sum(), и сразу знаем сколько в столбцах у нас пропусков.
-3

Знаете как узнать максимальные, средние, минимальные значения и не только. Верно .describe() - Выводит количество значений ("count") имеющихся в данных, максимально ("min"), минимальное ("max") и среднее ("mean") значения, стандартное отклонение ("std"), медианное значение("50%") и квартили ("25%", "75%"), пропоследние знайте, что об этом в других частях.

-4

Как с этим работать?

1. Изменяем наименование колонок и индексацию:
Покажу как изменить колонки через цикл, все сразу без цикла и измениние отдельной колонки.

Измениние в цикле.
Измениние в цикле.

Важно! Цикл переводит все буквы с верхним регистром в нижний. Если вам нужно изменить отдельный наименования, то воспользуйтесь методом .rename():

Изменение с помощью функции .rename()
Изменение с помощью функции .rename()

Или можно просто переименовать все столбцы с помощью .columns:

С помощью .columns
С помощью .columns

С индексацией у меня все в порядке, но если с ней у вас проблемы, то используйте в основном .reset_index(drop = True), Главное перезаписать таблицу, чтобы новые индексы встали. "drop = True" говорит о том, что старые индексы удаляются:

Использование метода .reset_index()
Использование метода .reset_index()

2. Изменение типа данных. Внимательно посмотрите на тип данных указанных в колонке production_year. Там указаны тип данных float (число с плавающей точкой). Заменим на "int":

При попытки изменить данные с помощью метода .astype() у нас выходит ошибка: "IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer". Она возникает тогда, когда в столбце присутствуют пропуски. для решения этой проблемы сначала избавимся от пропусков.

С пропусками мы поработаем в другом уроке, главное важно понимать, причину возникновения. Весь разбор пропусков в столбце "production_year" я разобрал в другой статье. Сейчас скажу только тезисно что:

  1. Рассмотрел графики, показывающие количество пропусков и их корреляцию между столбцами;
  2. Рассмотрел корреляцию пропусков с брендами автомобилей, их пробегом и стоимостью
  3. Остановился на том, что пропуски заменю исходя из бренда и пробегом автомобиля.

Так как я уже заполнил пропуски, можно посмотреть как сработал наш метод astype():

Работа метода astype()
Работа метода astype()

Заключение

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

Вот ссылка на проект, можете поизучать на досуге если интересно.