Python酷库之旅-第三方库Pandas(026)
目录
一、用法精讲
65、pandas.bdate_range函数
65-1、语法
65-2、参数
65-3、功能
65-4、返回值
65-5、说明
65-6、用法
65-6-1、数据准备
65-6-2、代码示例
65-6-3、结果输出
66、pandas.period_range函数
66-1、语法
66-2、参数
66-3、功能
66-4、返回值
66-5、说明
66-6、用法
66-6-1、数据准备
66-6-2、代码示例
66-6-3、结果输出
67、pandas.timedelta_range函数
67-1、语法
67-2、参数
67-3、功能
67-4、返回值
67-5、说明
67-6、用法
67-6-1、数据准备
67-6-2、代码示例
67-6-3、结果输出
二、推荐阅读
1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页
一、用法精讲
65、pandas.bdate_range函数
65-1、语法
# 65、pandas.bdate_range函数 pandas.bdate_range(start=None, end=None, periods=None, freq='B', tz=None, normalize=True, name=None, weekmask=None, holidays=None, inclusive='both', **kwargs) Return a fixed frequency DatetimeIndex with business day as the default. Parameters: startstr or datetime-like, default None Left bound for generating dates. endstr or datetime-like, default None Right bound for generating dates. periodsint, default None Number of periods to generate. freqstr, Timedelta, datetime.timedelta, or DateOffset, default ‘B’ Frequency strings can have multiples, e.g. ‘5h’. The default is business daily (‘B’). tzstr or None Time zone name for returning localized DatetimeIndex, for example Asia/Beijing. normalizebool, default False Normalize start/end dates to midnight before generating date range. namestr, default None Name of the resulting DatetimeIndex. weekmaskstr or None, default None Weekmask of valid business days, passed to numpy.busdaycalendar, only used when custom frequency strings are passed. The default value None is equivalent to ‘Mon Tue Wed Thu Fri’. holidayslist-like or None, default None Dates to exclude from the set of valid business days, passed to numpy.busdaycalendar, only used when custom frequency strings are passed. inclusive{“both”, “neither”, “left”, “right”}, default “both” Include boundaries; Whether to set each bound as closed or open. New in version 1.4.0. **kwargs For compatibility. Has no effect on the result. Returns: DatetimeIndex
65-2、参数
65-2-1、start(可选,默认值为None):起始时间,字符串或datetime-like对象。可以为空,如果指定了end和periods。
65-2-2、end(可选,默认值为None):结束时间,字符串或datetime-like对象。可以为空,如果指定了start和periods。
65-2-3、periods(可选,默认值为None):生成的时间点数,如果指定了start或end其中之一,此参数必需。
65-2-4、freq(可选,默认值为'B'):频率字符串,常见的频率字符串包括'B'(工作日)、'C'(自定义工作日),还可以用pd.offsets对象定义复杂频率。
65-2-5、tz(可选,默认值为None):时区字符串或tzinfo对象。
65-2-6、normalize(可选,默认值为True):将时间标准化到午夜时间。
65-2-7、name(可选,默认值为None):生成的DatetimeIndex的名称。
65-2-8、weekmask(可选,默认值为None):指定一周中哪些天是工作日,可以是一个字符串,比如'Mon Tue Wed Thu Fri',默认值取决于freq。
65-2-9、holidays(可选,默认值为None):指定节假日,作为一个日期列表,用于排除这些日期。
65-2-10、inclusive(可选,默认值为'both'):包括或排除起始和结束点,可以是'both'、'neither'、'left'或'right'。
65-2-11、**kwargs(可选):其他关键字参数,这些参数将被传递给DateOffset构造函数(如果freq是一个DateOffset对象或可以从字符串解析为DateOffset对象)。
65-3、功能
用于生成工作日(business days)日期范围的一个函数,该函数专为处理财务、经济等需要排除周末和节假日的数据集而设计。
65-4、返回值
返回一个Pandas DatetimeIndex对象,该对象包含了根据指定参数生成的日期范围,这些日期都是工作日,除非在holidays参数中明确指定了某些日期为非工作日。
65-5、说明
该函数为处理时间序列数据中的工作日提供了极大的便利,使得数据分析师和科学家能够更专注于数据的分析和解释,而无需担心日期的计算和筛选问题。
65-6、用法
65-6-1、数据准备
无
65-6-2、代码示例
# 65、pandas.bdate_range函数 import pandas as pd # 生成从2024年1月1日到2024年12月31日的工作日日期范围 bdate_range = pd.bdate_range(start='2024-01-01', end='2024-12-31') print(bdate_range)
65-6-3、结果输出
# 65、pandas.bdate_range函数 # DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04', # '2024-01-05', '2024-01-08', '2024-01-09', '2024-01-10', # '2024-01-11', '2024-01-12', # ... # '2024-12-18', '2024-12-19', '2024-12-20', '2024-12-23', # '2024-12-24', '2024-12-25', '2024-12-26', '2024-12-27', # '2024-12-30', '2024-12-31'], # dtype='datetime64[ns]', length=262, freq='B')
66、pandas.period_range函数
66-1、语法
# 66、pandas.period_range函数 pandas.period_range(start=None, end=None, periods=None, freq=None, name=None) Return a fixed frequency PeriodIndex. The day (calendar) is the default frequency. Parameters: start str, datetime, date, pandas.Timestamp, or period-like, default None Left bound for generating periods. end str, datetime, date, pandas.Timestamp, or period-like, default None Right bound for generating periods. periods int, default None Number of periods to generate. freq str or DateOffset, optional Frequency alias. By default the freq is taken from start or end if those are Period objects. Otherwise, the default is "D" for daily frequency. name str, default None Name of the resulting PeriodIndex. Returns: PeriodIndex
66-2、参数
66-2-1、start(可选,默认值为None):str或Period对象,生成周期范围的起始点,如果指定了end和periods,则start是必需的。它应该是一个可以解析为周期的字符串(如'2023Q1'表示2023年的第一季度)或一个Period对象。
66-2-2、end(可选,默认值为None):str或Period对象,生成周期范围的结束点,如果指定了start和periods,则end是可选的。同样,它应该是一个可以解析为周期的字符串或一个Period对象。
66-2-3、periods(可选,默认值为None):int,要生成的周期数,如果指定了start和end,则periods是可选的。
66-2-4、freq(可选,默认值为None):str或DateOffset对象,两个相邻周期之间的频率。常见的频率有 'Y'(年)、'Q'(季度)、'M'(月)、'D'(日)等,如果不指定,Pandas会尝试根据start和end(如果提供了)自动推断出频率。
66-2-5、name(可选,默认值为None):str,返回的PeriodIndex的名称。
66-3、功能
用于生成固定频率的PeriodIndex(周期索引)的一个功能强大的工具,该函数通过指定的起始点、结束点、周期数以及频率等参数,生成一个包含多个周期的索引序列,这些周期可以是年、季度、月、日等不同的时间单位。
66-4、返回值
返回一个Pandas PeriodIndex对象,该对象包含了根据指定参数生成的周期范围。
66-5、说明
无
66-6、用法
66-6-1、数据准备
无
66-6-2、代码示例
# 66、pandas.period_range函数 import pandas as pd # 生成从2024年第一季度到2024年第四季度的季度周期索引 q_range = pd.period_range(start='2024Q1', end='2024Q4', freq='Q') print(q_range, end='\n\n') # 访问第一个周期 first_quarter = q_range[0] print(first_quarter, end='\n\n') print(q_range.freq)
66-6-3、结果输出
# 66、pandas.period_range函数 # PeriodIndex(['2024Q1', '2024Q2', '2024Q3', '2024Q4'], dtype='period[Q-DEC]') # # 2024Q1 # #
67、pandas.timedelta_range函数
67-1、语法
# 67、pandas.timedelta_range函数 pandas.timedelta_range(start=None, end=None, periods=None, freq=None, name=None, closed=None, *, unit=None) Return a fixed frequency TimedeltaIndex with day as the default. Parameters: startstr or timedelta-like, default None Left bound for generating timedeltas. endstr or timedelta-like, default None Right bound for generating timedeltas. periodsint, default None Number of periods to generate. freqstr, Timedelta, datetime.timedelta, or DateOffset, default ‘D’ Frequency strings can have multiples, e.g. ‘5h’. namestr, default None Name of the resulting TimedeltaIndex. closedstr, default None Make the interval closed with respect to the given frequency to the ‘left’, ‘right’, or both sides (None). unitstr, default None Specify the desired resolution of the result. New in version 2.0.0. Returns: TimedeltaIndex
67-2、参数
67-2-1、start(可选,默认值为None):str或Timedelta,生成时间差范围的起始点,可以是表示时间差的字符串(如'1 days')或Timedelta对象,如果未指定,则必须指定periods参数。
67-2-2、end(可选,默认值为None):str或Timedelta,生成时间差范围的结束点,与start参数类似,可以是字符串或Timedelta对象,如果指定了end,则生成的时间差范围将包括这个结束点(取决于closed参数的值)。
67-2-3、periods(可选,默认值为None):int,时间差的数量,如果指定了periods,则生成的时间差范围将包含指定数量的等间隔时间差;如果同时指定了start和end,则periods可以被忽略或用于计算频率。
67-2-4、freq(可选,默认值为None):str或DateOffset,时间差的频率,可以是如'D'(天)、'H'(小时)、'T'(分钟)等频率字符串,或者是DateOffset对象。如果未指定,则频率将根据start、end和periods 参数自动计算(如果可能的话)。
67-2-5、name(可选,默认值为None):str,返回的TimedeltaIndex的名称。
67-2-6、closed(可选,默认值为None):{'left', 'right'},指示区间是“左闭右开”('left')还是“左开右闭”('right'),这仅在同时指定了start和end时有效。默认是 'right',即区间包括结束点但不包括起始点(在逻辑上,因为时间差通常从0开始计数)。
67-2-7、unit(可选,默认值为None):从Pandas 1.1.0开始不推荐使用,因为freq参数已经足够灵活来指定时间差的单位,如果同时指定了freq和unit,freq将优先。
67-3、功能
用于生成时间序列的时间差(timedelta)范围的一个函数,该函数允许你根据起始时间、结束时间、时间差的数量、时间频率等参数来创建一个TimedeltaIndex,这个索引包含了等间隔的时间差。
67-4、返回值
返回值是一个Pandas TimedeltaIndex对象,该对象具有以下特点:
67-4-1、类型:TimedeltaIndex是Pandas中专门用于存储时间差索引的类型,它提供了丰富的日期时间操作功能。
67-4-2、内容:返回的TimedeltaIndex对象包含了根据指定参数生成的等间隔时间差序列,这些时间差按照指定的频率排列,并且每个时间差都对应着一个具体的时间长度(如1天、2小时等)。
67-4-3、属性:TimedeltaIndex对象具有多个属性,如dtype(数据类型,表示时间差的纳秒表示)、freq(频率,表示时间差的生成频率)、inferred_freq(推断的频率,当没有明确指定freq时,Pandas 会尝试推断时间差序列的频率)等,这些属性描述了时间差索引的基本信息。
67-4-4、操作:TimedeltaIndex对象支持多种操作,如索引、切片、算术运算(如加法、减法)等,这些操作使得用户能够方便地对时间差索引进行进一步的处理和分析。
67-5、说明
无
67-6、用法
67-6-1、数据准备
无
67-6-2、代码示例
# 67、pandas.timedelta_range函数 # 67-1、使用start和periods import pandas as pd # 从0天0小时开始,生成包含5个时间差的序列,每个时间差为1天 td_range = pd.timedelta_range(start='0 days', periods=5, freq='D') print(td_range, end='\n\n') # 67-2、使用start、end和freq import pandas as pd # 从1小时开始,到10小时结束,每小时一个时间差 td_range = pd.timedelta_range(start='1 hours', end='10 hours', freq='H') print(td_range, end='\n\n') # 67-3、使用end和periods import pandas as pd # 从0天开始,到3天结束,包含4个时间差(注意:这里不直接指定freq,但Pandas会尝试推断) td_range = pd.timedelta_range(end='3 days', periods=4) print(td_range, end='\n\n') # 67-4、指定name参数 import pandas as pd # 生成时间差序列,并指定索引名称 td_range = pd.timedelta_range(start='0 days', periods=5, freq='D', name='Time_Differences') print(td_range)
67-6-3、结果输出
# 67、pandas.timedelta_range函数 # 67-1、使用start和periods # TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', freq='D') # 67-2、使用start、end和freq # TimedeltaIndex(['0 days 01:00:00', '0 days 02:00:00', '0 days 03:00:00', # '0 days 04:00:00', '0 days 05:00:00', '0 days 06:00:00', # '0 days 07:00:00', '0 days 08:00:00', '0 days 09:00:00', # '0 days 10:00:00'], # dtype='timedelta64[ns]', freq='h') # 67-3、使用end和periods # TimedeltaIndex(['0 days', '1 days', '2 days', '3 days'], dtype='timedelta64[ns]', freq='D') # 67-4、指定name参数 # TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'], dtype='timedelta64[ns]', name='Time_Differences', freq='D')