Здається, dtype працює лише для pandas.DataFrame.Series, так? Чи існує функція відображення типів даних усіх стовпців одночасно?
Здається, dtype працює лише для pandas.DataFrame.Series, так? Чи існує функція відображення типів даних усіх стовпців одночасно?
Відповіді:
Сингулярна форма dtype
використовуються для перевірки типу даних для одного стовпчика. І форма множиниdtypes
призначена для кадру даних, який повертає типи даних для всіх стовпців. По суті:
Для однієї колонки :
dataframe.column.dtype
Для всіх стовпців :
dataframe.dtypes
Приклад :
import pandas as pd
df = pd.DataFrame({'A': [1,2,3], 'B': [True, False, False], 'C': ['a', 'b', 'c']})
df.A.dtype
# dtype('int64')
df.B.dtype
# dtype('bool')
df.C.dtype
# dtype('O')
df.dtypes
#A int64
#B bool
#C object
#dtype: object
pandas
документацію, де згадується: " Pandas використовує об'єкт dtype для зберігання рядків "
df.C.dtype
повертається dtype('O')
, але df.C.dtype=='object'
це правда.
Припустимо, df є pandas DataFrame, щоб отримати кількість ненульових значень і типів даних усіх стовпців одночасно:
df.info()
Щоб зробити ще один крок далі, я припускаю, що ви хочете щось зробити з цими dtypes.
df.dtypes.to_dict()
стане в нагоді.
my_type = 'float64'
dtypes = dataframe.dtypes.to_dict()
for col_nam, typ in dtypes.items():
if (typ != my_type):
raise ValueError(f"Yikes - `dataframe['{col_name}'].dtype == {typ}` not {my_type}")
Ви побачите, що Pandas по-справжньому добре порівнював класи NumPy та надані користувачем рядки. Наприклад: навіть такі речі, як 'double' == dataframe['col_name'].dtype
вдасться, коли .dtype==np.float64
.
df.dtypes[df.dtypes != 'int64'][df.dtypes != 'float64']