Szukaj…


Uwagi

Ogólnie rzecz biorąc, Gotcha jest konstrukcją, która jest chociaż udokumentowana, ale nie intuicyjna. Gotchas generuje wyniki, których zwykle nie oczekuje się ze względu na jego sprzeczny z intuicją charakter.

Pakiet Pandas ma kilka gotch, które mogą pomylić kogoś, kto nie jest ich świadomy, a niektóre z nich są przedstawione na tej stronie dokumentacji.

Wykrywanie brakujących wartości za pomocą np.nan

Jeśli chcesz wykryć braki przy pomocy

df=pd.DataFrame({'col':[1,np.nan]})
df==np.nan

otrzymasz następujący wynik:

col
0    False
1    False

Wynika to z faktu, że porównanie brakującej wartości z czymkolwiek skutkuje False - zamiast tego powinieneś użyć

df=pd.DataFrame({'col':[1,np.nan]})   
df.isnull()

Co skutkuje w:

col
0    False
1    True

Liczba całkowita i NA

Pandy nie obsługują brakujących atrybutów typu liczba całkowita. Na przykład jeśli masz braki w kolumnie oceny:

df= pd.read_csv("data.csv", dtype={'grade': int}) 
error: Integer column has NA values

W takim przypadku powinieneś po prostu użyć liczb zmiennoprzecinkowych zamiast liczb całkowitych lub ustawić obiekt dtype.

Automatyczne wyrównanie danych (zachowanie oczekiwane w indeksie)

Jeśli chcesz dołączyć serię wartości [1,2] do kolumny ramki danych df, otrzymasz NaNs:

import pandas as pd

series=pd.Series([1,2])
df=pd.DataFrame(index=[3,4])
df['col']=series
df

   col
3    NaN
4    NaN

ponieważ ustawienie nowej kolumny automatycznie wyrównuje dane według indexe, a twoje wartości 1 i 2 uzyskałyby indeksy 0 i 1, a nie 3 i 4 jak w twojej ramce danych:

df=pd.DataFrame(index=[1,2])
df['col']=series
df

   col
1      2.0
2      NaN

Jeśli chcesz zignorować indeks, powinieneś ustawić .values na końcu:

df['col']=series.values

   col
3    1
4    2


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow