Fillna Pandas Example
In this article, you will learn about the fillna() method of Python Pandas with examples.
Python is one of the fastest growing programming language in the world. Instead of development of web applications, it is also used in the development of complex numeric, scientific applications and data analytics. The Pandas is the most popular Python library used by data scientists and analysts. It provides a fast and effective way to manage and explore data, handling missing data, merging or joining of datasets and cleaning up data. It provides a lot of methods for performing different tasks. Here, we have mentioned all about the fillna() method.
Pandas fillna
Sometimes, CSV files may contain null values. When we export data from CSV to DateFrame, the null values are displayed as NaN in the DataFrame. The fillna() method is used to replace these NaN/ NA values using the specified method.
Syntax of fillna() method
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
value- Value to fill instead of NaN/NA. It can be scalar, dictionary, pandas series or a DataFrame
method- Method to use for filling holes in reindexed series pad/ ffill/ backfill/ bfill,
axis- Axis along which to fill missing values. It can take 0 or 'index', 1 or 'columns'.
inplace- If True, fill in place,
limit- If method is specified, this is the maximum number of consecutive NaN values to forward/backward fill,
downcast- A dict which specifies what dtype to downcast to which one, it can be a dictionary or None.
Pandas DataFrame fillna Examples
These are the different examples of the Python Pandas fillna() method.
Replace NaN values with a static value in DataFrame
Suppose we have the following dataset of four columns in which some values are null.
import numpy as np
import pandas as pd
df = pd.DataFrame([[np.nan, 6, 4, 0],
[5, 2, np.nan, 1],
[2, np.nan, np.nan, np.nan],
[np.nan, np.nan, 7, np.nan]],
columns=list('PQRS'))
print(df)
Output of the above code:
P Q R S
0 NaN 6.0 4.0 0.0
1 5.0 2.0 NaN 1.0
2 2.0 NaN NaN NaN
3 NaN NaN 7.0 NaN
In the below code, we have replaced the NaN values with a static value 0.0 -
import numpy as np
import pandas as pd
df = pd.DataFrame([[np.nan, 6, 4, 0],
[5, 2, np.nan, 1],
[2, np.nan, np.nan, np.nan],
[np.nan, np.nan, 7, np.nan]],
columns=list('PQRS'))
print(df.fillna(0))
The above code returns the following output-
P Q R S
0 0.0 6.0 4.0 0.0
1 5.0 2.0 0.0 1.0
2 2.0 0.0 0.0 0.0
3 0.0 0.0 7.0 0.0
Replace NaN values with dynamic values in DataFrame
In the below example, we have replaced all NaN elements in columns 'P', 'Q', 'R' and 'S', with 2, 3, 7, and 8 respectively.
import numpy as np
import pandas as pd
df = pd.DataFrame([[np.nan, 6, 4, 0],
[5, 2, np.nan, 1],
[2, np.nan, np.nan, np.nan],
[np.nan, np.nan, 7, np.nan]],
columns=list('PQRS'))
print(df.fillna(value = {'P' : 2, 'Q' : 3, 'R' : 7, 'S' : 8}))
The above code returns the following output-
P Q R S
0 2.0 6.0 4.0 0.0
1 5.0 2.0 7.0 1.0
2 2.0 3.0 7.0 8.0
3 2.0 3.0 7.0 8.0
Pandas fillna method
With the help of method attributes, we can propagate non-null values forward or backward.
import numpy as np
import pandas as pd
df = pd.DataFrame([[np.nan, 6, 4, 0],
[5, 2, np.nan, 1],
[2, np.nan, np.nan, np.nan],
[np.nan, np.nan, 7, np.nan]],
columns=list('PQRS'))
print(df.fillna( method ='ffill'))
Output of the above code:
P Q R S
0 2.0 6.0 4.0 0.0
1 5.0 2.0 7.0 1.0
2 2.0 3.0 7.0 8.0
3 2.0 3.0 7.0 8.0
Apply Pandas fillna on a specific column
If we want to fill NaN values in a specific column, we can do this by applying Pandas fillna to that column. In this example, we have replaced NaN values of P column with the given value.
import numpy as np
import pandas as pd
df = pd.DataFrame([[np.nan, 6, 4, 0],
[5, 2, np.nan, 1],
[2, np.nan, 7, 2],
[9, np.nan, 7, 8]],
columns=list('PQRS'))
df['P'].fillna(0, inplace=True)
print(df)
Output of the above code:
P Q R S
0 0.0 6.0 4.0 0
1 5.0 2.0 NaN 1
2 2.0 NaN 7.0 2
3 9.0 NaN 7.0 8
Pandas fillna with another column
We can replace NaN values in one column with values in another column. This can be done by simply assigning values to the other columns in the 'value' argument. In the given example, we have replaced the NaN values of 'R' column with 'P' column.
import numpy as np
import pandas as pd
df = pd.DataFrame([[8, 6, 4, 0],
[5, 2, np.nan, 1],
[2, np.nan, 7, 2],
[9, np.nan, np.nan, 8]],
columns=list('PQRS'))
df['R'].fillna(value=df['P'], inplace=True)
print(df)
Output of the above code:
P Q R S
0 8 6.0 4.0 0
1 5 2.0 5.0 1
2 2 NaN 7.0 2
3 9 NaN 9.0 8
Related Articles
Python Spell Checker ProgramPython remove punctuation from string
How to convert Excel to CSV Python Pandas
How to read data from excel file using Python Pandas
How to read data from excel file in Python
Python read JSON from URL requests
Python send mail to multiple recipients using SMTP server
How to generate QR Code in Python using PyQRCode
Python programs to check Palindrome strings and numbers
CRUD operations in Python using MYSQL Connector
Fibonacci Series Program in Python
Python File Handler - Create, Read, Write, Access, Lock File
Python convert XML to JSON
Python convert xml to dict
Python convert dict to xml