Pandas DataFrame dtypes — это встроенное свойство, которое возвращает типы данных столбца DataFrame. Когда вы проводите анализ данных, важно убедиться, что вы используете правильные типы данных; в противном случае можно получить неожиданные результаты или ошибки.
В какой-то момент процесса анализа данных вам потребуется явно преобразовать данные из одного типа в другой. В этом посте будут обсуждаться основные типы данных Pandas (иначе dtypes), как они сопоставляются с типами данных python и numpy.
Синтаксис
|
1 |
DataFrame.dtypes |
Возвращаемое значение
Атрибут Pandas DataFrame.dtypes возвращает dtypes в DataFrame.
Свойство dtypes возвращает серию с типом данных каждого столбца.
Пример dtypes в Pandas
Тип данных — это, по сути, внутренняя конструкция языка программирования, которая используется для понимания того, как хранить данные и управлять ими. Например, программа должна знать, что вы можете сложить два числа, например 5 + 5, чтобы получить 10. Или, если у вас есть две строки, такие как «приложение» и «дивиденд», вы можете объединить (сложить) их вместе, чтобы получить «аппдивиденд».
См. следующий код.
|
1 2 3 4 5 6 7 8 |
import pandas as pd dict = {'phone': ['Samsung S20', 'iPhone 11', 'Reliance Jio'], 'price': [1000, 1100, 100]} dfA = pd.DataFrame(dict) print('The Datatype of DataFrame is: ') print(dfA.dtypes) |
Выход:
|
1 2 3 4 |
The Datatype of DataFrame is: phone object price int64 dtype: object |
Как мы видим в выводе, атрибут DataFrame.dtypes успешно возвратил типы данных каждого столбца в данном DataFrame.
Проверка типа данных NaN
Давайте проверим тип данных NaN в Pandas. См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 |
import pandas as pd import numpy as np dict = {'phone': ['Samsung S20', 'iPhone 11', 'Reliance Jio'], 'price': [1000, 1100, 100], 'discount': [np.nan, np.nan, np.nan]} dfA = pd.DataFrame(dict) print('The Datatype of DataFrame is: ') print(dfA.dtypes) |
Выход:
|
1 2 3 4 5 |
The Datatype of DataFrame is: phone object price int64 discount float64 dtype: object |
Значения Pandas NaN возвращают тип данных Float.
Давайте добавим еще один столбец с именем profitDate и посмотрим на результат.
|
1 2 3 4 5 6 7 8 9 10 11 |
import pandas as pd import numpy as np dict = {'phone': ['Samsung S20', 'iPhone 11', 'Reliance Jio'], 'price': [1000, 1100, 100], 'discount': [np.nan, np.nan, np.nan], 'arrivalDate': [pd.Timestamp('20180310'), pd.Timestamp('20190310'), pd.Timestamp('20140310')]} dfA = pd.DataFrame(dict) print('The Datatype of DataFrame is: ') print(dfA.dtypes) |
Выход:
|
1 2 3 4 5 6 |
The Datatype of DataFrame is: phone object price int64 discount float64 arrivalDate datetime64[ns] dtype: object |
В нашем примере dtype прибытияDate — это datetime64 в наносекундах.
Сопоставление dtype Pandas
| Pandas
dtype |
Тип Python | Numpy тип | Применение |
|---|---|---|---|
| object | str or mixed | string_, unicode_, смешанные типы | Текст или смешанные числовые и нечисловые значения |
| int64 | int | int_, int8, int16, int32, int64, uint8, uint16, uint32, uint64 | Целые числа |
| float64 | float | float_, float16, float32, float64 | Числа с плавающей запятой |
| bool | bool | bool_ | True/False значения |
| datetime64 | нет данных | datetime64[ns] | Значения даты и времени |
| timedelta[ns] | нет данных | нет данных | Различия между двумя датами. |
| category | нет данных | нет данных | Конечный список текстовых значений |
Из приведенной выше таблицы видно, что тип данных String определяется как Object в Pandas и еще три типа в библиотеке Numpy. Таким образом, определение одного типа данных отличается в разных библиотеках.
По большей части вам не нужно беспокоиться о проверке, следует ли пытаться явно принудить тип Pandas к соответствующему типу Numpy.
В большинстве случаев будет работать использование типов Pandas по умолчанию int64 и float64. Единственная причина, по которой я включил приведенную выше таблицу, заключается в том, что иногда вы могли видеть, что типы Numpy всплывают в Интернете или в вашем анализе.
Pandas DataFrame info()
Функция df.info() выводит краткую сводку DataFrame и информацию о DataFrame, включая тип dtype индекса и dtype столбца, ненулевые значения и использование памяти.
См. следующий код.
|
1 2 3 4 5 6 7 8 9 10 11 |
import pandas as pd import numpy as np dict = {'phone': ['Samsung S20', 'iPhone 11', 'Reliance Jio'], 'price': [1000, 1100, 100], 'discount': [np.nan, np.nan, np.nan], 'arrivalDate': [pd.Timestamp('20200311'), pd.Timestamp('20190310'), pd.Timestamp('20140321')]} dfA = pd.DataFrame(dict) print('The Info of DataFrame is: ') print(dfA.info()) |
Выход:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
The Info of DataFrame is: <class 'pandas.core.frame.DataFrame'> RangeIndex: 3 entries, 0 to 2 Data columns(total 4 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 phone 3 non-null object 1 price 3 non-null int64 2 discount 0 non-null float64 3 arrivalDate 3 non-null datetime64[ns] dtypes: datetime64[ns](1), float64(1), int64(1), object(1) memory usage: 224.0+ bytes None |
Функция info() дает нам представление о RangeIndex, записях, dtypes и использовании памяти.
Заключение

Типы данных — это одна из тех конструкций, о которых вам все равно, пока вы не получите ошибку или непредвиденные результаты, которые приведут к сбою вашей программы. Это также одна из первых задач, которую вы должны проверить после загрузки новых данных в Pandas для дальнейшего анализа.
Атрибут Pandas DataFrame.dtypes может определить тип данных(dtype) каждого столбца в данном DataFrame.
