[Python] So extrahieren / löschen / konvertieren Sie eine Matrix mit fehlenden Werten (NaN)

[Python] So extrahieren / löschen / konvertieren Sie eine Matrix mit fehlenden Werten (NaN)

Wenn beim Lesen einer CSV- oder Excel-Datei eine leere Zelle vorhanden ist, wird diese als fehlender Wert (NaN) gelesen.

Eine Zusammenfassung zum Suchen, Löschen und Konvertieren einer Matrix, die diesen fehlenden Wert (NaN) enthält.


**Inhaltsverzeichnis**
  1. [Identifizierung von Elementen / Matrizen mit fehlenden Werten](# 1 Identifizierung von Elementmatrizen mit fehlenden Werten)
    1. isna()
      1. isna().all()
      2. isna().any()
      3. isna().all().any()
      4. isna().any().any()
    2. isnull()
  2. [Anzahl der fehlenden Werte zählen](# 2 Anzahl der fehlenden Werte zählen)
    1. isna().sum()
    2. isna().sum().sum()
    3. len() - count()
  3. [Fehlenden Wert löschen](# 3 Fehlenden Wert löschen)
  4. [Liste der Dropna-Optionen](Liste der Optionen für #dropna)
  5. [Alle fehlenden Wertematrix löschen](# 5 Alle fehlenden Wertematrix löschen)
  6. [Achse = 0 (weggelassen)](# Achse0 weggelassen) 2. axis=1 3. dropna(how='all').dropna(how='all', axis=1)
  7. [Löschen durch Angabe der Anzahl nicht fehlender Zellen](# 6 Löschen durch Angabe der Anzahl nicht fehlender Zellen)
    1. df.dropna(thresh=n)
    2. df.dropna(thresh=n, axis=1)
  8. [Geben Sie die Zeile / Spalte an, für die Sie NaN löschen möchten](Geben Sie die Matrix an, für die Sie # 7nan löschen möchten.)
    1. df.dropna(subset=['AAA', 'BBB'])
    2. df.dropna(subset=['aaa', 'bbb'], axis=1)
  9. [Löschen überschreiben zulassen](# 8 Löschen überschreiben zulassen)
  10. [Fehlenden Wert konvertieren](# 9 Fehlenden Wert konvertieren)
  11. [Gesamte Tabelle ersetzen](# Gesamte Tabelle ersetzen) 1. fillna('AAA')
  12. [Methodenoption](# 1-2-Methodenoption) 3. fillna(method='ffill') 4. fillna(method='ffill', axis=1) 5. fillna(method='bfill') 6. fillna(method='bfill', axis=1)
  13. [Geben Sie an, wie viele NaNs ersetzt werden sollen](# Geben Sie an, wie viele Nans ersetzt werden sollen) 1. fillna('AAA', limit=n) 2. fillna('AAA', limit=n, axis=1) 3. fillna(method='ffill', limit=n) 4. fillna(method='ffill', limit=n, axis=1)
  14. [Überschreiben zulassen](# Überschreiben zulassen)

## 1. 1. Identifizierung von Elementen / Matrizen mit fehlenden Werten **①isna()**  1-1. isna().all()  1-2. isna().any()  1-3. isna().all().any()  1-4. isna().any().any() **②isnull()**
** ▼ Verwendung ** - ** Elementidentifikation ** ist ** isna Methode **. - Um herauszufinden, ob ** alle ** einer Zeile oder Spalte NaN sind, kombinieren Sie die ** isna-Methode und die all-Methode **. - Um herauszufinden, ob das ** Element der Zeile oder Spalte ** NaN enthält, kombinieren Sie die ** isna-Methode und die any-Methode **. -Die isnull-Methode ist ein Alias für die ** isna-Methode ** (Alias). Die offizielle Seite verwendet hauptsächlich isna.
## Zu verwendende Originaldaten Lesen Sie die 6-mal-6-CSV-Datei wie unten gezeigt.

image.png

Enthält Zellen ohne eingegebene Werte oder leere Matrizen.

▼ [Referenz] Lesen Sie die Datei test.csv auf dem Desktop.

CSV-Datei lesen


import pandas as pd
df = pd.read_csv('~/desktop/test.csv')
df

Weitere Informationen zum Lesen von CSV-Dateien mit Python finden Sie weiter unten.

Lesen einer CSV-Datei Anwendung zum Lesen von CSV-Dateien


### Daten lesen (gespeichert in Variable df) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/d1656f44-8997-228f-ae49-1d46eb24da4c.png)

-Die leere Zelle wird zu "NaN". -Formelfehler "#REF!", "# DIV / 0!" Und "#NAME?" Werden nicht als fehlende Werte erkannt (so wie sie waren). ・ Die erste Zeile wird als Kopfzeile erkannt


①isna() Wird verwendet, um zu überprüfen, ob jedes Element NaN ist. Wenn es NaN ist, wird "True" zurückgegeben, andernfalls wird "False" zurückgegeben. (Bool-Typ: Boolescher Wert)

** 1-1. Zuordnung der gesamten Tabelle **

df.isna() └ "df": Daten mit einer Tabelle

Ordnen Sie die gesamte Tabelle zu


df.isna()

▼ Ausgabe image.png

NaN wird als "True" und andere als "False" angezeigt.

▼ Originaldaten image.png


** 1-2. Zuordnung nach bestimmten Zeilen, Spalten, Elementen ** Es ist auch möglich, eine bestimmte Matrix oder ein bestimmtes Element durch Angabe des Zielbereichs abzubilden.

pd.isna (angegebener Bereich) └ "pd.isna ()": pd wird zum Objekt


** ▼ Angegebene Spalte zuordnen **

Zugeordnete Spalte zuordnen


pd.isna(df['col1'])

#Ausgabe
0    False
1    False
2    False
3    False
4     True
5    False
Name: col1, dtype: bool

** ▼ Karte spezifizierte Linie **

Ordnen Sie die angegebene Linie zu


pd.isna(df['col1'])

#Ausgabe
0    False
1    False
2    False
3    False
4     True
5    False
Name: col1, dtype: bool

** ▼ Karte spezifizierte Linie **

Ordnen Sie die angegebene Linie zu


pd.isna(df.loc[[3]])

▽ Ausgabe image.png


** ▼ Mehrere Linien zuordnen **

Ordnen Sie die angegebene Linie zu


pd.isna(df[1:4])

▽ Ausgabe image.png


** ▼ Beurteilen Sie die angegebene Zelle **

Wenn Sie einen Wert in "()" von "pd.isna ()" eingeben, wird beurteilt, ob es sich um NaN handelt oder nicht. ⇒Geben Sie das Zellenelement ein.


** ① Beurteilen Sie die Zelle mit dem Zeilennamen "0" und dem Spaltennamen "col4" ** -Zellspezifikation: `df.loc [0, 'col4']`

Richterzelle (angegeben durch den Matrixnamen)


pd.isna(df.loc[0,'col4'])

#Ausgabe
#True

** ② Beurteilen Sie die Zelle mit der Zeilennummer "1" und der Spaltennummer "3" ** -Zellspezifikation: `df.iloc [1,3]`

Richterzelle (angegeben durch den Matrixnamen)


pd.isna(df.iloc[1,3])

#Ausgabe
#True

Es gibt verschiedene Möglichkeiten, den Bereich einer DataFrame-Tabelle anzugeben. Klicken Sie hier für Details


1-1. isna().all() Listen Sie Zeilen oder Spalten mit ** allen NaN ** -Inhalten auf.

Richtig, falls zutreffend. Falsch, falls nicht zutreffend.

Ob es sich um eine Zeile oder eine Spalte handelt, wird durch das Vorhandensein oder Fehlen der Option "Achse = 1" umgeschaltet.

Df.isna (). All (): ** Spalte ** Liste ・ Df.isna (). Alle (Achse = 1): ** Linie ** Liste


** ▼ Originaltabelle ** ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/bd35b75c-b12b-62fc-75b3-339b4a4f126e.png)
** ▼ Liste der Spalten ** `df.isna().all()`

Liste der Spalten


df.isna().all()

#Ausgabe
col1          False
Unnamed: 1    False
col3          False
col4           True
Unnamed: 4     True
col6          False
dtype: bool

Die Spaltennamen "col4" und "Unbenannt: 4" sind leer.


** ▼ Liste der Zeilen ** `df.isna().all(axis=1)`

Liste der Zeilen


df.isna().all(axis=1)

0    False
1    False
2    False
3    False
4     True
5    False
dtype: bool

Der Zeilenname "4" ist leer


1-2. isna().any() Listen Sie Zeilen oder Spalten auf, die ** mindestens ein NaN ** enthalten.

Richtig, falls zutreffend. Falsch, falls nicht zutreffend.

Ob es sich um eine Zeile oder eine Spalte handelt, wird durch das Vorhandensein oder Fehlen der Option "Achse = 1" umgeschaltet.

Df.isna (). Any (): ** Spalte ** Liste ・ Df.isna (). Beliebig (Achse = 1): ** Linie ** Liste


** ▼ Originaltabelle ** ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/bd35b75c-b12b-62fc-75b3-339b4a4f126e.png)
** ▼ Liste der Spalten ** `df.isna().any()`

Liste der Spalten


df.isna().any()

#Ausgabe
col1          True
Unnamed: 1    True
col3          True
col4          True
Unnamed: 4    True
col6          True
dtype: bool

Alle Spalten enthalten NaN.


** ▼ Liste der Zeilen ** `df.isna().any(axis=1)`

Liste der Zeilen


df.isna().any(axis=1)

0    True
1    True
2    True
3    True
4    True
5    True
dtype: bool

Alle Zeilen enthalten NaN.


1-3. isna().all().any() ** Wenn die Tabelle mindestens eine leere Spalte enthält ** gibt False zurück, wenn kein True vorhanden ist.

Es kann verwendet werden, wenn Sie den Status schnell anzeigen möchten.


** ▼ Was du machst ** Holen Sie sich mit `isna (). All` eine Liste, in der der Status jeder Spalte als True oder False angezeigt wird.

any () gibt True zurück, wenn mindestens ein True in der Liste vorhanden ist, andernfalls False.

Überprüfen Sie, ob mindestens eine leere Spalte vorhanden ist


df.isna().all().any()

#Ausgabe
# True

1-3'. isna().all(axis=1).any() Durch Angabe von "axis = 1" in der Option der all-Methode

Wenn die Tabelle mindestens eine ** leere Zeile ** enthält, wird False zurückgegeben, wenn kein True vorhanden ist.

Überprüfen Sie, ob mindestens eine Leerzeile vorhanden ist


df.isna().all(axis=1).any()

#Ausgabe
# True

1-4. isna().any().any() Gibt True ** zurück, wenn es nur eine ** NaN in der Tabelle gibt, andernfalls False.

Enthält es mindestens ein NaN?


df.isna().any().any()

#Ausgabe
# True

②isnull() Alias der Isna-Methode Selbst wenn die obige isna durch isnull ersetzt wird, ist der Prozess genau der gleiche.
>> Link zur offiziellen Seite - [isna()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.isna.html) - [all()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.all.html) - [any()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.any.html) - [isnull()](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.isnull.html)
## 2. Zählen Sie die Anzahl der fehlenden Werte ①isna().sum() ②isna().sum().sum() ③len() - count()
①isna().sum() Zählen Sie, wie viele NaNs jede Zeile oder Spalte enthält.

Ob es sich um eine Zeile oder eine Spalte handelt, wird durch das Vorhandensein oder Fehlen der Option "Achse = 1" umgeschaltet.

Df.isna (). Sum (): Anzahl pro ** Spalte ** zählen ・ Df.isna (). Summe (Achse = 1): Anzahl pro ** Zeile zählen **


** ▼ Originaltabelle ** ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/bd35b75c-b12b-62fc-75b3-339b4a4f126e.png)
** ▼ NaN in Spalte zählen ** `df.isna().sum()`

Zählen Sie das in jeder Spalte enthaltene NaN


df.isna().sum()

#Ausgabe

col1          1
Unnamed: 1    2
col3          1
col4          6
Unnamed: 4    6
col6          2
dtype: int64

** ▼ NaN in Zeile zählen ** `df.isna().sum(axis=1)`

Zählen Sie das in jeder Zeile enthaltene NaN


df.isna().sum(axis=1)

#Ausgabe

0    2
1    3
2    3
3    2
4    6
5    2
dtype: int64

②isna().sum().sum() Zählen Sie die Anzahl der in der gesamten Tabelle enthaltenen NaNs.
** ▼ Was du machst ** Zählen Sie die Anzahl der NaNs für jede Zeile mit "isna (). Sum ()".

Durch "sum ()" wird außerdem die Anzahl der NaN in jeder Zeile addiert.

Anzahl der NaNs in der gesamten Tabelle


df.isna().sum().sum()

#Ausgabe
# 18

③len() - count()

len (df ['Zeilenname']) --count (df ['Zeilenname'])

Suchen Sie die Anzahl der NaNs in der angegebenen Zeile oder Spalte.


** ▼ Was du machst ** ① `len (df ['Zeilenname'])` └ Zählen Sie die Anzahl der Elemente in der angegebenen Zeile

count (df ['Zeilenname']) └ Anzahl der anderen Elemente als NaN in der angegebenen Zeile

Durch Einstellen von (1) - (2) wird die Anzahl der in der angegebenen Zeile enthaltenen NaN berechnet.


Ergänzung
Zählmethode: Zählen Sie die Anzahl anderer Elemente als NaN

** ▼ Zielspalte (Spalte mit zwei NaN. Spaltenname: Spalte 6) **

Zielspalte


df.col6

0      A
1    NaN
2      C
3      D
4    NaN
5      F

** ▼ Ausführungsergebnis **

Anzahl der NaNs in der angegebenen Zeile


len(df['col6'])-df['col6'].count()

#Ausgabe
# 2

>> Offizielle Seite - [Summenmethode](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.sum.html) - [Zählmethode](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.count.html)
## 3. 3. Fehlende Werte löschen Fehlender Wert NaN kann mit der Dropna-Methode gelöscht werden.

▼ Dropna-Optionsliste

Möglichkeit Inhalt
axis=0 Leitung (optional)
axis=1 Säule
how='any' Löschen, wenn es nur eine NaN gibt(Optional)
how='all' Löschen, wenn alle NaN
thresh=n Nicht NaN(Eine effektive)Nicht löschen, wenn n oder mehr Zellen vorhanden sind
subset=['A',,] Löschen Sie Zeilen, die NaN im angegebenen Spaltennamen enthalten (entfernen Sie NaN aus dem angegebenen Spaltennamen).
subset=['a',,], axis=1 Löschen Sie Spalten, die NaN im angegebenen Zeilennamen enthalten (entfernen Sie NaN aus dem angegebenen Zeilennamen).
inplace=True Überschreiben zulassen

** Originaltabelle ** ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/84b5b6ed-38e4-a9b3-14ac-16e6d18ce605.png)
### 5. Entfernen Sie alle fehlenden Wertematrix - Geben Sie als Option "** how = 'all' **" an. - Geben Sie die Zeile oder Spalte mit der Achse an.

① Achse = 0 (weggelassen)  ②axis=1  ③dropna(how='all').dropna(how='all', axis=1)


#### ① Achse = 0 (weggelassen) -Löschen Sie "Zeilen" mit Leerzeichen. -Die Standardeinstellung ist "Achse = 0" (optional) └ Die folgenden zwei Prozesse sind gleich.

dropna(how='all') dropna(how='all', axis=0)


Entfernen Sie alle Leerzeilen


df.dropna(how='all')

▽ Ausgabe image.png

Zeile 4 gelöscht.

②axis=1 dropna(how='all', axis=1)

Löschen Sie "Spalten", die Leerzeichen enthalten.


Entfernen Sie alle leeren Spalten


df.dropna(how='all')

▽ Ausgabe image.png

Zwei Spalten, col4 und Unbenannt, wurden entfernt: 4.


③dropna(how='all').dropna(how='all', axis=1) 

Zeilen und Spalten entfernt, in denen alle Elemente leer sind.

Nach dem Entfernen von Leerzeilen mit dropna (how = 'all') Entfernen Sie leere Spalten mit dropna (how = 'all', axis = 1).


Entfernen Sie leere Zeilen und Spalten


df.dropna(how='all').dropna(how='all', axis=1)

▽ Ausgabe

image.png

Zeile 4, Spalte col4, Unbenannt: 4 gelöscht.


### 6. Löschen Sie eine Matrix, die mindestens einen fehlenden Wert enthält - Geben Sie als Option "** how = 'any' **" an. ・ Der Standardwert ist dieser Status (optional) - Geben Sie die Zeile oder Spalte mit der Achse an. -Die Originaltabelle wird nicht überschrieben └ Optional ist auch die Einstellung zum Überschreiben möglich.

① Standard  ②axis=1


** ▼ Originaltabelle **
image.png

Es gibt vier NaNs. (Zeile, Spalte) = (4,1), (5,2), (1,5), (4,5)


#### ① Standard ** Alle Zeilen mit NaN wurden gelöscht. ** **.

Die Standardeinstellung der dropna-Methode ist, dass als Option how = 'any' angegeben wird.


** ▼ Ausführungsbeispiel **
image.png

In jedem Fall wurden die Zeilen 1, 4, 5 und 6 einschließlich NaN gelöscht.


②axis=1 Gelöschte ** Spalten ** mit mindestens einem NaN.

Da "how =" any "" weggelassen werden kann, sind die folgenden beiden Prozesse gleich.

dropna(axis=1) dropna(how='any', axis=1)


** ▼ Ausführungsbeispiel **
image.png

Alle enthalten ein oder mehrere NaN, Spalte 1, Unbenannt: 1, Spalte 5 gelöscht.


## 6. Löschen Sie, indem Sie die Anzahl der Zellen angeben, denen keine Werte fehlen Beispiel: Ignorieren Sie, wenn n oder mehr nicht fehlende Werte vorhanden sind. Wenn es weniger ist, löschen Sie es.

①df.dropna(thresh=n) ②df.dropna(thresh=n, axis=1)

▽ Ergänzung dresch ist eine Abkürzung für "Schwelle".


### ▼ Originaldaten
image.png

・ Tabelle mit 10 Zeilen x 6 Spalten -Die Anzahl von NaN ist 1 in der 0. Zeile (9 Zellen sind nicht). Die Anzahl der NaN erhöht sich jeweils um eine Spalte. ・ Alle 4. Spalten sind leer


①df.dropna(thresh=n) Beispiel: `df.dropna (Thresh = 1)` └ "df": Tabellendaten └ "Schwelle = 1": Schwelle 1

Gelöschte Zeilen mit einer oder weniger anderen Zellen als NaN. Entspricht dem Löschen aller NaN-Leitungen.

** ▼ Wenn dresch = 1 **

Angabe eines Schwellenwerts (n)=1)


df.dropna(thresh=1)
image.png

Es gibt keine Nur-NaN-Zellen, daher bleiben alle Zeilen erhalten.


** ▼ Wenn dresch = 4 **

Angabe eines Schwellenwerts (n)=4)


df.dropna(thresh=4)
image.png

Zeilen mit 4 oder weniger anderen Zellen als NaN, Zeilen 1, 2 und 3 werden gelöscht.


** ▼ Wenn dresch = 7 **

Angabe eines Schwellenwerts (n)=7)


df.dropna(thresh=7)
image.png

Da es keine Zeilen mit 7 oder mehr Zellen außer NaN gibt, löschen Sie alle.


②df.dropna(thresh=n, axis=1) Beispiel: `df.dropna (Dresch = 1, Achse = 1)` └ "df": Tabellendaten └ "Schwelle = 1": Schwelle 1

Gelöschte Spalten mit einer oder weniger anderen Zellen als NaN. Entspricht dem Löschen aller NaN-Spalten.


** ▼ Wenn Dresch = 1, Achse = 1 **

Angabe eines Schwellenwerts (n)=1)


df.dropna(thresh=1, axis=1)
image.png

Alle NaN-Säulen 4 wurden entfernt.


** ▼ Wenn dresch = 7, Achse = 1 **

Angabe eines Schwellenwerts (n)=7)


df.dropna(thresh=7, axis=1)
image.png

Spalten mit 7 oder weniger anderen Zellen als NaN, Zeilen 4, 5 und 6 werden gelöscht.


** ▼ Wenn dresch = 11, Achse = 1 **

Angabe eines Schwellenwerts (n)=11)


df.dropna(thresh=11, axis=1)

image.png

Da es keine Spalte mit 11 oder mehr Zellen außer NaN gibt, löschen Sie alle.


## 7. Geben Sie die Zeile / Spalte an, für die Sie NaN löschen möchten Verwenden Sie die Teilmengenoption. Anstatt die angegebene Zeile / Spalte zu löschen, wird das darin enthaltene NaN gelöscht.

①df.dropna(subset=['AAA', 'BBB']) ②df.dropna(subset=['aaa', 'bbb'], axis=1)


### ▼ Originaldaten |![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/d1a720eb-4f71-9f8e-ffd3-d7bc3d357768.png)| |:--|

・ 10 Zeilen x 6 Spalten ・ Der Zeilenname ist Zeile x Zeilennummer ・ Der Spaltenname ist die Spaltennummer col x

①df.dropna(subset=['AAA', 'BBB']) Löschen Sie die Zeile, indem Sie den Spaltennamen angeben.

df.dropna(subset=['AAA', 'BBB']) └ "df": Variable mit Tabelle └ "Teilmenge": Option zur Angabe des Namens der Tabelle oder Spalte └ "AAA" "BBB": Spaltenname (optional)


** ▼ Angegebene Zeile löschen ** `df.dropna(subset=['col1','col3','col5'])` └ Löschen Sie die Zeile mit mindestens einem NaN in den Spalten col1, col3, col5. ⇛ NaN verschwindet aus der angegebenen Spalte.

Löschen Sie die Zeile, indem Sie den Spaltennamen angeben


df.dropna(subset=['col1','col3','col5'])
image.png

Zeilen 1,2,3,4,5 gelöscht. Die angegebenen Spalten col1,3,5 enthalten kein NaN mehr.


②df.dropna(subset=['aaa', 'bbb'], axis=1) Geben Sie den Zeilennamen an und löschen Sie die Spalte. NaN wird aus der angegebenen Zeile gelöscht.
`df.dropna(subset=['row0','row3'], axis=1)`

Löschen Sie die Spalte mit NaN in den Zeilen 0 und 3. (NaN verschwindet aus der angegebenen Spalte)

Löschen Sie die Zeile, indem Sie den Spaltennamen angeben


df.dropna(subset=['row0','row3'], axis=1)
image.png

Die Spalten col3, col4, col5 wurden entfernt.


## 8. Löschen überschreiben lassen Verwenden Sie die Inplace-Option.

Standardmäßig nicht überschreiben.  └inplace=False

Beschreiben Sie Folgendes, um das Überschreiben zu ermöglichen.  └**inplace=True**


** ▼ Überschreiben zulassen **

Berechtigung überschreiben


df.dropna(thresh=5, inplace=True)
df
image.png

** ▼ Standard (nicht überschreiben) **

Kein Überschreiben


df.dropna(thresh=5)
df
image.png

Die Tabelle bleibt gleich.


>> Offizielle Seite [dropna-Methode](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html?highlight=dropna)
## 9. Fehlende Werte konvertieren Sie können NaN durch den angegebenen Wert durch die Fillna-Methode ersetzen.

Die Austauschmethode und die Bedingungen für zu ersetzendes NaN sind als Optionen angegeben.


### ▼ Fillna-Optionsliste
Möglichkeit Inhalt
axis=0 Zeile (weggelassen)
axis=1 Säule
value Wert zur Umwandlung von NaN
method='bfill' In den Wert in der unteren Zelle von NaN umrechnen
method='backfill' 'bfill'Gleich wie
method='ffill' Konvertieren Sie NaN in den Wert in der oberen Zelle
method='pad' 'ffill'Gleich wie
method='bfill', axis=1 In den Wert in der rechten Zelle von NaN konvertieren
method='ffill', axis=1 In den Wert in der linken Zelle von NaN konvertieren
limit=n Ersetzen Sie bis zum n-ten NaN. Nicht mehr ersetzen.
inplace=True Überschreiben zulassen

** ① Ersetzen Sie die gesamte Tabelle **  1-1. fillna('AAA') 1-2. Methodenoption  1-3. fillna(method='ffill')  1-4. fillna(method='ffill', axis=1)  1-5. fillna(method='bfill')  1-6. fillna(method='bfill', axis=1)

** ② Geben Sie die Anzahl der zu ersetzenden NaN an **  1-1. fillna('AAA', limit=n)  1-2. fillna('AAA', limit=n, axis=1)  1-3. fillna(method='ffill', limit=n)  1-4. fillna(method='ffill', limit=n, axis=1)

** ③ Überschreiben zulassen **


### ▼ Originaldaten
image.png

## ① Ersetzen Sie die gesamte Tabelle 1-1. fillna('AAA') `fillna('AAA')` └ "AAA": Ersetzen Sie NaN durch das angegebene Zeichen (optional)

fillna('AAA')


df.fillna('AAA')

image.png


### 1-2. Methodenoption Mit der Methodenoption kann es durch einen * -Wert neben NaN ersetzt werden.

** ▼ Beispiel: Wenn Sie angeben, durch den Wert in der rechten Zelle zu ersetzen **

Vor dem Austausch: NaN NaN NaN AAA Nach dem Austausch: AAA AAA AAA AAA

** ▼ Liste der Methodenoptionen **

method Bedeutung Inhalt
ffill forward fill Ersetzen Sie durch den Wert in der vorderen Zelle (Zeile: oben, Spalte: links)
pad padding Gleich wie ffill
bfill backward fill Ersetzen Sie durch den Wert in der hinteren Zelle (Zeile: unten, Spalte: rechts)
backfill backward fill Gleich wie bfill

Bestimmen Sie bei der Angabe einer Zeile anhand der Zeilennummer, ob sie vor oder nach der Zeile liegt. (Auf oder ab)

Bestimmen Sie beim Angeben einer Spalte anhand der Spaltennummer, ob sie vorne oder hinten ist. (Links oder rechts)

Error


ValueError: Cannot specify both 'value' and 'method'.

1-3. fillna(method='ffill') `fillna(method='ffill')`

Ersetzen Sie durch den Wert in der oberen Zeile.

ffill


df.fillna(method='ffill')

image.png

In einen Wert über NaN umrechnen. Wird nicht ersetzt, wenn die oberste Reihe NaN ist.


1-4. fillna(method='ffill', axis=1) `fillna(method='ffill', axis=1)`

Ersetzen Sie durch den Wert in der vorderen Spalte.

ffill,axis=1


df.fillna(method='ffill', axis=1)

image.png


1-5. fillna(method='bfill') `fillna(method='bfill')`

Ersetzen Sie durch den Wert in der letzten Zeile.

bfill


df.fillna(method='bfill')

image.png


1-6. fillna(method='bfill', axis=1) `fillna(method='bfill', axis=1)`

Ersetzen Sie durch den Wert in der hinteren Spalte.

bfill,axis=1


df.fillna(method='bfill', axis=1)

image.png

(2) Geben Sie die Anzahl der zu ersetzenden NaN an

Mit der Option limit können Sie die Anzahl der zu ersetzenden NaN angeben.

limit=n Ersetzen Sie bis zum n-ten. Nicht mehr ersetzen.

** Beispiel: Wenn limit = 2 ist, ist der zu ersetzende Wert AAA und die Achse eine Spalte **

■ Vor dem Austausch AAA NaN NaN AAA AAA AAA NaN NaN NaN AAA AAA NaN AAA NaN AAA NaN NaN AAA NaN NaN

■ Nach dem Austausch AAA AAA AAA AAA AAA AAA AAA AAA NaN AAA AAA AAA AAA AAA AAA AAA AAA AAA NaN NaN

-Ersetzen Sie jede Zeile von links bis zum zweiten NaN.


1-1. fillna('AAA', limit=n) `fillna('AAA', limit=3)`

Von oben in der Reihenfolge der Zeilennummern ersetzt NaN bis zur Sekunde.

limit=2


df.fillna('AAA', limit=2)

image.png

Ersetzen Sie für jede Spalte von oben nach zweit. Nicht mehr ersetzen.


1-2. fillna('AAA', limit=n, axis=1) `fillna('AAA', limit=3, axis=1)`

Ersetzen Sie von oben nach dem dritten NaN in der Reihenfolge der Zeilennummern.

limit=3,axis=1


df.fillna('AAA', limit=3, axis=1)

image.png


1-3. fillna(method='ffill', limit=n) `fillna(method='ffill', limit=3)`

Ersetzt bis zum dritten NaN in der Reihenfolge der Zeilennummern durch den vorherigen Wert.

ffill,limit=3


df.fillna(method='ffill', limit=3)

image.png


1-4. fillna(method='ffill', limit=n, axis=1) `fillna(method='ffill', limit=3, axis=1)`

Ersetzen Sie bis zum dritten NaN in der Reihenfolge der Spaltennummern durch den vorherigen Wert.

ffill,limit=3,axis=1


df.fillna(method='ffill', limit=3)

image.png


### ③ Überschreiben zulassen Verwenden Sie die Inplace-Option.

Standardmäßig nicht überschreiben.  └inplace=False

Beschreiben Sie Folgendes, um das Überschreiben zu ermöglichen.  └**inplace=True**


** ▼ Überschreiben zulassen **

Berechtigung überschreiben


df.fillna('AAA', inplace=True)
df
image.png

** ▼ Standard (nicht überschreiben) **

Kein Überschreiben


df.fillna('AAA')
df
image.png

Die Tabelle bleibt gleich.


>> Offizielle Seite [dropna-Methode](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html?highlight=dropna)
[Zurück zum Anfang](#python So extrahieren, löschen und konvertieren Sie eine Matrix mit einem fehlenden Wert nan)

Recommended Posts

[Python] So extrahieren / löschen / konvertieren Sie eine Matrix mit fehlenden Werten (NaN)
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
So konvertieren / wiederherstellen Sie einen String mit [] in Python
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
[Python] So tauschen Sie Array-Werte aus
So löschen Sie einen Docker-Container
[Python] So erhalten und ändern Sie Zeilen / Spalten / Werte aus einer Tabelle.
So löschen Sie mehrere angegebene Positionen (Indizes) in einer Python-Liste
[Python] Wie erstelle ich eine Matrix aus sich wiederholenden Mustern (repmat / tile)
[Python] So konvertieren Sie eine Datenbankdatei in CSV
[Python] Wie man eine Klasse iterierbar macht
So konvertieren Sie Python in eine exe-Datei
[Python] So invertieren Sie eine Zeichenfolge
Wie bekomme ich Stacktrace in Python?
So extrahieren Sie einen Polygonbereich in Python
So führen Sie Maya Python-Skripte aus
[Python] Erstellen einer Wörterbuchtypliste, Hinzufügen / Ändern / Löschen von Elementen und Extrahieren mit einer for-Anweisung
Lesen einer CSV-Datei mit Python 2/3
So öffnen Sie einen Webbrowser über Python
So löschen Sie einen Taple in einer Liste (Python)
Einbetten von Variablen in Python-Strings
So erstellen Sie eine JSON-Datei in Python
Konvertieren Sie Windows-Epochenwerte mit Python in das Datum
So generieren Sie ein Python-Objekt aus JSON
So fügen Sie einen Suchpfad für Python-Module hinzu
So extrahieren Sie den Koeffizienten aus der Minutenformel
So benachrichtigen Sie Discord-Kanäle in Python
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
So testen Sie eine Funktion, die die aktuelle Zeit enthält, mit Freezegun in Python
So suchen Sie nach fehlenden Werten (Kaggle: House Prices)
[Python] So entfernen Sie doppelte Werte aus der Liste
So konvertieren Sie den Python # -Typ für Super-Anfänger von Python: str
[Python] Wie zeichnet man mit Matplotlib ein Liniendiagramm?
So richten Sie eine Python-Umgebung mit pyenv ein
Konvertieren Sie eine Textdatei mit hexadezimalen Werten in eine Binärdatei
So konvertieren Sie ein Klassenobjekt mit SQLAlchemy in ein Wörterbuch
[Python] So erweitern Sie Variablen in einer Zeichenfolge
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
So konvertieren Sie Gleitkommazahlen in Python in Binärzahlen
So erstellen Sie eine Django (Python) -Umgebung auf Docker
So extrahieren Sie Nullwerte und Nicht-Nullwerte mit Pandas
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
So erstellen Sie ein Python-Paket mit VS Code
[Python] So schreiben Sie eine Dokumentzeichenfolge, die PEP8 entspricht
So konvertieren Sie ein Mel-Spektrogramm zurück in eine WAV-Datei
[Python] So erstellen Sie eine Korrelationsmatrix und eine Heatmap
So speichern Sie eine von Python gekratzte Tabelle in CSV
[Python] Erstellt eine Methode zum Konvertieren von Radix in 1 Sekunde
python, php, ruby Konvertieren von Dezimalzahlen in n
[Python] So erstellen Sie mit Matplotlib ein zweidimensionales Histogramm
So führen Sie einen Befehl mit einem Unterprozess in Python aus
[Python] So geben Sie Listenwerte der Reihe nach aus
Lesen von CSVs, die in Python nur Ganzzahlen enthalten
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
[Python] So rufen Sie eine Funktion von c aus Python auf (ctypes edition)
[Python] Wie zeichnet man mit Matplotlib ein Streudiagramm?