Pandas DataFrame Asfreq Method

PandasPandasBeginner
Practice Now

Introduction

The DataFrame.asfreq() method in Python's pandas library is used to convert a time series to a specified frequency. It provides a way to pad or backfill missing values. By applying this method to a DataFrame, we can convert the time series to the desired frequency, upsample the frequency, and fill in any missing values.

VM Tips

After the VM startup is done, click the top left corner to switch to the Notebook tab to access Jupyter Notebook for practice.

Sometimes, you may need to wait a few seconds for Jupyter Notebook to finish loading. The validation of operations cannot be automated because of limitations in Jupyter Notebook.

If you face issues during learning, feel free to ask Labby. Provide feedback after the session, and we will promptly resolve the problem for you.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL pandas(("`Pandas`")) -.-> pandas/AdvancedOperationsGroup(["`Advanced Operations`"]) python(("`Python`")) -.-> python/DataStructuresGroup(["`Data Structures`"]) python(("`Python`")) -.-> python/ModulesandPackagesGroup(["`Modules and Packages`"]) python(("`Python`")) -.-> python/DataScienceandMachineLearningGroup(["`Data Science and Machine Learning`"]) python(("`Python`")) -.-> python/FunctionsGroup(["`Functions`"]) pandas/AdvancedOperationsGroup -.-> pandas/time_series_analysis("`Time Series Analysis`") python/DataStructuresGroup -.-> python/lists("`Lists`") python/DataStructuresGroup -.-> python/tuples("`Tuples`") python/DataStructuresGroup -.-> python/dictionaries("`Dictionaries`") python/ModulesandPackagesGroup -.-> python/importing_modules("`Importing Modules`") python/DataScienceandMachineLearningGroup -.-> python/numerical_computing("`Numerical Computing`") python/DataScienceandMachineLearningGroup -.-> python/data_analysis("`Data Analysis`") python/FunctionsGroup -.-> python/build_in_functions("`Build-in Functions`") subgraph Lab Skills pandas/time_series_analysis -.-> lab-68584{{"`Pandas DataFrame Asfreq Method`"}} python/lists -.-> lab-68584{{"`Pandas DataFrame Asfreq Method`"}} python/tuples -.-> lab-68584{{"`Pandas DataFrame Asfreq Method`"}} python/dictionaries -.-> lab-68584{{"`Pandas DataFrame Asfreq Method`"}} python/importing_modules -.-> lab-68584{{"`Pandas DataFrame Asfreq Method`"}} python/numerical_computing -.-> lab-68584{{"`Pandas DataFrame Asfreq Method`"}} python/data_analysis -.-> lab-68584{{"`Pandas DataFrame Asfreq Method`"}} python/build_in_functions -.-> lab-68584{{"`Pandas DataFrame Asfreq Method`"}} end

Convert Timeseries to the Specified Frequency

We can use the DataFrame.asfreq() method to convert a time series to a different specified frequency. Here's an example:

import pandas as pd

index = pd.date_range('1/1/2021', periods=4, freq='T')
series = pd.Series([0.0, None, 2.0, 3.0], index=index)
df = pd.DataFrame({'Time': series})
print(df)
print("Converting to a different frequency")
print(df.asfreq(freq='H'))

This code creates a DataFrame with a time series and then converts it to an hourly frequency. It prints both the original DataFrame and the converted DataFrame.

Upsample Timeseries using the DataFrame.asfreq() Method

The DataFrame.asfreq() method can also upsample the frequency of a time series. Here's an example:

import pandas as pd

index = pd.date_range('1/1/2021', periods=4, freq='T')
series = pd.Series([0.0, None, 2.0, 3.0], index=index)
df = pd.DataFrame({'Time': series})
print(df)
print("Upsampling the timeseries")
print(df.asfreq(freq='50s'))

In this code, we create a DataFrame with a time series and then upsample it to a frequency of 50 seconds. It prints both the original DataFrame and the upsampled DataFrame.

Upsample Timeseries and Fill Missing Values using the DataFrame.asfreq() Method

The DataFrame.asfreq() method can also fill missing values when upsampling a time series. Here's an example:

import pandas as pd

index = pd.date_range('1/1/2021', periods=4, freq='T')
series = pd.Series([0.0, None, None, 3.0], index=index)
df = pd.DataFrame({'Time': series})
print(df)
print("Upsampling timeseries and filling values")
print(df.asfreq(freq='50s', fill_value=9.0))

In this code, we create a DataFrame with a time series that has missing values. We then upsample it to a frequency of 50 seconds and fill the missing values with the value 9.0. It prints both the original DataFrame and the upsampled DataFrame with the filled values.

Upsample Timeseries and Back Fill Missing Values using the DataFrame.asfreq() Method

The DataFrame.asfreq() method can also back fill missing values when upsampling a time series. Here's an example:

import pandas as pd

index = pd.date_range('1/1/2021', periods=4, freq='T')
series = pd.Series([0.0, None, None, 3.0], index=index)
df = pd.DataFrame({'Time': series})
print("Upsampling timeseries")
print(df.asfreq(freq='70s'))
print("Backward filling values")
print(df.asfreq(freq='70s', method='bfill'))

In this code, we create a DataFrame with a time series that has missing values. We then upsample it to a frequency of 70 seconds and back fill the missing values. It prints both the upsampled DataFrame and the DataFrame with backward-filled values.

Summary

The DataFrame.asfreq() method in pandas is a useful tool for converting, upsampling, and filling missing values in time series data. By specifying a desired frequency and optional parameters for filling missing values, we can manipulate time series data to suit our needs. This method provides flexibility and control over how time series data is processed and analyzed.

Other Pandas Tutorials you may like