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

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

[复制链接]

2

主题

0

回帖

7

积分

新手上路

积分
7
发表于 2024-9-10 02:38:28 | 显示全部楼层 |阅读模式
目录一、用法精讲266、pandas.Series.dt.second属性266-1、语法266-2、参数266-3、功能266-4、返回值266-5、说明266-6、用法266-6-1、数据准备266-6-2、代码示例266-6-3、结果输出267、pandas.Series.dt.microsecond属性267-1、语法267-2、参数267-3、功能267-4、返回值267-5、说明267-6、用法267-6-1、数据准备267-6-2、代码示例267-6-3、结果输出268、pandas.Series.dt.nanosecond属性268-1、语法268-2、参数268-3、功能268-4、返回值268-5、说明268-6、用法268-6-1、数据准备268-6-2、代码示例268-6-3、结果输出269、pandas.Series.dt.dayofweek属性269-1、语法269-2、参数269-3、功能269-4、返回值269-5、说明269-6、用法269-6-1、数据准备269-6-2、代码示例269-6-3、结果输出270、pandas.Series.dt.weekday属性270-1、语法270-2、参数270-3、功能270-4、返回值270-5、说明270-6、用法270-6-1、数据准备270-6-2、代码示例270-6-3、结果输出二、推荐阅读1、Python筑基之旅2、Python函数之旅3、Python算法之旅4、Python魔法之旅5、博客个人主页一、用法精讲266、pandas.Series.dt.second属性266-1、语法#266、pandas.Series.dt.second属性pandas.Series.dt.secondThesecondsofthedatetime.266-2、参数    无266-3、功能        用于从包含datetime对象的pandas系列中提取秒数。266-4、返回值        返回一个包含每个datetime元素的秒数部分的Series对象。266-5、说明    使用场景:266-5-1、详细时间分析:需要对时间戳数据进行详细分析时,可以使用dt.second提取秒数。例如,分析每天不同秒数的分布情况。266-5-2、时间过滤:根据秒数进行数据过滤。例如,筛选出在特定秒数发生的事件。266-5-3、特征工程:在机器学习或数据挖掘中,将秒数作为特征之一,进行模型训练和预测。266-5-4、性能优化:在时间序列数据处理中,提取秒数可以帮助进行更细粒度的性能分析和优化。266-5-5、日志分析:在分析服务器日志或其他时间戳数据时,提取秒数可以帮助识别特定秒数内的访问模式或事件。266-6、用法266-6-1、数据准备无266-6-2、代码示例#266、pandas.Series.dt.second属性#266-1、详细时间分析importpandasaspd#创建一个包含10个时间戳的Series,每个时间戳间隔1秒data=pd.Series(pd.date_range("2024-01-01",periods=10,freq="s"))#提取秒数seconds=data.dt.secondprint("详细时间分析-秒数部分:")print(seconds,end='\n\n')#266-2、时间过滤importpandasaspd#创建一个包含100个时间戳的Series,每个时间戳间隔1秒data=pd.Series(pd.date_range("2024-01-01",periods=100,freq="s"))#筛选出在特定秒数(例如30秒)发生的事件filtered_data=data[data.dt.second==30]print("时间过滤-特定秒数的时间戳:")print(filtered_data,end='\n\n')#266-3、特征工程importpandasaspd#创建一个包含10个时间戳的Series,每个时间戳间隔1秒data=pd.Series(pd.date_range("2024-01-01",periods=10,freq="s"))#提取秒数并作为新列加入DataFramedata=pd.DataFrame(data,columns=['datetime'])data['second']=data['datetime'].dt.secondprint("特征工程-添加秒数特征:")print(data,end='\n\n')#266-4、性能优化importpandasaspd#创建一个包含100个时间戳的Series,每个时间戳间隔1分钟start_times=pd.Series(pd.date_range("2024-01-0112:00:00",periods=100,freq="min"))#提取秒数seconds=start_times.dt.second#筛选出秒数为0的时间点zero_second_times=start_times[seconds==0]print("性能优化-秒数为0的时间点:")print(zero_second_times,end='\n\n')#266-5、日志分析importpandasaspd#创建一个包含特定时间戳的Serieslog_times=pd.Series(pd.to_datetime(["2024-01-0100:00:10","2024-01-0100:00:20","2024-01-0100:00:30"]))#提取秒数log_seconds=log_times.dt.secondprint("日志分析-日志时间戳的秒数部分:")print(log_seconds)266-6-3、结果输出#266、pandas.Series.dt.second属性#266-1、详细时间分析#详细时间分析-秒数部分:#00#11#22#33#44#55#66#77#88#99#dtype:int32#266-2、时间过滤#时间过滤-特定秒数的时间戳:#302024-01-0100:00:30#902024-01-0100:01:30#dtype:datetime64[ns]#266-3、特征工程#特征工程-添加秒数特征:#datetimesecond#02024-01-0100:00:000#12024-01-0100:00:011#22024-01-0100:00:022#32024-01-0100:00:033#42024-01-0100:00:044#52024-01-0100:00:055#62024-01-0100:00:066#72024-01-0100:00:077#82024-01-0100:00:088#92024-01-0100:00:099#266-4、性能优化#性能优化-秒数为0的时间点:#02024-01-0112:00:00#12024-01-0112:01:00#22024-01-0112:02:00#32024-01-0112:03:00#42024-01-0112:04:00#...#952024-01-0113:35:00#962024-01-0113:36:00#972024-01-0113:37:00#982024-01-0113:38:00#992024-01-0113:39:00#Length:100,dtype:datetime64[ns]#266-5、日志分析#日志分析-日志时间戳的秒数部分:#010#120#230#dtype:int32267、pandas.Series.dt.microsecond属性267-1、语法#267、pandas.Series.dt.microsecond属性pandas.Series.dt.microsecondThemicrosecondsofthedatetime.267-2、参数    无267-3、功能        用于提取时间序列数据中微秒部分的值。267-4、返回值        返回一个包含时间序列中每个时间戳的微秒值的Series。267-5、说明    无267-6、用法267-6-1、数据准备无267-6-2、代码示例#267、pandas.Series.dt.microsecond属性#267-1、提取微秒值importpandasaspd#创建一个包含微秒部分的时间戳的Seriestime_series=pd.Series(pd.date_range("2024-01-0100:00:00",periods=5,freq="333333us"))#提取微秒部分microseconds=time_series.dt.microsecondprint("微秒值:")print(microseconds,end='\n\n')#267-2、筛选特定微秒值的时间戳importpandasaspd#创建一个包含微秒部分的时间戳的Seriestime_series=pd.Series(pd.date_range("2024-01-0100:00:00",periods=10,freq="333333us"))#提取微秒部分microseconds=time_series.dt.microsecond#筛选出微秒部分为333333的时间戳filtered_time_series=time_series[microseconds==333333]print("微秒部分为333333的时间戳:")print(filtered_time_series,end='\n\n')#267-3、添加微秒列到DataFrameimportpandasaspd#创建一个包含微秒部分的时间戳的Seriestime_series=pd.Series(pd.date_range("2024-01-0100:00:00",periods=5,freq="333333us"))#创建DataFrame并添加微秒列df=pd.DataFrame(time_series,columns=['datetime'])df['microsecond']=df['datetime'].dt.microsecondprint("添加微秒列的DataFrame:")print(df,end='\n\n')#267-4、详细时间分析-微秒部分importpandasaspd#创建一个包含微秒部分的时间戳的Seriestime_series=pd.Series(pd.date_range("2024-01-0100:00:00",periods=10,freq="333333us"))#提取微秒部分microseconds=time_series.dt.microsecondprint("详细时间分析-微秒部分:")print(microseconds)267-6-3、结果输出#267、pandas.Series.dt.microsecond属性#267-1、提取微秒值#微秒值:#00#1333333#2666666#3999999#4333332#dtype:int32#267-2、筛选特定微秒值的时间戳#微秒部分为333333的时间戳:#12024-01-0100:00:00.333333#dtype:datetime64[ns]#267-3、添加微秒列到DataFrame#添加微秒列的DataFrame:#datetimemicrosecond#02024-01-0100:00:00.0000000#12024-01-0100:00:00.333333333333#22024-01-0100:00:00.666666666666#32024-01-0100:00:00.999999999999#42024-01-0100:00:01.333332333332#267-4、详细时间分析-微秒部分#详细时间分析-微秒部分:#00#1333333#2666666#3999999#4333332#5666665#6999998#7333331#8666664#9999997#dtype:int32268、pandas.Series.dt.nanosecond属性268-1、语法#268、pandas.Series.dt.nanosecond属性pandas.Series.dt.nanosecondThenanosecondsofthedatetime.268-2、参数    无268-3、功能        用于提取时间序列数据中纳秒部分的值。268-4、返回值        返回一个包含时间序列中每个时间戳的纳秒值的Series。268-5、说明    无268-6、用法268-6-1、数据准备无268-6-2、代码示例#268、pandas.Series.dt.nanosecond属性#268-1、提取纳秒值importpandasaspd#创建一个包含纳秒部分的时间戳的Seriestime_series=pd.Series(pd.date_range("2024-01-0100:00:00",periods=5,freq="333333333ns"))#提取纳秒部分nanoseconds=time_series.dt.nanosecondprint("纳秒值:")print(nanoseconds,end='\n\n')#268-2、筛选特定纳秒值的时间戳importpandasaspd#创建一个包含纳秒部分的时间戳的Seriestime_series=pd.Series(pd.date_range("2024-01-0100:00:00",periods=10,freq="333333333ns"))#提取纳秒部分nanoseconds=time_series.dt.nanosecond#筛选出纳秒部分为333333333的时间戳filtered_time_series=time_series[nanoseconds==333333333]print("纳秒部分为333333333的时间戳:")print(filtered_time_series,end='\n\n')#268-3、添加纳秒列到DataFrameimportpandasaspd#创建一个包含纳秒部分的时间戳的Seriestime_series=pd.Series(pd.date_range("2024-01-0100:00:00",periods=5,freq="333333333ns"))#创建DataFrame并添加纳秒列df=pd.DataFrame(time_series,columns=['datetime'])df['nanosecond']=df['datetime'].dt.nanosecondprint("添加纳秒列的DataFrame:")print(df,end='\n\n')#268-4、详细时间分析-纳秒部分importpandasaspd#创建一个包含纳秒部分的时间戳的Seriestime_series=pd.Series(pd.date_range("2024-01-0100:00:00",periods=10,freq="333333333ns"))#提取纳秒部分nanoseconds=time_series.dt.nanosecondprint("详细时间分析-纳秒部分:")print(nanoseconds)268-6-3、结果输出#268、pandas.Series.dt.nanosecond属性#268-1、提取纳秒值#纳秒值:#00#1333#2666#3999#4332#dtype:int32#268-2、筛选特定纳秒值的时间戳#纳秒部分为333333333的时间戳:#Series([],dtype:datetime64[ns])#268-3、添加纳秒列到DataFrame#添加纳秒列的DataFrame:#datetimenanosecond#02024-01-0100:00:00.0000000000#12024-01-0100:00:00.333333333333#22024-01-0100:00:00.666666666666#32024-01-0100:00:00.999999999999#42024-01-0100:00:01.333333332332#268-4、详细时间分析-纳秒部分#详细时间分析-纳秒部分:#00#1333#2666#3999#4332#5665#6998#7331#8664#9997#dtype:int32269、pandas.Series.dt.dayofweek属性269-1、语法#269、pandas.Series.dt.dayofweek属性pandas.Series.dt.dayofweekThedayoftheweekwithMonday=0,Sunday=6.Returnthedayoftheweek.ItisassumedtheweekstartsonMonday,whichisdenotedby0andendsonSundaywhichisdenotedby6.ThismethodisavailableonbothSerieswithdatetimevalues(usingthedtaccessor)orDatetimeIndex.Returns:SeriesorIndexContainingintegersindicatingthedaynumber.269-2、参数    无269-3、功能        用于获取日期时间序列中每个日期的星期几的属性,具备此功能的还有pandas.Series.dt.day_of_week属性。269-4、返回值        返回一个整数值,表示一周中的星期几,其中0代表星期一,6代表星期天。269-5、说明    使用场景:269-5-1、工作日和周末分析:在进行销售、流量或其他业务指标的分析时,可以使用该属性来区分工作日和周末,从而更好地理解客户行为模式。269-5-2、时间序列数据的聚合:可以根据星期几对数据进行分组,从而计算每个星期几的平均值、总和或其他统计信息。例如,分析每周的销售额变化趋势。269-5-3、调度和排班:在员工排班或资源调度中,可以利用该属性来确定哪些日期是工作日,进而制定合理的工作安排。269-5-4、季节性趋势分析:在一些行业(如零售、旅游等),不同星期几的销售或用户活动可能存在显著差异,通过分析这些差异可以帮助制定更有效的营销策略。269-5-5、数据清洗和预处理:在处理时间序列数据时,可以利用该属性筛选出特定的日期,例如只保留工作日的数据,去除周末的数据。269-5-6、事件驱动分析:对于特定事件(如假期、促销活动等)的影响分析,可以使用星期几信息来比较这些事件在不同日期的效果。269-6、用法269-6-1、数据准备无269-6-2、代码示例#269、pandas.Series.dt.dayofweek属性#269-1、工作日和周末分析importpandasaspd#创建一个包含日期的数据data={'date':pd.date_range(start='2024-08-01',periods=10)}df=pd.DataFrame(data)#提取星期几df['day_of_week']=df['date'].dt.dayofweek#标记工作日和周末df['is_weekend']=df['day_of_week']>=5print(df,end='\n\n')#269-2、时间序列数据的聚合importpandasaspd#创建一个示例数据框data={'date':pd.date_range(start='2024-08-01',periods=30),'sales':range(30)}df=pd.DataFrame(data)#提取星期几并进行分组df['day_of_week']=df['date'].dt.dayofweekweekly_sales=df.groupby('day_of_week')['sales'].sum()print(weekly_sales,end='\n\n')#269-3、调度和排班importpandasaspd#创建一个包含日期的数据data={'date':pd.date_range(start='2024-08-01',periods=10)}df=pd.DataFrame(data)#提取星期几df['day_of_week']=df['date'].dt.dayofweek#根据星期几制定排班计划df['shift']=df['day_of_week'].apply(lambdax:'Morning'ifx
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-8 12:25 , Processed in 0.562441 second(s), 33 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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