В этом руководстве мы рассмотрим типы данных и пропущенные значения.
Мы узнаем, как исследовать типы данных в 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"
и так далее.