找回密码
 会员注册
查看: 27|回复: 0

Python酷库之旅-第三方库Pandas(070)

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
70601
发表于 2024-9-10 02:47:52 | 显示全部楼层 |阅读模式
目录一、用法精讲281、pandas.Series.dt.daysinmonth属性281-1、语法281-2、参数281-3、功能281-4、返回值281-5、说明281-6、用法281-6-1、数据准备281-6-2、代码示例281-6-3、结果输出282、pandas.Series.dt.tz属性282-1、语法282-2、参数282-3、功能282-4、返回值282-5、说明282-6、用法282-6-1、数据准备282-6-2、代码示例282-6-3、结果输出283、pandas.Series.dt.freq属性283-1、语法283-2、参数283-3、功能283-4、返回值283-5、说明283-6、用法283-6-1、数据准备283-6-2、代码示例283-6-3、结果输出284、pandas.Series.dt.isocalendar属性284-1、语法284-2、参数284-3、功能284-4、返回值284-5、说明284-6、用法284-6-1、数据准备284-6-2、代码示例284-6-3、结果输出285、pandas.Series.dt.to_period方法285-1、语法285-2、参数285-3、功能285-4、返回值285-5、说明285-6、用法285-6-1、数据准备285-6-2、代码示例285-6-3、结果输出二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页一、用法精讲281、pandas.Series.dt.daysinmonth属性281-1、语法#281、pandas.Series.dt.daysinmonth属性pandas.Series.dt.daysinmonthThenumberofdaysinthemonth.281-2、参数    无281-3、功能        用于返回一个包含每个日期对应月份的天数的序列,这在时间序列分析中尤其有用,比如需要计算每个月的总天数时,或在处理日期数据时,需要知道某个月有多少天来进行一些特定的操作或分析,具备同样功能的还有pandas.Series.dt.days_in_month属性。281-4、返回值        返回每个时间戳所对应月份的天数,其返回值是一个包含每个时间戳所在月份天数的整数系列(Series)。281-5、说明    使用场景:281-5-1、财务分析:确定每个月的天数对月末结算、预算编制和财务预测非常重要。例如,财务团队需要知道每个月的天数以便准确计算月度预算和实际开销。281-5-2、数据完整性检查:在处理时间序列数据时,例如销售数据或传感器数据,可以使用daysinmonth确认每个月的数据是否完整,如果某个月的数据少于应有天数,可能需要进一步调查和处理。281-5-3、平均日值计算:在数据分析中,经常需要将月度数据转换为平均日值。例如,在分析气象数据时,需要计算每月的平均日气温或降雨量。281-5-4、时间序列转换:在某些情况下,可能需要将时间序列数据从月度转换为季度或年度数据,在这种转换过程中,需要知道每个月的天数以进行适当的加权计算。281-5-5、资源规划和调度:在项目管理和资源规划中,了解每个月的天数可以帮助更好地进行资源分配和调度。例如,在人员管理中,根据每个月的天数合理分配工作量。281-5-6、时间序列模拟:在模拟时间序列数据时,可以根据每个月的天数生成更为真实和合理的数据。例如,模拟每日销售数据时,可以根据每个月的天数生成月度数据。281-5-7、时间序列分析:在进行季节性和周期性分析时,每个月的天数是一个重要的参考因素。例如,在分析股票市场的月度回报率时,可以考虑每个月的天数来计算加权平均值。281-6、用法281-6-1、数据准备无281-6-2、代码示例#281、pandas.Series.dt.daysinmonth属性#281-1、财务分析-月末结算和预算编制importpandasaspd#创建一个日期序列date_series=pd.date_range(start='2023-01-01',end='2023-12-31',freq='MS')#假设每个月的开销(单位:美元)monthly_expenses=pd.Series([3000,2800,3200,3100,2900,2700,3500,3300,3400,3600,3800,3700],index=date_series)#计算每月的天数days_in_month=date_series.daysinmonth#计算每月的平均日开销daily_expenses=monthly_expenses/days_in_monthprint(daily_expenses,end='\n\n')#281-2、数据完整性检查-验证数据完整性importpandasaspd#假设一个日期序列和对应的数据date_series=pd.date_range(start='2023-01-01',end='2023-12-31')data=pd.Series(range(len(date_series)),index=date_series)#计算每个月的数据点expected_days=date_series.to_series().dt.daysinmonthactual_days=data.groupby(data.index.month).size()#检查是否有缺失的数据missing_data=expected_days-actual_daysprint(missing_data,end='\n\n')#281-3、平均日值计算-计算每月的平均日气温importpandasaspd#创建一个日期序列date_series=pd.date_range(start='2023-01-01',end='2023-12-31',freq='MS')#假设每个月的平均气温(单位:摄氏度)monthly_temperature=pd.Series([2.5,3.0,5.5,10.0,15.0,20.0,25.0,24.0,20.0,15.0,8.0,3.0],index=date_series)#计算每月的天数days_in_month=date_series.daysinmonth#计算每月的平均日气温average_daily_temperature=monthly_temperature/days_in_monthprint(average_daily_temperature,end='\n\n')#281-4、时间序列转换-将月度数据转换为季度数据importpandasaspd#创建一个日期序列date_series=pd.date_range(start='2023-01-01',end='2023-12-31',freq='ME')#假设每个月的某项数据(单位:任意)monthly_data=pd.Series([100,120,110,130,140,150,160,170,180,190,200,210],index=date_series)#计算每月的天数days_in_month=date_series.daysinmonth#将月度数据转换为季度数据quarterly_data=monthly_data.resample('QE').sum()/date_series.to_series().dt.daysinmonth.groupby(pd.Grouper(freq='QE')).sum()print(quarterly_data,end='\n\n')#281-5、资源规划和调度-根据每个月的天数规划人力资源importpandasaspd#创建一个日期序列date_series=pd.date_range(start='2023-01-01',end='2023-12-31',freq='ME')#假设总工作量(单位:小时)total_workload=1200#创建一个包含日期的Seriesdate_series=pd.Series(date_series)#计算每月的天数days_in_month=date_series.dt.daysinmonth#根据每个月的天数规划人力资源workload_per_day=total_workload/days_in_month.sum()print(workload_per_day,end='\n\n')#281-6、时间序列模拟-生成模拟的每日销售数据importpandasaspd#创建一个日期序列date_series=pd.date_range(start='2023-01-01',end='2023-12-31',freq='ME')#假设每个月的销售数据(单位:任意)monthly_sales=pd.Series([3000,3200,3100,3300,3400,3500,3600,3700,3800,3900,4000,4100],index=date_series)#计算每月的天数days_in_month=date_series.daysinmonth#生成模拟的每日销售数据simulated_daily_sales=monthly_sales/days_in_monthprint(simulated_daily_sales,end='\n\n')#281-7、时间序列分析-计算加权平均回报率importpandasaspdfrompandas.tseries.offsetsimportMonthEnd#创建一个日期序列,表示每个月的月末date_series=pd.date_range(start='2023-01-01',end='2023-12-31',freq=MonthEnd())#假设每个月的回报率(单位:百分比),注意这里转换为小数形式monthly_return=pd.Series([0.02,0.015,0.025,0.03,0.028,0.031,0.029,0.032,0.035,0.038,0.04,0.037],index=date_series)#初始化一个列表来存储每个月的天数days_in_month=[]#计算每个月的天数foriinrange(len(date_series)-1):start_date=date_series[i]end_date=date_series[i+1]#由于freq='ME',end_date实际上是下个月的月末,所以我们用end_date-MonthEnd()来获取本月最后一天last_day_of_month=end_date-MonthEnd(1)#计算这个月有多少天days_in_month.append((last_day_of_month-start_date).days+1)#转换为pandasSeries以便进行索引和计算days_in_month=pd.Series(days_in_month,index=date_series[:-1])#去掉最后一个月末的日期,因为它不包含数据#计算加权平均回报率#注意:我们需要将days_in_month向前移动一个月,以便与monthly_return的索引对齐weighted_return=(monthly_return*days_in_month.shift(1)).sum()/days_in_month.sum()#由于我们使用了shift(1),所以第一个月的回报率没有被计算在内(因为没有前一个月的天数)#如果我们希望包含整个年份的回报率,我们可以选择忽略第一个月或者使用一个默认值#但在这里,我们假设数据是从第二个月开始有效的,或者简单地忽略这个细节#打印加权平均回报率print(weighted_return)281-6-3、结果输出#281、pandas.Series.dt.daysinmonth属性#281-1、财务分析-月末结算和预算编制#2023-01-0196.774194#2023-02-01100.000000#2023-03-01103.225806#2023-04-01103.333333#2023-05-0193.548387#2023-06-0190.000000#2023-07-01112.903226#2023-08-01106.451613#2023-09-01113.333333#2023-10-01116.129032#2023-11-01126.666667#2023-12-01119.354839#Freq:MS,dtype:float64#281-2、数据完整性检查-验证数据完整性#2023-01-0100:00:00NaN#2023-01-0200:00:00NaN#2023-01-0300:00:00NaN#2023-01-0400:00:00NaN#2023-01-0500:00:00NaN#..#8NaN#9NaN#10NaN#11NaN#12NaN#Length:377,dtype:float64#281-3、平均日值计算-计算每月的平均日气温#2023-01-010.080645#2023-02-010.107143#2023-03-010.177419#2023-04-010.333333#2023-05-010.483871#2023-06-010.666667#2023-07-010.806452#2023-08-010.774194#2023-09-010.666667#2023-10-010.483871#2023-11-010.266667#2023-12-010.096774#Freq:MS,dtype:float64#281-4、时间序列转换-将月度数据转换为季度数据#2023-03-313.666667#2023-06-304.615385#2023-09-305.543478#2023-12-316.521739#FreqE-DEC,dtype:float64#281-5、资源规划和调度-根据每个月的天数规划人力资源#3.287671232876712#281-6、时间序列模拟-生成模拟的每日销售数据#2023-01-3196.774194#2023-02-28114.285714#2023-03-31100.000000#2023-04-30110.000000#2023-05-31109.677419#2023-06-30116.666667#2023-07-31116.129032#2023-08-31119.354839#2023-09-30126.666667#2023-10-31125.806452#2023-11-30133.333333#2023-12-31132.258065#Freq:ME,dtype:float64#281-7、时间序列分析-计算加权平均回报率#0.027545454545454543282、pandas.Series.dt.tz属性282-1、语法#282、pandas.Series.dt.tz属性pandas.Series.dt.tzReturnthetimezone.Returns:datetime.tzinfo,pytz.tzinfo.BaseTZInfo,dateutil.tz.tz.tzfile,orNoneReturnsNonewhenthearrayistz-naive.282-2、参数    无282-3、功能        用于获取或设置pandas.Series对象中时间戳的时区信息。282-4、返回值        如果pandas.Series中的时间戳带有时区信息,则dt.tz返回pytz库中的tzinfo对象,表示时间戳的时区。例如,表示协调世界时(UTC);如果pandas.Series中的时间戳没有时区信息,则dt.tz返回None。282-5、说明    无282-6、用法282-6-1、数据准备无282-6-2、代码示例#282、pandas.Series.dt.tz属性importpandasaspd#创建一个带有UTC时区的时间戳Series对象timestamps_with_tz=pd.Series(pd.date_range('2024-01-01',periods=3,freq='D',tz='UTC'))#获取时区信息timezone_info=timestamps_with_tz.dt.tzprint(timezone_info)#创建一个没有时区的时间戳Series对象timestamps_no_tz=pd.Series(pd.date_range('2024-01-01',periods=3,freq='D'))#获取时区信息timezone_info_no_tz=timestamps_no_tz.dt.tzprint(timezone_info_no_tz)282-6-3、结果输出#282、pandas.Series.dt.tz属性#UTC#None283、pandas.Series.dt.freq属性283-1、语法#283、pandas.Series.dt.freq属性pandas.Series.dt.freq283-2、参数        无283-3、功能        用于返回时间序列数据的频率信息,它提供了时间序列索引的频率属性,可以帮助你确定数据的时间间隔,这对于时间序列数据的处理和分析非常重要,特别是在需要进行频率转换、重采样或预测等操作时。283-4、返回值         返回一个pandas.tseries.offsets.DateOffset对象,代表时间序列的频率。如果时间序列不规则(即没有固定频率),则返回None。283-5、说明    使用场景:283-5-1、频率检测与验证:283-5-1-1、检测时间序列的规律性:在处理时间序列数据时,了解数据的频率有助于确定其是否规律。例如,检测数据是否为日频、月频等,以便选择合适的分析方法。283-5-1-2、验证数据的完整性:通过检测频率,可以识别数据中是否存在缺失值或异常点。例如,日频数据中可能存在缺少某几天的数据,通过dt.freq可以帮助发现这些问题。283-5-2、重采样操作:283-5-2-1、频率转换:在重采样操作中,需要将数据从一种频率转换为另一种频率,例如从日频转换为月频,dt.freq可以帮助确定当前数据的频率,从而选择合适的重采样规则。283-5-2-2、聚合与降采样:在降采样时(例如,从分钟频率降到小时频率),了解原始数据的频率有助于正确地聚合数据。283-5-3、时间序列的绘图:在时间序列的可视化中,频率信息可以帮助设置合适的时间刻度,使得图表更加清晰易读。例如,在月频数据的图表中,可以设置每个月为一个刻度。283-5-4、异常检测:当时间序列数据不规则时,dt.freq会返回None,这种情况下,可以进一步分析数据的异常点或缺失值。283-6、用法283-6-1、数据准备无283-6-2、代码示例#283、pandas.Series.dt.freq属性#283-1、检测频率与验证数据完整性importpandasaspd#创建一个日频率的时间序列数据date_range=pd.date_range(start='2024-01-01',periods=10,freq='D')data=pd.Series(range(10),index=date_range)print("时间序列的频率:",data.index.freq)#检查是否有缺失日期expected_dates=pd.date_range(start='2024-01-01',end='2024-01-10',freq='D')missing_dates=expected_dates.difference(data.index)iflen(missing_dates)>0:print("缺失的日期:",missing_dates)else:print("没有缺失的日期",end='\n\n')#283-2、重采样操作importpandasaspd#创建一个小时频率的时间序列数据hourly_range=pd.date_range(start='2024-01-01',periods=24,freq='h')hourly_data=pd.Series(range(24),index=hourly_range)print("原始数据的频率:",hourly_data.index.freq)#将小时频率的数据重采样为日频daily_data=hourly_data.resample('D').sum()print("重采样后的频率:",daily_data.index.freq)print(daily_data,end='\n\n')#283-3、时间序列的绘图importpandasaspdimportmatplotlib.pyplotaspltimportmatplotlib#配置字体,确保中文字符正常显示matplotlib.rcParams['font.sans-serif']=['MicrosoftYaHei']#创建一个月频率的时间序列数据date_range=pd.date_range(start='2023-01-01',periods=12,freq='ME')data=pd.Series(range(12),index=date_range)print("时间序列的频率:",data.index.freq)#绘制时间序列图plt.figure(figsize=(10,5))plt.plot(data.index,data,marker='o')plt.title('时间序列图')plt.xlabel('日期')plt.ylabel('值')plt.grid(True)plt.show()#283-4、异常检测importpandasaspd#创建一个不规则的时间序列数据irregular_range=pd.to_datetime(['2024-01-01','2024-01-02','2024-01-04'])irregular_data=pd.Series([1,2,3],index=irregular_range)print("不规则时间序列的频率:",irregular_data.index.freq)#检查不规则时间序列的缺失日期expected_dates=pd.date_range(start='2024-01-01',end='2024-01-04',freq='D')missing_dates=expected_dates.difference(irregular_data.index)iflen(missing_dates)>0:print("缺失的日期:",missing_dates)else:print("没有缺失的日期")283-6-3、结果输出#283、pandas.Series.dt.freq属性#283-1、检测频率与验证数据完整性#时间序列的频率:#没有缺失的日期#283-2、重采样操作#原始数据的频率:#重采样后的频率:#2024-01-01276#Freq,dtype:int64#283-3、时间序列的绘图#见图1#283-4、异常检测#时间序列的频率:#不规则时间序列的频率:None#缺失的日期atetimeIndex(['2024-01-03'],dtype='datetime64[ns]',freq='D')图1: 284、pandas.Series.dt.isocalendar属性284-1、语法#284、pandas.Series.dt.isocalendar属性pandas.Series.dt.isocalendar()Calculateyear,week,anddayaccordingtotheISO8601standard.ReturnsataFrameWithcolumnsyear,weekandday.284-2、参数    无284-3、功能        可以从日期时间对象中提取ISO年、ISO周和ISO星期几的信息。284-4、返回值        返回一个DataFrame,其中包含三列:year、week和day。284-5、说明    使用场景:284-5-1、财务分析:在财务分析中,经常需要基于周、月或季度来汇总数据,使用ISO周数可以确保所有数据按照一致的周次进行汇总和分析。例如,比较每周的销售数据,分析季节性趋势。284-5-2、周报和计划安排:ISO周数用于生成周报,确保每个报告周期的数据准确,特别是在计划和项目管理中。例如,生成项目进度周报、员工工作计划。284-5-3、周期性数据分析:在时间序列分析中,识别和分析周期性趋势或季节性波动是常见任务,使用ISO周数有助于准确定位每周的数据点。例如,分析周度流量、评估季节性商品销售。284-5-4、数据清理和对齐:在处理来自不同时间区域的数据时,使用ISO日历可以帮助标准化日期,以便更好地合并和对齐数据。例如,合并不同来源的时间序列数据。284-5-5、国际化业务:ISO周数在国际化业务中尤其重要,因为它避免了由于不同地区采用不同的周定义(如周一或周日为一周开始)而产生的日期混淆。例如,跨国公司的全球报告系统。284-6、用法284-6-1、数据准备无284-6-2、代码示例#284、pandas.Series.dt.isocalendar属性#284-1、财务分析importpandasaspd#创建一个销售数据DataFramedata={'date':pd.date_range('2024-07-01',periods=10,freq='D'),'sales':[100,150,200,250,300,350,400,450,500,550]}df=pd.DataFrame(data)#提取ISO年和周数df['iso_year']=df['date'].dt.isocalendar().yeardf['iso_week']=df['date'].dt.isocalendar().week#按ISO周汇总销售数据weekly_sales=df.groupby(['iso_year','iso_week'])['sales'].sum().reset_index()print(weekly_sales,end='\n\n')#284-2、周报和计划安排importpandasaspd#创建一个项目进度DataFramedata={'task':['TaskA','TaskB','TaskC','TaskD'],'start_date':pd.to_datetime(['2024-01-02','2024-01-05','2024-01-08','2024-01-11']),'end_date':pd.to_datetime(['2024-01-06','2024-01-09','2024-01-12','2024-01-15'])}df=pd.DataFrame(data)#提取ISO年和周数df['start_week']=df['start_date'].dt.isocalendar().weekdf['end_week']=df['end_date'].dt.isocalendar().week#输出结果print(df,end='\n\n')#284-3、周期性数据分析importpandasaspdimportmatplotlib.pyplotasplt#创建一个流量数据DataFramedata={'date':pd.date_range('2024-07-01',periods=30,freq='D'),'traffic':[500,600,700,800,900,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300,2400,2500,2600,2700,2800,2900,3000,3100,3200,3300,3400]}df=pd.DataFrame(data)#提取ISO周数df['iso_week']=df['date'].dt.isocalendar().week#按周汇总流量数据weekly_traffic=df.groupby('iso_week')['traffic'].sum()#绘制流量趋势图plt.plot(weekly_traffic.index,weekly_traffic.values)plt.xlabel('ISOWeek')plt.ylabel('Traffic')plt.title('WeeklyTrafficAnalysis')plt.grid(True)plt.show()#284-4、数据清理和对齐importpandasaspd#创建两个来源的数据data1={'date':pd.to_datetime(['2024-01-01','2024-01-02','2024-01-03']),'value':[10,20,30]}data2={'date':pd.to_datetime(['2024-01-04','2024-01-05','2024-01-06']),'value':[40,50,60]}df1=pd.DataFrame(data1)df2=pd.DataFrame(data2)#提取ISO年和周数df1['iso_week']=df1['date'].dt.isocalendar().weekdf2['iso_week']=df2['date'].dt.isocalendar().week#合并数据merged_data=pd.concat([df1,df2]).reset_index(drop=True)#输出结果print(merged_data,end='\n\n')#284-5、国际化业务importpandasaspd#创建一个国际化日期数据DataFramedata={'region':['US','EU','Asia'],'date':pd.to_datetime(['2024-01-01','2024-01-02','2024-01-03'])}df=pd.DataFrame(data)#提取ISO年和周数df['iso_week']=df['date'].dt.isocalendar().week#输出结果print(df)284-6-3、结果输出#284、pandas.Series.dt.isocalendar属性#284-1、财务分析#iso_yeariso_weeksales#02024271750#12024281500#284-2、周报和计划安排#taskstart_dateend_datestart_weekend_week#0TaskA2024-01-022024-01-0611#1TaskB2024-01-052024-01-0912#2TaskC2024-01-082024-01-1222#3TaskD2024-01-112024-01-1523#284-3、周期性数据分析#见图2#284-4、数据清理和对齐#datevalueiso_week#02024-01-01101#12024-01-02201#22024-01-03301#32024-01-04401#42024-01-05501#52024-01-06601#284-5、国际化业务#regiondateiso_week#0US2024-01-011#1EU2024-01-021#2Asia2024-01-031图2: 285、pandas.Series.dt.to_period方法285-1、语法#285、pandas.Series.dt.to_period方法pandas.Series.dt.to_period(*args,**kwargs)CasttoPeriodArray/PeriodIndexataparticularfrequency.ConvertsDatetimeArray/IndextoPeriodArray/PeriodIndex.Parameters:freqstrorPeriod,optionalOneofpandas’periodaliasesoranPeriodobject.Willbeinferredbydefault.ReturnseriodArray/PeriodIndexRaises:ValueErrorWhenconvertingaDatetimeArray/Indexwithnon-regularvalues,sothatafrequencycannotbeinferred.285-2、参数285-2-1、*args(可选):其他位置参数,为后续扩展功能做预留。285-2-2、**kwargs(可选):其他关键字参数,为后续扩展功能做预留。285-3、功能        将Series对象中的日期时间数据转换为周期数据,这对于时间序列分析非常有用,例如,按月、按季度或按年汇总数据;通过指定不同的频率,可以将日期时间数据转换为不同的周期类型。285-4、返回值        返回一个新的Series对象,其中包含Period对象,Period是一个表示时间段的对象,例如一个月、一季度或一年等。285-5、说明        使用场景:285-5-1、数据汇总:将高频数据(如每日数据)汇总到较低频率的数据(如月度、季度或年度),以便于统计分析和报告。例如,将每日销售数据汇总为月度销售数据;将每小时的温度记录汇总为每月的平均温度。285-5-2、时间序列分析:按不同周期对数据进行分析,观察和比较不同周期的趋势和变化。例如,比较不同季度的销售额增长趋势;分析年度的气候变化模式。285-5-3、数据对齐:在处理多个时间序列时,确保数据对齐到同一周期,以便进行进一步的比较和分析。例如,将两个不同频率的时间序列(如每日和每周数据)对齐到同一周期(如每月)。285-5-4、绘制周期图表:将时间序列数据按指定周期进行绘制,以便更直观地展示数据趋势和变化。例如,绘制每月的销售额变化图;绘制每季度的气温变化图。285-5-5、数据过滤:按指定周期过滤数据,以便仅分析和处理特定时间段的数据。例如,过滤出特定月份的数据;只处理特定年份的数据。285-6、用法285-6-1、数据准备无285-6-2、代码示例#285、pandas.Series.dt.to_period方法#285-1、数据汇总importpandasaspd#创建包含每日销售数据的Seriesdate_series=pd.Series([100,200,150,300,250],index=pd.date_range("2024-01-01",periods=5,freq="D"))#转换为月度周期period_series_month=date_series.resample('ME').sum()print(period_series_month,end='\n\n')#285-2、时间序列分析importpandasaspd#创建包含每日销售数据的Seriesdate_series=pd.Series([100,200,150,300,250,400,350,450,500,600],index=pd.date_range("2024-01-01",periods=10,freq="D"))#转换为季度周期period_series_quarter=date_series.to_period('Q').groupby(level=0).sum()print(period_series_quarter,end='\n\n')#285-3、数据对齐importpandasaspd#创建包含每日销售数据的Seriesdate_series_daily=pd.Series([100,200,150,300,250],index=pd.date_range("2024-01-01",periods=5,freq="D"))#创建包含每周销售数据的Seriesdate_series_weekly=pd.Series([700,800],index=pd.date_range("2024-01-01",periods=2,freq="W"))#转换为月度周期并对齐period_series_daily_month=date_series_daily.to_period('M').groupby(level=0).sum()period_series_weekly_month=date_series_weekly.to_period('M').groupby(level=0).sum()aligned_series=period_series_daily_month.add(period_series_weekly_month,fill_value=0)print(aligned_series,end='\n\n')#285-4、绘制周期图表importmatplotlib.pyplotasplt#创建包含每日销售数据的Seriesdate_series=pd.Series([100,200,150,300,250,400,350,450,500,600],index=pd.date_range("2024-01-01",periods=10,freq="D"))#转换为月度周期period_series_month=date_series.to_period('M').groupby(level=0).sum()#绘制图表period_series_month.plot(kind='bar')plt.title('MonthlySales')plt.xlabel('Month')plt.ylabel('Sales')plt.show()#285-5、数据过滤importpandasaspd#创建包含每日销售数据的Seriesdate_series=pd.Series([100,200,150,300,250,400,350,450,500,600],index=pd.date_range("2024-01-01",periods=10,freq="D"))#转换为月度周期period_series_month=date_series.to_period('M')#过滤出2024年1月份的数据filtered_series=period_series_month[period_series_month.index=='2024-01']print(filtered_series)285-6-3、结果输出#285、pandas.Series.dt.to_period方法#285-1、数据汇总#2024-01-311000#Freq:ME,dtype:int64#285-2、时间序列分析#2024Q13300#Freq-DEC,dtype:int64#285-3、数据对齐#2024-012500#Freq:M,dtype:int64#285-4、绘制周期图表#见图3#285-5、数据过滤#2024-01100#2024-01200#2024-01150#2024-01300#2024-01250#2024-01400#2024-01350#2024-01450#2024-01500#2024-01600#Freq:M,dtype:int64图3: 二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-8 12:23 , Processed in 1.154223 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表