В этом руководстве мы рассмотрим типы данных и пропущенные значения.

Мы узнаем, как исследовать типы данных в DataFrame или Series и как находить и заменять записи.

Типы данных :

Тип данных для столбца в DataFrame или Series известен как dtype.

Вы можете использовать свойство dtype для получения типа определенного столбца. Например, мы можем получить dtype столбца price в reviews DataFrame:

reviews.price.dtype

В качестве альтернативы свойство dtypes возвращает dtype из каждого столбца в DataFrame:

reviews.dtypes

Типы данных - это способ узнать, как панды хранят данные внутри, например, float64 означает, что он использует 64-битное число с плавающей запятой; Вместо этого int64 означает целое число аналогичного размера и так далее.

Можно преобразовать столбец одного типа в другой, если такое преобразование имеет смысл, с помощью функции astype(). Например, мы можем преобразовать столбец points из существующего типа данных int64 в тип данных float64:

reviews.points.astype('float64')

Отсутствующие данные:

Записям с отсутствующими значениями присваивается значение NaN, сокращение от «Не число». По техническим причинам эти значения NaN всегда относятся к типу float64 dtype.

Pandas предоставляет некоторые методы, специфичные для отсутствующих данных. Чтобы выбрать NaN записей, вы можете использовать pd.isnull() (или его аналог pd.notnull()). Это предназначено для использования таким образом:

reviews[pd.isnull(reviews.country)]

Замена отсутствующих значений — обычная операция, особенно перед применением модели машинного обучения к набору данных. Pandas предоставляет действительно удобный метод для решения этой проблемы: fillna(). fillna() предоставляет несколько различных стратегий для смягчения таких данных. Например, мы можем просто заменить каждое NaN на "Unknown":

reviews.region_2.fillna("Unknown")

У нас также может быть ненулевое значение, которое мы хотели бы заменить. Например, предположим, что с тех пор, как этот набор данных был опубликован, обозреватель Керин О’Киф изменила свой дескриптор в Твиттере с @kerinokeefe на @kerino. Один из способов отразить это в наборе данных — использовать метод replace():

reviews.taster_twitter_handle.replace("@kerinokeefe", "@kerino")

Здесь стоит упомянуть метод replace(), потому что он удобен для замены отсутствующих данных, которым присвоено какое-то контрольное значение в наборе данных: такие вещи, как "Unknown", "Undisclosed", "Invalid" и так далее.