Pandas 使用DataFrame进行时间(日期)分组

Pandas 使用DataFrame进行时间(日期)分组

在本文中,我们将介绍如何使用Pandas DataFrame的groupby()方法来按月份对数据进行分组。该方法可以用来解决许多实际问题,例如股票数据分析、气象数据分析等等。

阅读更多:Pandas 教程

基本介绍

Pandas是一个流行的Python数据处理库,它提供了许多有用的函数来处理数据。其中一个重要的函数是groupby()。它可以将数据分成几个组,使用某些函数(例如平均值)对每组进行操作,然后将结果组合成一个新的Dataframe。下面我们将演示如何将数据按月份分组。

假设我们有以下DataFrame:

import pandas as pd
import numpy as np
from datetime import datetime

date_rng = pd.date_range(start='1/1/2021', end='1/03/2022', freq='D')
data = pd.DataFrame(date_rng, columns=['date'])
data['data'] = np.random.randint(0,100,size=(len(date_rng)))

上述代码是首先创建一个日期范围,然后使用该日期范围创建一个Pandas DataFrame。此外,我们还添加了一个名为“data”的列,其中包含从0到100的随机整数。

将上述代码段中的日期范围设置为每天进行采样。可以看出,第一行代码给出了start和end date,表示从2021年1月1日开始,在2022年1月3日结束,每天进行采样。

这样我们就有了以下DataFrame:

   date       data
0  2021-01-01  23
1  2021-01-02  58
2  2021-01-03  17
3  2021-01-04  54
4  2021-01-05  54
..        ...      ...
363  2022-01-29  13
364  2022-01-30  94
365  2022-01-31  90
366  2022-02-01  97

将数据按月份分组

现在我们将数据按月份分组。我们可以使用Pandas DataFrame的groupby()方法来实现。

对于日(datetime),可以使用以下代码将其转换为月份:

data['month'] = data['date'].apply(lambda x: x.strftime('%B'))

我们使用apply()方法将日期变为月份。strftime()函数可以格式化日期并提取所需的字段(例如月份),’%B’表示提取月份的全名(例如“January”)。现在,我们将DataFrame按“月份”列进行分组:

by_month = data.groupby('month')['data'].mean()

上述代码中,我们使用groupby()对数据进行分组,并使用mean()方法对每个组进行操作,得到均值。我们使用“按月份分组”创建一个新的Dataframe,其中包含每个月的平均数。

 Output
August      61.516129
December    39.709677
February    46.142857
January     48.645161
July        51.838710
June        49.566667
March       49.580645
May         43.000000
November    45.000000
October     38.451613
September   50.400000

我们可以看到,每个月的平均数据都被计算出来了。例如,在2021年8月有61.5的平均值,在2021年12月有39.7的平均数。

总结

在本文中,我们使用Pandas DataFrame的groupby()方法将数据按月份分组。我们还使用apply()方法将时间戳转换为月份,并使用mean()方法计算每个月份的平均数据。通过这些简单的技巧,我们可以快速、方便地处理大量数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程