Mam ramkę danych w pandach i próbuję dowiedzieć się, jakie są typy jej wartości. Nie jestem pewien, jaki jest typ kolumny 'Test'. Jednak kiedy biegnę myFrame['Test'].dtype, dostaję;
Pierwszy znak określa rodzaj danych, a pozostałe znaki określają liczbę bajtów na element, z wyjątkiem Unicode, gdzie jest on interpretowany jako liczba znaków. Rozmiar pozycji musi odpowiadać istniejącemu typowi, w przeciwnym razie zostanie zgłoszony błąd. Obsługiwane rodzaje należą do istniejącego typu lub zostanie zgłoszony błąd. Obsługiwane rodzaje to:
'b' boolean
'i'(signed) integer
'u' unsigned integer
'f' floating-point
'c' complex-floating point
'O'(Python) objects
'S','a'(byte-)string
'U'Unicode'V' raw data (void)
Inna odpowiedź pomaga w razie potrzeby sprawdzić types.
Możesz zinterpretować ostatni jako obiekt Pandy dtype('O')lub Pandy, który jest łańcuchem typu Python, a to odpowiada Numpy string_lub unicode_typom.
Pandas dtype Python type NumPy type Usage
object str string_, unicode_ Text
Tak jak Don Kichot jest na dupie, Pandas jest na Numpy, a Numpy rozumie podstawową architekturę twojego systemu i używa do tego klasy numpy.dtype.
Typ danych obiekt jest instancją numpy.dtypeklasy, które zrozumieć dane wpisać bardziej precyzyjny w tym:
Typ danych (liczba całkowita, zmiennoprzecinkowa, obiekt Pythona itp.)
Rozmiar danych (ile bajtów zawiera np. Liczba całkowita)
Kolejność bajtów danych (little-endian lub big-endian)
Jeśli typ danych ma strukturę, agregacja innych typów danych (np. Opisująca element tablicy składający się z liczby całkowitej i zmiennoprzecinkowej)
Jakie są nazwy „pól” konstrukcji
Jaki jest typ danych w każdym polu
Którą część bloku pamięci zajmuje każde pole
Jeśli typ danych jest tablicą podrzędną, jaki jest jej kształt i typ danych
W kontekście tego pytania dtypenależy zarówno do pands, jak i numpy iw szczególności dtype('O')oznacza, że oczekujemy ciągu.
Oto kod do testowania wraz z wyjaśnieniem: Jeśli mamy zbiór danych jako słownik
import pandas as pd
import numpy as np
from pandas importTimestamp
data={'id':{0:1,1:2,2:3,3:4,4:5},'date':{0:Timestamp('2018-12-12 00:00:00'),1:Timestamp('2018-12-12 00:00:00'),2:Timestamp('2018-12-12 00:00:00'),3:Timestamp('2018-12-12 00:00:00'),4:Timestamp('2018-12-12 00:00:00')},'role':{0:'Support',1:'Marketing',2:'Business Development',3:'Sales',4:'Engineering'},'num':{0:123,1:234,2:345,3:456,4:567},'fnum':{0:3.14,1:2.14,2:-0.14,3:41.3,4:3.14}}
df = pd.DataFrame.from_dict(data)#now we have a dataframeprint(df)print(df.dtypes)
Ostatnie wiersze zbadają ramkę danych i zanotują wynik:
id date role num fnum
012018-12-12Support1233.14122018-12-12Marketing2342.14232018-12-12BusinessDevelopment345-0.14342018-12-12Sales45641.30452018-12-12Engineering5673.14
id int64
date datetime64[ns]
role object
num int64
fnum float64
dtype: object
Wszystkie inne dtypes
df.iloc[1,:]= np.nan
df.iloc[2,:]=None
Ale jeśli spróbujemy ustawić np.nanlub Nonenie wpłynie to na oryginalny typ kolumny. Wynik będzie taki:
print(df)print(df.dtypes)
id date role num fnum
01.02018-12-12Support123.03.141NaNNaTNaNNaNNaN2NaNNaTNoneNaNNaN34.02018-12-12Sales456.041.3045.02018-12-12Engineering567.03.14
id float64
date datetime64[ns]
role object
num float64
fnum float64
dtype: object
Więc np.nanlub Nonenie zmieni kolumn dtype, chyba że ustawimy wszystkie wiersze kolumn na np.nanlub None. W takim przypadku kolumna stanie się odpowiednio float64lub object.
Możesz też spróbować ustawić pojedyncze wiersze:
df.iloc[3,:]=0# will convert datetime to object only
df.iloc[4,:]=''# will convert all columns to object
Warto zauważyć, że jeśli ustawimy ciąg wewnątrz kolumny niebędącej ciągiem znaków, stanie się on ciągiem lub obiektem dtype.
#Loading a csv file as a dataframeimport pandas as pd
train_df = pd.read_csv('train.csv')
col_name ='Name of Employee'#Checking the datatype of column name
train_df[col_name].dtype
#Instead try printing the same thingprint train_df[col_name].dtype
pandas
swobodnie używaobject
dtype, gdy kolumny zawierają wartości mieszane (łańcuchy, liczby, nan).Odpowiedzi:
To znaczy:
Źródło .
Inna odpowiedź pomaga w razie potrzeby sprawdzić
type
s.źródło
Kiedy widzisz
dtype('O')
wewnątrz dataframe, oznacza to ciąg Pandas.Co to jest
dtype
?Coś, co należy do
pandas
lubnumpy
, lub oba, czy coś innego? Jeśli zbadamy kod pandy:Wyświetli się w ten sposób:
Możesz zinterpretować ostatni jako obiekt Pandy
dtype('O')
lub Pandy, który jest łańcuchem typu Python, a to odpowiada Numpystring_
lubunicode_
typom.Tak jak Don Kichot jest na dupie, Pandas jest na Numpy, a Numpy rozumie podstawową architekturę twojego systemu i używa do tego klasy
numpy.dtype
.Typ danych obiekt jest instancją
numpy.dtype
klasy, które zrozumieć dane wpisać bardziej precyzyjny w tym:W kontekście tego pytania
dtype
należy zarówno do pands, jak i numpy iw szczególnościdtype('O')
oznacza, że oczekujemy ciągu.Oto kod do testowania wraz z wyjaśnieniem: Jeśli mamy zbiór danych jako słownik
Ostatnie wiersze zbadają ramkę danych i zanotują wynik:
Wszystkie inne
dtypes
Ale jeśli spróbujemy ustawić
np.nan
lubNone
nie wpłynie to na oryginalny typ kolumny. Wynik będzie taki:Więc
np.nan
lubNone
nie zmieni kolumndtype
, chyba że ustawimy wszystkie wiersze kolumn nanp.nan
lubNone
. W takim przypadku kolumna stanie się odpowiedniofloat64
lubobject
.Możesz też spróbować ustawić pojedyncze wiersze:
Warto zauważyć, że jeśli ustawimy ciąg wewnątrz kolumny niebędącej ciągiem znaków, stanie się on ciągiem lub obiektem
dtype
.źródło
Oznacza „obiekt Pythona”, tj. Nie jest to jeden z wbudowanych typów skalarnych obsługiwanych przez numpy.
źródło
„O” oznacza obiekt .
Pierwsza linia zwraca:
dtype('O')
Wiersz z instrukcją print zwraca:
object
źródło