将 pandas 时间序列切成 n 个月的块

     2023-03-12     88

关键词:

【中文标题】将 pandas 时间序列切成 n 个月的块【英文标题】:Slice pandas time-series into n-month chunks 【发布时间】:2015-09-15 07:21:53 【问题描述】:

给定一个按日期索引的熊猫系列,我需要将该系列切成 n 个月的块。下面的代码将数据分成 12 个月的块。如何将其概括为分成 n 个月的块?另外请注意,并非所有日期都在系列中,因此每个月的第一天和最后一天可能不存在于系列中。

# Create a pandas series indexed by date
import pandas as pd
import numpy as np
dates = pd.date_range('2000-01-01', '2009-12-31')
data = np.random.rand(len(dates))
series = pd.Series(data, dates)

# Poke holes in the data, so not all dates are represented
series = series[series > 0.50]

# Slice the series into chunks of 12 months each
for year in range(2000, 2009+1):
    slice = series[str(year):str(year)]
    print "Start date =", slice.index[0], " End date =", slice.index[-1]

【问题讨论】:

【参考方案1】:

您可以使用pd.cut() 将您的时间序列索引切成块,然后使用groupby 执行您的自定义计算。

# Create a pandas series indexed by date
import pandas as pd
import numpy as np

np.random.seed(0)
dates = pd.date_range('2000-01-01', '2009-12-31', freq='D')
data = np.random.rand(len(dates))
series = pd.Series(data, dates)

# Poke holes in the data, so not all dates are represented
series = series[series > 0.8]

# create a data_range, suppose start at 2001-01-01, 3 month
date_rng = pd.date_range('2000-01-01', periods=50, freq='3MS')
labels = date_rng[1:]
# use pd.cut to cut ts index into chunks
grouped = series.groupby(pd.cut(series.index, bins=date_rng, labels=labels, right=False))

start_date = grouped.head(1).index
 Out[206]: 
 DatetimeIndex(['2000-01-08', '2000-04-08', '2000-07-03', '2000-10-02',
                '2001-01-03', '2001-04-04', '2001-07-01', '2001-10-02',
                '2002-01-11', '2002-04-05', '2002-07-01', '2002-10-02',
                '2003-01-02', '2003-04-03', '2003-07-02', '2003-10-04',
                '2004-01-01', '2004-04-01', '2004-07-03', '2004-10-03',
                '2005-01-07', '2005-04-08', '2005-07-12', '2005-10-05',
                '2006-01-01', '2006-04-01', '2006-07-01', '2006-10-04',
                '2007-01-05', '2007-04-04', '2007-07-05', '2007-10-06',
                '2008-01-01', '2008-04-05', '2008-07-05', '2008-10-01',
                '2009-01-02', '2009-04-04', '2009-07-04', '2009-10-02'],
               dtype='datetime64[ns]', freq=None, tz=None)

end_date = grouped.tail(1).index

 Out[207]: 
 DatetimeIndex(['2000-03-30', '2000-06-26', '2000-09-30', '2000-12-30',
                '2001-03-30', '2001-06-28', '2001-09-27', '2001-12-28',
                '2002-03-24', '2002-06-29', '2002-09-24', '2002-12-29',
                '2003-03-27', '2003-06-22', '2003-09-28', '2003-12-31',
                '2004-03-31', '2004-06-27', '2004-09-17', '2004-12-31',
                '2005-03-23', '2005-06-23', '2005-09-30', '2005-12-30',
                '2006-03-29', '2006-06-24', '2006-09-30', '2006-12-31',
                '2007-03-26', '2007-06-27', '2007-09-29', '2007-12-31',
                '2008-03-25', '2008-06-30', '2008-09-28', '2008-12-30',
                '2009-03-25', '2009-06-29', '2009-09-26', '2009-12-27'],
               dtype='datetime64[ns]', freq=None, tz=None)

【讨论】:

每月每个类别的分组计数(当前月份与过去几个月的剩余时间)在 pandas 的单独列中

】每月每个类别的分组计数(当前月份与过去几个月的剩余时间)在pandas的单独列中【英文标题】:Groupbycountpercategorypermonth(CurrentmonthvsRemainingpastmonths)inseparatecolumnsinpandas【发布时间】:2021-07-2402:23:15【问题描述】:假设我有以... 查看详情

将 pandas 数据框 json 列切成列

】将pandas数据框json列切成列【英文标题】:Slicepandasdataframejsoncolumnintocolumns【发布时间】:2018-08-1109:00:03【问题描述】:我有一个数据框,它有两列JSON格式,如下所示:authorbiblioseriesMehrdadVahabi\'volume\':68,\'month\':\'January\',\'handle\'... 查看详情

按月查询获取前n个月的平均值

】按月查询获取前n个月的平均值【英文标题】:Getavareageofnpreviousmonthsbymonthquery【发布时间】:2018-02-1918:19:22【问题描述】:我正在做一个查询,获取2列的计数和另一列的总和,从过去13个月的日期列按月份分组。这是我的查询... 查看详情

我们可以将 Wordpress 存档设置为 3 个月的时间限制吗

】我们可以将Wordpress存档设置为3个月的时间限制吗【英文标题】:CanwesetWordpressarchivewith3monthtimelimit【发布时间】:2017-06-1308:28:23【问题描述】:如何将存档小部件下拉列表显示为jan-march、april-june那样【问题讨论】:你已经尝试... 查看详情

