zählen Ich habe Daten, in denen ich die Nummer NaN
finden möchte, so dass, wenn es weniger als ein Schwellenwert ist, werde ich diese Spalten fallen lassen. Ich schaute, aber konnte keine Funktion dafür finden. es gibt value_counts
, aber es wäre langsam für mich, weil die meisten Werte eindeutig sind und ich nur NaN
zählen möchte.Wie die NaN-Werte in einer Spalte in Pandas DataFrame
Antwort
Sie konnten die Gesamtlänge von der count von nicht-nan Werte subtrahieren:
count_nan = len(df) - df.count()
Sie sollten es auf Ihre Daten Zeit. Für kleine Serie wurde eine 3fache Geschwindigkeit im Vergleich mit der isnull
Lösung.
Sie können die Methode isnull()
verwenden und dann die Summe der Nan-Werte zählen. Für eine Spalte:
In [1]: s = pd.Series([1,2,3, np.nan, np.nan])
In [4]: s.isnull().sum()
Out[4]: 2
für mehrere Spalten, es funktioniert auch:
In [5]: df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan]})
In [6]: df.isnull().sum()
Out[6]:
a 1
b 2
dtype: int64
@ user3799307: Sie sollten dies als Antwort akzeptieren. – hlin117
@ user3799307 ^^^^ – denvar
@ user379937 was sie sagten. Gibt es keinen anderen Weg, sagen Admin kann es akzeptieren? Ich habe es auf den ersten Blick verpasst und habe mit "value_counts" herumgespielt, bevor ich zurückkam. – josh
Da Pandas 0.14.1 mein Vorschlag here haben ein Schlüsselwort-Argument in der value_counts Methode umgesetzt wurde:
import pandas as pd
df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan]})
for col in df:
print df[col].value_counts(dropna=False)
2 1
1 1
NaN 1
dtype: int64
NaN 2
1 1
dtype: int64
Beste Antwort bis jetzt verwenden, es erlaubt auch andere Werttypen zu zählen. – gaborous
wenn Sie Jupyter Notebook verwenden, wie etwa ....
%%timeit
df.isnull().any().any()
oder
%timeit
df.isnull().values.sum()
oder gibt es irgendwo NaNs in den Daten, wenn ja, wo?
df.isnull().any()
Basierend auf den meisten Stimmen Antwort, die wir die fehlenden Werte in der Vorschau anzeigen und die% der fehlenden Werte in jeder Spalte eine Funktion, die uns einen Datenrahmen leicht definieren gibt:
def missing_values_table(df):
mis_val = df.isnull().sum()
mis_val_percent = 100 * df.isnull().sum()/len(df)
mis_val_table = pd.concat([mis_val, mis_val_percent], axis=1)
mis_val_table_ren_columns = mis_val_table.rename(
columns = {0 : 'Missing Values', 1 : '% of Total Values'})
mis_val_table_ren_columns = mis_val_table_ren_columns[
mis_val_table_ren_columns.iloc[:,1] != 0].sort_values(
'% of Total Values', ascending=False).round(1)
print ("Your selected dataframe has " + str(df.shape[1]) + " columns.\n"
"There are " + str(mis_val_table_ren_columns.shape[0]) +
" columns that have missing values.")
return mis_val_table_ren_columns
, wenn seine Zählung nur Nan Werte in einer Pandas Spalte hier ist ein schneller Weg
Verwendet die Lösung von @sushmit in meinem Code vorgeschlagen.
kann eine mögliche Variation des gleichen auch von nun an sein
colNullCnt = []
for z in range(len(df1.cols)):
colNullCnt.append([df1.cols[z], sum(pd.isnull(trainPd[df1.cols[z]]))])
Vorteil davon ist, dass es das Ergebnis für jede der Spalten in der df zurückgibt.
Sie können auf die Antwort value_counts Verfahren und Druckwerte von np.nan
s.value_counts(dropna = False)[np.nan]
Basis verwenden, die gegeben wurde und einige Verbesserungen dies ist mein Ansatz
def PercentageMissin(Dataset):
"""this function will return the percentage of missing values in a dataset """
if isinstance(Dataset,pd.DataFrame):
adict={} #a dictionary conatin keys columns names and values percentage of missin value in the columns
for col in Dataset.columns:
adict[col]=(np.count_nonzero(Dataset[col].isnull())*100)/len(Dataset[col])
return pd.DataFrame(adict,index=['% of missing'],columns=adict.keys())
else:
raise TypeError("can only be used with panda dataframe")
- 1. Füllen Sie die fehlenden Datumswerte in einer Pandas Dataframe Spalte
- 2. Anfügen Spalte Pandas Dataframe
- 3. erweitern Pandas Dataframe Spalte in mehrere Zeilen
- 4. Spalte zu Zeile in Pandas Dataframe
- 5. Konvertieren einer Spalte innerhalb Pandas Dataframe von Int in String
- 6. Speichern von Liste in einer Pandas DataFrame Spalte
- 7. Unbenannte Spalte Pandas Dataframe umbenennen
- 8. Verwenden von Split zum Füllen einer Spalte in Pandas Dataframe
- 9. Pandas, DataFrame: Teilen einer Spalte in mehrere Spalten
- 10. So aktualisieren Sie die DataFrame-Spalte in Pandas
- 11. Wie bekomme ich eine bestimmte DataFrame-Spalte in Pandas?
- 12. Kombinieren Sie Spalten in einem Pandas DataFrame mit einer Spalte von Listen in einem DataFrame
- 13. Wie man einzelnen Wert einer Pandas Dataframe Spalte verschiebt
- 14. Wie String-Wert aus der Spalte in Pandas Dataframe entfernen
- 15. Teilen einer Liste in einem Pandas DataFrame
- 16. Wie setze ich dtypes nach Spalte in Pandas DataFrame
- 17. Wie verschiebe ich eine Spalte in Pandas DataFrame
- 18. Dataframe PANDAS
- 19. Pandas Dataframe String-Spalte zu verkettetem Int
- 20. Wie bekomme ich alle Werte von einer Position in einem Tupel in einer Pandas-Dataframe-Spalte?
- 21. Pandas Dataframe Spalte aus einem Tupel
- 22. Convert Fall eines Pandas Dataframe Spalte
- 23. Wie ändert man dType einer Spalte in DataFrame?
- 24. Wie findet man die Ngram-Frequenz einer Spalte in einem Pandas-Dataframe?
- 25. entfernen Ende der Schnur Einträge in Pandas Dataframe Spalte
- 26. Pandas Split DataFrame von Spalte Wert
- 27. Sklearn GridSearchCV mit Pandas DataFrame Spalte
- 28. Konvertieren Pandas Dataframe Spalte zu R-Faktoren
- 29. Join entsprechende Spalte zu Dataframe Pandas
- 30. Anwenden von Großbuchstaben auf eine Spalte in Pandas Dataframe
der Tat ist es beste Zeit. Es hängt von der Größe des Rahmens ab, die ich denke, mit einem größeren Rahmen (3000 Reihen), die Verwendung von "isnull" ist schon zwei mal schneller als dies. – joris
Ich versuchte es in beiden Fällen in einer Situation, in der ich die Länge der Gruppe für eine große Gruppe zählte, wo die Gruppengrößen normalerweise <4 waren und joris 'df.isnull(). Sum() mindestens 20x schneller war. Das war mit 0,17,1. –