Pandas Series dt.year | Extract Year Part from DateTime Series

Pandas is a powerful data manipulation library in Python, and one of its strengths lies in handling date and time data. When working with time series data, you often need to extract specific components of the date, such as the year. Pandas makes this easy with its dt accessor. In this blog, we’ll focus on how to extract the year from a DateTime Series using Pandas Series dt.year.

Pandas Series dt.year

The dt accessor in Pandas provides a collection of methods for working with datetime-like data. By using dt.year, you can extract the year component from each element in a DateTime Series. This can be especially useful for time-based analysis, such as grouping data by year.

Setting Up Your Environment

Before we dive into examples, make sure you have Pandas installed. If not, you can install it using pip:

Markdown
pip install pandas

Now, let’s import Pandas and create a sample DateTime Series.

Python
import pandas as pd

# Creating a sample DateTime Series
date_series = pd.Series(pd.date_range("2020-01-01", periods=6, freq='M'))
print(date_series)

This will output:

Markdown
0   2020-01-31
1   2020-02-29
2   2020-03-31
3   2020-04-30
4   2020-05-31
5   2020-06-30
dtype: datetime64[ns]

In this example, we create a sample DateTime Series using the pd.date_range function, which generates a sequence of dates. The pd.date_range function is called with a start date of “2020-01-01”, and it generates 6 dates with a monthly frequency (freq='M'). This results in a Pandas Series where each element is the last day of each month from January to June 2020. When we print this DateTime Series, it shows six dates: January 31, February 29 (leap year), March 31, April 30, May 31, and June 30 of 2020. Each date in the series has the data type datetime64[ns], indicating that they are recognized as datetime objects by Pandas.

Extracting the Year

To extract the year from each date in the series, you can simply use the dt.year attribute.

Python
# Extracting the year
year_series = date_series.dt.year
print(year_series)

This will output:

Markdown
0    2020
1    2020
2    2020
3    2020
4    2020
5    2020
dtype: int32

As you can see, dt.year extracts the year component from each date in the series.

Real-World Example

Let’s consider a more realistic scenario. Suppose you have a dataset of sales data, and you want to analyze the sales by year.

Python
# Sample sales data
data = {
    "Date": pd.date_range("2018-01-01", periods=36, freq='M'),
    "Sales": [200, 220, 250, 270, 300, 310, 330, 350, 370, 400, 420, 450,
              470, 500, 520, 550, 580, 600, 620, 650, 670, 700, 720, 750,
              770, 800, 820, 850, 880, 900, 920, 950, 980, 1000, 1020, 1050]
}
df = pd.DataFrame(data)
print(df)

This will output:

Markdown
        Date  Sales
0 2018-01-31    200
1 2018-02-28    220
2 2018-03-31    250
3 2018-04-30    270
4 2018-05-31    300
...
...
...
34 2020-11-30   1020
35 2020-12-31   1050

To analyze the sales by year, you can extract the year from the “Date” column and group by it.

Python
# Extracting the year and grouping by year
df['Year'] = df['Date'].dt.year
sales_by_year = df.groupby('Year')['Sales'].sum()
print(sales_by_year)

This will output:

Markdown
Year
2018     3870
2019     7330
2020    10940
Name: Sales, dtype: int64

By extracting the year and grouping by it, you can easily analyze the sales trends over the years.

Conclusion

Extracting the year from a DateTime Series in Pandas is straightforward with the dt.year attribute. This functionality is incredibly useful for time-based data analysis, allowing you to group and analyze your data by year. Whether you’re dealing with sales data, event timestamps, or any other time series data, dt.year can help you simplify your analysis.

Remember, Pandas offers a wide range of other datetime attributes and methods under the dt accessor, so explore them to make the most of your time series data.

I hope this blog helps you understand how to extract the year part from a DateTime Series using Pandas. If you have any questions or suggestions, feel free to leave a comment below!

Also Explore:

Leave a Comment