Здається, 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']