如何在n个月内使用sql(无程序)获取每个月的第一天和最后一天

】如何在n个月内使用sql(无程序)获取每个月的第一天和最后一天【英文标题】:Howtogetthefirstandlastdayofeverymonthusingsql(withoutprocedures)fornmonths【发布时间】:2021-08-2511:09:16【问题描述】:需要获取n个月过去几个月的日期n=月数(5)... 查看详情

加入 PySpark 数据集中每个月的上个月数据

】加入PySpark数据集中每个月的上个月数据【英文标题】:JoiningonthepreviousmonthdataforeachmonthinthePySparkdataset【发布时间】:2020-01-2808:46:34【问题描述】:我有一个按月计算的数据集,每个月有N个帐户。有些月份会有新账户,有些账... 查看详情

我正在尝试获取过去“N”个月的订单。在以下查询中,我需要动态设置月份的值

】我正在尝试获取过去“N”个月的订单。在以下查询中,我需要动态设置月份的值【英文标题】:Iamtryingtofetchordersforlast"N"months.InthefollowingqueryIneedtodynamicallysetthevalueformonths【发布时间】:2017-10-0601:46:45【问题描述】:我... 查看详情

将过去 5 个月的 Dataframe 划分为当前月份的 5 个不同的 df?

】将过去5个月的Dataframe划分为当前月份的5个不同的df?【英文标题】:DivideDataframefromlast5monthsandseparatetheminto5differentdf\'sfromcurrentmonth?【发布时间】:2019-06-2314:24:00【问题描述】:将过去5个月的Dataframe划分为5个不同的df有一个包... 查看详情

如何将赤字值自动化到下个月的目标?

】如何将赤字值自动化到下个月的目标?【英文标题】:HowtoAutomateDeficitValuetoNextMonthTarget?【发布时间】:2021-10-1614:20:50【问题描述】:我有一个如下图的数据表OwnerMonthYearTargetAchievedAApril202110050BApril202110080AMay202110080BMay2021100130AJun... 查看详情

将日期取整到下个月的第一天

】将日期取整到下个月的第一天【英文标题】:Rounddatetofirstdayofnextmonth【发布时间】:2018-02-2122:32:07【问题描述】:以下查询采用application_date并给出申请月份的最后一天(cohort)和申请周的星期日(first_week):selectcast(last_day(ap... 查看详情

将数据帧重新采样为具有任意期末月份的 n 个月期间

】将数据帧重新采样为具有任意期末月份的n个月期间【英文标题】:Resampleadataframeinton-monthperiodswitharbitraryend-of-periodmonths【发布时间】:2021-09-3023:09:51【问题描述】:我想将resample()我的每日数据分成六个月的数据块。但是,我... 查看详情

Pandas:仅当某个列值在过去 N 个月内出现 N 次时才保留行

】Pandas:仅当某个列值在过去N个月内出现N次时才保留行【英文标题】:Pandas:KeeponlytherowsonlyifcertaincolumnvalueappearsNtimesinpastNmonths【发布时间】:2021-10-2920:29:57【问题描述】:我想保留最近3个月(month_n=4到6)中单个充值次数(recha... 查看详情

SQL 通过微秒时间戳获取过去几个月的行?

】SQL通过微秒时间戳获取过去几个月的行?【英文标题】:SQLgetpastmonthsrowsviamicrosecondtimestamp?【发布时间】:2017-01-0518:57:12【问题描述】:我正在尝试从我的表中获取过去一个月的数据,但所有时间戳都以微秒为单位存储。目前... 查看详情

需要在删除和插入模式下将最近 5 个月的数据存储在表中

】需要在删除和插入模式下将最近5个月的数据存储在表中【英文标题】:Needtostorelatest5monthsofdatainatableondeleteandinsertmode【发布时间】:2016-07-1516:49:14【问题描述】:我尝试了一个需要将最近5个月的数据存储在netezza中的场景。下... 查看详情

Pandas 将自定义日期(月年)循环到(月年+N)以进行绘图

...】:2017-05-0615:04:49【问题描述】:我一直在分析运行了几个月的数据,然后每月生成并保存一个数字。到目前为止,当这些都在同一日历年内时,这非常有效,但我不知道当数据跨越到下一年时如何指示循环工作。示例代码:imp... 查看详情

前几个月的 SQL 固定日期

】前几个月的SQL固定日期【英文标题】:SQLFixedDatefromPreviousMonths【发布时间】:2017-11-1021:52:34【问题描述】:我希望每个月生成一份报告,以提取由特定任务打开日期驱动的数据。关键字段是“progdate”(将包含日期“dd/mm/yyyy”... 查看详情

如何创建一个循环:将 4 个月的错误项相加,然后除以 r 中等效的 4 个月真实数字的总和?

】如何创建一个循环:将4个月的错误项相加,然后除以r中等效的4个月真实数字的总和?【英文标题】:Howtocreatealoopthat:sumsanerrortermfor4months,anddividewiththesumoftheequivalent4months\'truenumbers,inr?【发布时间】:2021-12-0707:31:37【问题描述... 查看详情

leetcode:动态规划模板(代码片段)

1.数兔子有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?我们假设第n-2个月的时候有dp[n-2]只兔子,第n-1... 查看详情