Python酷库之旅-第三方库Pandas(073)
目录
一、用法精讲
296、pandas.Series.dt.as_unit方法
296-1、语法
296-2、参数
296-3、功能
296-4、返回值
296-5、说明
296-6、用法
296-6-1、数据准备
296-6-2、代码示例
296-6-3、结果输出
297、pandas.Series.dt.days属性
297-1、语法
297-2、参数
297-3、功能
297-4、返回值
297-5、说明
297-6、用法
297-6-1、数据准备
297-6-2、代码示例
297-6-3、结果输出
298、pandas.Series.dt.seconds属性
298-1、语法
298-2、参数
298-3、功能
298-4、返回值
298-5、说明
298-6、用法
298-6-1、数据准备
298-6-2、代码示例
298-6-3、结果输出
299、pandas.Series.dt.microseconds属性
299-1、语法
299-2、参数
299-3、功能
299-4、返回值
299-5、说明
299-6、用法
299-6-1、数据准备
299-6-2、代码示例
299-6-3、结果输出
300、pandas.Series.dt.nanoseconds属性
300-1、语法
300-2、参数
300-3、功能
300-4、返回值
300-5、说明
300-6、用法
300-6-1、数据准备
300-6-2、代码示例
300-6-3、结果输出
二、推荐阅读
1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页
一、用法精讲
296、pandas.Series.dt.as_unit方法
296-1、语法
# 296、pandas.Series.dt.as_unit方法
pandas.Series.dt.as_unit(*args, **kwargs)
296-2、参数
296-2-1、unit(必须):字符串,指定目标时间单位,具体包括:'Y'(年)、 'M'(月)、'D'(日)、'h'(小时)、 'm'(分钟)、's'(秒)、'ms'(毫秒)、 'us'(微秒)、'ns'(纳秒)。
296-3、功能
将DatetimeIndex对象中的时间数据转换为指定的时间单位,这对于时间序列数据的处理非常有用,特别是在需要将时间数据从高精度单位转换为低精度单位时。
296-4、返回值
返回一个新的pandas.Series对象,其中的时间数据被转换为指定的时间单位,转换后的数据会以指定的时间单位进行表示。
296-5、说明
使用场景:
296-5-1、时间序列重采样: 在进行重采样操作时,可能需要将高频率的时间戳转换为低频率的时间单位。例如,将分钟级别的数据转换为小时级别的数据,方便进行日常或周分析。
296-5-2、特征工程: 在机器学习模型中,有时需要将时间特征转换为更易于理解或使用的格式。比如,将时间戳转换为天数或小时数,以便进行数值计算或分类。
296-5-3、可视化: 在数据可视化时,选择合适的时间单位可以使图表更清晰。例如,将秒级别的数据转换为分钟或小时,可以使图表更易于阅读。
296-5-4、统计分析: 进行时间序列的统计分析时,可能需要将数据转换为不同的时间单位,以便计算如平均值、标准差等统计量。
296-6、用法
296-6-1、数据准备
无
296-6-2、代码示例
# 296、pandas.Series.dt.as_unit方法
# 296-1、时间序列重采样
import pandas as pd
# 创建分钟级别的时间序列数据
minute_data = pd.Series(range(60), index=pd.date_range('2024-01-01', periods=60, freq='min'))
# 将数据重采样为小时
hourly_data = minute_data.resample('h').sum()
print(hourly_data, end='\n\n')# 296-2、特征工程
import pandas as pd
# 创建一个时间序列
time_series = pd.Series(pd.date_range('2024-01-01', periods=10, freq='h'))
# 将时间转换为小时数
hours_since_start = (time_series - time_series.min()).dt.total_seconds() / 3600
print(hours_since_start, end='\n\n')# 296-3、可视化
import pandas as pd
import matplotlib.pyplot as plt
# 创建一个小时级别的时间序列数据
hourly_data = pd.Series(range(24), index=pd.date_range('2024-01-01', periods=24, freq='h'))
# 将数据按天显示
daily_data = hourly_data.resample('D').sum()
# 可视化
daily_data.plot(kind='bar', color='purple')
plt.title('Daily Data')
plt.xlabel('Date')
plt.ylabel('Value')
plt.xticks(rotation=0)
plt.show()# 296-4、统计分析
import pandas as pd
# 创建一个包含随机时间戳的数据
timestamps = pd.Series(pd.date_range('2024-01-01', periods=100, freq='min'))
# 计算每分钟的计数,并转换为小时
count_per_hour = timestamps.dt.to_period('h').value_counts()
print(count_per_hour, end='\n\n')
296-6-3、结果输出
# 296、pandas.Series.dt.as_unit方法
# 296-1、时间序列重采样
# 2024-01-01 1770
# Freq: h, dtype: int64# 296-2、特征工程
# 0 0.0
# 1 1.0
# 2 2.0
# 3 3.0
# 4 4.0
# 5 5.0
# 6 6.0
# 7 7.0
# 8 8.0
# 9 9.0
# dtype: float64# 296-3、可视化
# 见图1# 296-4、统计分析
# 2024-01-01 00:00 60
# 2024-01-01 01:00 40
# Freq: h, Name: count, dtype: int64
图1:
297、pandas.Series.dt.days属性
297-1、语法
# 297、pandas.Series.dt.days属性
pandas.Series.dt.days
297-2、参数
无
297-3、功能
用于提取时间间隔(timedelta)的天数部分,该属性通常应用于包含时间间隔数据的Series对象。
297-4、返回值
返回一个新的Series,其值为原始时间间隔的天数部分,数据类型为整数(int64)。
297-5、说明
使用场景:
297-5-1、项目管理和任务追踪:在项目管理中,可能需要分析任务的持续时间。例如,找到所有超过一定天数的任务。
297-5-2、营销活动分析:在分析营销活动的效果时,可能需要计算用户从注册到首次购买的天数,然后分析这段时间的分布。
297-5-3、工业和制造:在工业或制造领域,可能需要计算机器维修的间隔时间,并分析这些间隔时间以优化维护计划。
297-5-4、医疗健康:在医疗分析中,该属性可以用于计算患者在住院期间和康复期间的天数。
297-6、用法
297-6-1、数据准备
无
297-6-2、代码示例
# 297、pandas.Series.dt.qyear属性
# 297-1、项目管理和任务追踪
import pandas as pd
# 创建一个包含任务开始和结束时间的DataFrame
data = {'task_id': [1, 2, 3],'start_time': ['2024-01-01', '2024-01-05', '2024-01-10'],'end_time': ['2024-01-05', '2024-01-10', '2024-01-20']
}
df = pd.DataFrame(data)
df['start_time'] = pd.to_datetime(df['start_time'])
df['end_time'] = pd.to_datetime(df['end_time'])
# 计算每个任务的持续时间
df['duration'] = df['end_time'] - df['start_time']
# 提取持续时间中的天数
df['duration_days'] = df['duration'].dt.days
# 过滤掉持续时间超过5天的任务
long_tasks = df[df['duration_days'] > 5]
print(long_tasks, end='\n\n')# 297-2、营销活动分析
import pandas as pd
# 创建一个包含用户注册和首次购买时间的DataFrame
data = {'user_id': [1001, 1002, 1003],'registration_date': ['2024-01-01', '2024-01-10', '2024-01-15'],'first_purchase_date': ['2024-01-15', '2024-01-20', '2024-01-25']
}
df = pd.DataFrame(data)
df['registration_date'] = pd.to_datetime(df['registration_date'])
df['first_purchase_date'] = pd.to_datetime(df['first_purchase_date'])
# 计算从注册到首次购买的时间间隔
df['time_to_first_purchase'] = df['first_purchase_date'] - df['registration_date']
# 提取间隔中的天数
df['days_to_first_purchase'] = df['time_to_first_purchase'].dt.days
print(df, end='\n\n')# 297-3、工业和制造
import pandas as pd
# 创建一个包含机器维修记录的DataFrame
data = {'machine_id': [1, 1, 1, 2, 2],'repair_date': ['2024-01-01', '2024-01-15', '2024-02-01', '2024-01-10', '2024-01-25']
}
df = pd.DataFrame(data)
df['repair_date'] = pd.to_datetime(df['repair_date'])
# 按机器和时间排序记录
df = df.sort_values(by=['machine_id', 'repair_date'])
# 计算维修间隔
df['previous_repair_date'] = df.groupby('machine_id')['repair_date'].shift(1)
df['repair_interval'] = df['repair_date'] - df['previous_repair_date']
# 提取间隔中的天数
df['repair_interval_days'] = df['repair_interval'].dt.days
print(df, end='\n\n')# 297-4、医疗健康
import pandas as pd
# 创建一个包含患者入院和出院日期的DataFrame
data = {'patient_id': [1, 2, 3],'admission_date': ['2024-01-01', '2024-01-10', '2024-01-15'],'discharge_date': ['2024-01-20', '2024-01-15', '2024-02-01']
}
df = pd.DataFrame(data)
df['admission_date'] = pd.to_datetime(df['admission_date'])
df['discharge_date'] = pd.to_datetime(df['discharge_date'])
# 计算住院天数
df['hospital_stay_duration'] = df['discharge_date'] - df['admission_date']
# 提取住院天数
df['hospital_stay_days'] = df['hospital_stay_duration'].dt.days
print(df)
297-6-3、结果输出
# 297、pandas.Series.dt.qyear属性
# 297-1、项目管理和任务追踪
# task_id start_time end_time duration duration_days
# 2 3 2024-01-10 2024-01-20 10 days 10# 297-2、营销活动分析
# user_id registration_date ... time_to_first_purchase days_to_first_purchase
# 0 1001 2024-01-01 ... 14 days 14
# 1 1002 2024-01-10 ... 10 days 10
# 2 1003 2024-01-15 ... 10 days 10
#
# [3 rows x 5 columns]# 297-3、工业和制造
# machine_id repair_date ... repair_interval repair_interval_days
# 0 1 2024-01-01 ... NaT NaN
# 1 1 2024-01-15 ... 14 days 14.0
# 2 1 2024-02-01 ... 17 days 17.0
# 3 2 2024-01-10 ... NaT NaN
# 4 2 2024-01-25 ... 15 days 15.0
#
# [5 rows x 5 columns]# 297-4、医疗健康
# patient_id admission_date ... hospital_stay_duration hospital_stay_days
# 0 1 2024-01-01 ... 19 days 19
# 1 2 2024-01-10 ... 5 days 5
# 2 3 2024-01-15 ... 17 days 17
#
# [3 rows x 5 columns]
298、pandas.Series.dt.seconds属性
298-1、语法
# 298、pandas.Series.dt.seconds属性
pandas.Series.dt.seconds
Number of seconds (>= 0 and less than 1 day) for each element.
298-2、参数
无
298-3、功能
用于从时间间隔(即timedelta对象)中提取秒数,该属性返回时间间隔中所包含的整秒数,而不包括分钟、小时等更大单位的部分。
298-4、返回值
一个Series对象,由整型构成,其中每个值表示对应时间间隔中的整秒数部分。
298-5、说明
使用场景:
298-5-1、任务和事件持续时间分析:在项目管理中,通常需要分析每个任务或事件的持续时间,以便进行资源分配和效率评估。
298-5-2、网站会话分析:在网站分析中,了解用户会话的持续时间对于优化用户体验至关重要。
298-5-3、机器运行时间分析:在制造业中,分析机器的运行时间有助于维护和优化生产效率。
298-5-4、视频播放分析:在多媒体分析中,计算视频播放的持续时间有助于理解用户的观看行为。
298-6、用法
298-6-1、数据准备
无
298-6-2、代码示例
# 298、pandas.Series.dt.seconds属性
# 298-1、任务和事件持续时间分析
import pandas as pd
# 创建包含任务开始和结束时间的数据
data = {'task_id': [1, 2, 3],'start_time': ['2024-01-01 08:00:00', '2024-01-02 09:00:00', '2024-01-03 10:00:00'],'end_time': ['2024-01-01 08:30:30', '2024-01-02 09:45:15', '2024-01-03 10:25:50']
}
df = pd.DataFrame(data)
df['start_time'] = pd.to_datetime(df['start_time'])
df['end_time'] = pd.to_datetime(df['end_time'])
# 计算每个任务的持续时间
df['duration'] = df['end_time'] - df['start_time']
# 提取持续时间中的秒数
df['duration_seconds'] = df['duration'].dt.seconds
print(df, end='\n\n')# 298-2、网站会话分析
import pandas as pd
# 创建包含用户会话开始和结束时间的数据
data = {'session_id': [101, 102, 103],'login_time': ['2024-01-01 10:00:00', '2024-01-01 10:15:00', '2024-01-01 11:00:00'],'logout_time': ['2024-01-01 10:25:00', '2024-01-01 10:30:30', '2024-01-01 11:20:45']
}
df = pd.DataFrame(data)
df['login_time'] = pd.to_datetime(df['login_time'])
df['logout_time'] = pd.to_datetime(df['logout_time'])
# 计算每个会话的持续时间
df['session_duration'] = df['logout_time'] - df['login_time']
# 提取会话持续时间中的秒数
df['session_duration_seconds'] = df['session_duration'].dt.seconds
print(df, end='\n\n')# 298-3、机器运行时间分析
import pandas as pd
# 创建包含机器运行开始和结束时间的数据
data = {'machine_id': [1, 2, 3],'start_time': ['2024-01-01 06:00:00', '2024-01-01 12:00:00', '2024-01-01 18:00:00'],'end_time': ['2024-01-01 08:15:45', '2024-01-01 14:30:20', '2024-01-01 20:45:50']
}
df = pd.DataFrame(data)
df['start_time'] = pd.to_datetime(df['start_time'])
df['end_time'] = pd.to_datetime(df['end_time'])
# 计算每台机器的运行时间
df['running_duration'] = df['end_time'] - df['start_time']
# 提取运行时间中的秒数
df['running_duration_seconds'] = df['running_duration'].dt.seconds
print(df, end='\n\n')# 298-4、视频播放分析
import pandas as pd
# 创建包含视频播放开始和结束时间的数据
data = {'video_id': [1, 2, 3],'start_time': ['2024-01-01 12:00:00', '2024-01-01 13:00:00', '2024-01-01 14:00:00'],'end_time': ['2024-01-01 12:10:30', '2024-01-01 13:15:45', '2024-01-01 14:20:50']
}
df = pd.DataFrame(data)
df['start_time'] = pd.to_datetime(df['start_time'])
df['end_time'] = pd.to_datetime(df['end_time'])
# 计算每次播放的持续时间
df['playback_duration'] = df['end_time'] - df['start_time']
# 提取播放持续时间中的秒数
df['playback_duration_seconds'] = df['playback_duration'].dt.seconds
print(df)
298-6-3、结果输出
# 298、pandas.Series.dt.seconds属性
# 298-1、任务和事件持续时间分析
# task_id start_time ... duration duration_seconds
# 0 1 2024-01-01 08:00:00 ... 0 days 00:30:30 1830
# 1 2 2024-01-02 09:00:00 ... 0 days 00:45:15 2715
# 2 3 2024-01-03 10:00:00 ... 0 days 00:25:50 1550
#
# [3 rows x 5 columns]# 298-2、网站会话分析
# session_id login_time ... session_duration session_duration_seconds
# 0 101 2024-01-01 10:00:00 ... 0 days 00:25:00 1500
# 1 102 2024-01-01 10:15:00 ... 0 days 00:15:30 930
# 2 103 2024-01-01 11:00:00 ... 0 days 00:20:45 1245
#
# [3 rows x 5 columns]# 298-3、机器运行时间分析
# machine_id start_time ... running_duration running_duration_seconds
# 0 1 2024-01-01 06:00:00 ... 0 days 02:15:45 8145
# 1 2 2024-01-01 12:00:00 ... 0 days 02:30:20 9020
# 2 3 2024-01-01 18:00:00 ... 0 days 02:45:50 9950
#
# [3 rows x 5 columns]# 298-4、视频播放分析
# video_id start_time ... playback_duration playback_duration_seconds
# 0 1 2024-01-01 12:00:00 ... 0 days 00:10:30 630
# 1 2 2024-01-01 13:00:00 ... 0 days 00:15:45 945
# 2 3 2024-01-01 14:00:00 ... 0 days 00:20:50 1250
#
# [3 rows x 5 columns]
299、pandas.Series.dt.microseconds属性
299-1、语法
# 299、pandas.Series.dt.microseconds属性
pandas.Series.dt.microseconds
Number of microseconds (>= 0 and less than 1 second) for each element.
299-2、参数
无
299-3、功能
从一个时间间隔(timedelta)对象中提取微秒部分。
299-4、返回值
返回一个整数序列,每个整数表示时间间隔的微秒部分。
299-5、说明
使用场景:
299-5-1、精确任务持续时间分析:在需要精确计算任务持续时间的场景下,特别是需要精确到微秒级别时,这个属性非常有用。
299-5-2、高频交易数据分析:在金融领域,高频交易数据的时间戳精度要求极高,需要分析交易执行时间精确到微秒。
299-5-3、科学实验数据分析:在科学实验中,尤其是物理实验和工程测试中,常常需要对精确到微秒的时间间隔进行分析。
299-6、用法
299-6-1、数据准备
无
299-6-2、代码示例
# 299、pandas.Series.dt.microseconds属性
# 299-1、精确任务持续时间分析
import pandas as pd
# 创建包含任务开始和结束时间的数据
data = {'task_id': [1, 2, 3],'start_time': ['2024-01-01 08:00:00.123456', '2024-01-02 09:00:00.654321', '2024-01-03 10:00:00.789012'],'end_time': ['2024-01-01 08:30:30.654321', '2024-01-02 09:45:15.987654', '2024-01-03 10:25:50.123456']
}
df = pd.DataFrame(data)
df['start_time'] = pd.to_datetime(df['start_time'])
df['end_time'] = pd.to_datetime(df['end_time'])
# 计算每个任务的持续时间
df['duration'] = df['end_time'] - df['start_time']
# 提取持续时间中的微秒数
df['duration_microseconds'] = df['duration'].dt.microseconds
print(df, end='\n\n')# 299-2、高频交易数据分析
import pandas as pd
# 创建包含交易执行时间的数据
data = {'trade_id': [1, 2, 3],'execution_start': ['2024-01-01 09:30:00.123456', '2024-01-01 09:30:01.654321', '2024-01-01 09:30:02.789012'],'execution_end': ['2024-01-01 09:30:00.223456', '2024-01-01 09:30:01.754321', '2024-01-01 09:30:02.889012']
}
df = pd.DataFrame(data)
df['execution_start'] = pd.to_datetime(df['execution_start'])
df['execution_end'] = pd.to_datetime(df['execution_end'])
# 计算每笔交易的执行时间
df['execution_duration'] = df['execution_end'] - df['execution_start']
# 提取执行时间中的微秒数
df['execution_microseconds'] = df['execution_duration'].dt.microseconds
print(df, end='\n\n')# 299-3、科学实验数据分析
import pandas as pd
# 创建包含实验开始和结束时间的数据
data = {'experiment_id': [1, 2, 3],'start_time': ['2024-01-01 12:00:00.000123', '2024-01-01 12:30:00.000456', '2024-01-01 13:00:00.000789'],'end_time': ['2024-01-01 12:00:00.000223', '2024-01-01 12:30:00.000556', '2024-01-01 13:00:00.000889']
}
df = pd.DataFrame(data)
df['start_time'] = pd.to_datetime(df['start_time'])
df['end_time'] = pd.to_datetime(df['end_time'])
# 计算每个实验的持续时间
df['duration'] = df['end_time'] - df['start_time']
# 提取持续时间中的微秒数
df['duration_microseconds'] = df['duration'].dt.microseconds
print(df)
299-6-3、结果输出
# 299、pandas.Series.dt.microseconds属性
# 299-1、精确任务持续时间分析
# task_id ... duration_microseconds
# 0 1 ... 530865
# 1 2 ... 333333
# 2 3 ... 334444
#
# [3 rows x 5 columns]# 299-2、高频交易数据分析
# trade_id ... execution_microseconds
# 0 1 ... 100000
# 1 2 ... 100000
# 2 3 ... 100000
#
# [3 rows x 5 columns]# 299-3、科学实验数据分析
# experiment_id ... duration_microseconds
# 0 1 ... 100
# 1 2 ... 100
# 2 3 ... 100
#
# [3 rows x 5 columns]
300、pandas.Series.dt.nanoseconds属性
300-1、语法
# 300、pandas.Series.dt.nanoseconds属性
pandas.Series.dt.nanoseconds
Number of nanoseconds (>= 0 and less than 1 microsecond) for each element.
300-2、参数
无
300-3、功能
从一个时间间隔(timedelta)对象中提取纳秒部分。
300-4、返回值
返回一个整数序列,每个整数表示时间间隔的纳秒部分。
300-5、说明
使用场景:
300-5-1、高精度科学实验分析:在一些高精度的科学实验中,例如物理实验和工程测试中,数据记录可能精确到纳秒级别。
300-5-2、高频交易分析:在金融领域,高频交易的数据精确度要求极高,需要分析交易执行时间精确到纳秒。
300-5-3、电子工程测试:在电子工程测试中,例如测量信号延迟和处理时间,常常需要精确到纳秒级别的时间分析。
300-6、用法
300-6-1、数据准备
无
300-6-2、代码示例
# 300、pandas.Series.dt.nanoseconds属性
# 300-1、高精度科学实验分析
import pandas as pd
# 创建包含实验开始和结束时间的数据
data = {'experiment_id': [1, 2, 3],'start_time': ['2024-01-01 12:00:00.000000123', '2024-01-01 12:30:00.000000456', '2024-01-01 13:00:00.000000789'],'end_time': ['2024-01-01 12:00:00.000000223', '2024-01-01 12:30:00.000000556', '2024-01-01 13:00:00.000000889']
}
df = pd.DataFrame(data)
df['start_time'] = pd.to_datetime(df['start_time'])
df['end_time'] = pd.to_datetime(df['end_time'])
# 计算每个实验的持续时间
df['duration'] = df['end_time'] - df['start_time']
# 提取持续时间中的纳秒数
df['duration_nanoseconds'] = df['duration'].dt.nanoseconds
print(df, end='\n\n')# 300-2、高频交易分析
import pandas as pd
# 创建包含交易执行时间的数据
data = {'trade_id': [1, 2, 3],'execution_start': ['2024-01-01 09:30:00.000000163', '2024-01-01 09:30:01.000000486', '2024-01-01 09:30:02.000000799'],'execution_end': ['2024-01-01 09:30:00.000000223', '2024-01-01 09:30:01.000000556', '2024-01-01 09:30:02.000000889']
}
df = pd.DataFrame(data)
df['execution_start'] = pd.to_datetime(df['execution_start'])
df['execution_end'] = pd.to_datetime(df['execution_end'])
# 计算每笔交易的执行时间
df['execution_duration'] = df['execution_end'] - df['execution_start']
# 提取执行时间中的纳秒数
df['execution_nanoseconds'] = df['execution_duration'].dt.nanoseconds
print(df, end='\n\n')# 300-3、电子工程测试
import pandas as pd
# 创建包含信号发送和接收时间的数据
data = {'signal_id': [1, 2, 3],'send_time': ['2024-01-01 10:00:00.000000316', '2024-01-01 10:05:00.000000618', '2024-01-01 10:10:00.000000889'],'receive_time': ['2024-01-01 10:00:00.000000423', '2024-01-01 10:05:00.000000856', '2024-01-01 10:10:00.000000989']
}
df = pd.DataFrame(data)
df['send_time'] = pd.to_datetime(df['send_time'])
df['receive_time'] = pd.to_datetime(df['receive_time'])
# 计算每个信号的传输时间
df['transmission_duration'] = df['receive_time'] - df['send_time']
# 提取传输时间中的纳秒数
df['transmission_nanoseconds'] = df['transmission_duration'].dt.nanoseconds
print(df)
300-6-3、结果输出
# 300、pandas.Series.dt.nanoseconds属性
# 300-1、高精度科学实验分析
# experiment_id ... duration_nanoseconds
# 0 1 ... 100
# 1 2 ... 100
# 2 3 ... 100
#
# [3 rows x 5 columns]# 300-2、高频交易分析
# trade_id ... execution_nanoseconds
# 0 1 ... 60
# 1 2 ... 70
# 2 3 ... 90
#
# [3 rows x 5 columns]# 300-3、电子工程测试
# signal_id ... transmission_nanoseconds
# 0 1 ... 107
# 1 2 ... 238
# 2 3 ... 100
#
# [3 rows x 5 columns]
二、推荐阅读
1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页
相关文章:

Python酷库之旅-第三方库Pandas(073)
目录 一、用法精讲 296、pandas.Series.dt.as_unit方法 296-1、语法 296-2、参数 296-3、功能 296-4、返回值 296-5、说明 296-6、用法 296-6-1、数据准备 296-6-2、代码示例 296-6-3、结果输出 297、pandas.Series.dt.days属性 297-1、语法 297-2、参数 297-3、…...

使用easyexcel导出,发生了Exception: could not find acceptable repesentation
报错信息: 原因以及解决方案: 原因是我的代码使用Resp响应返回实体,其实使用EasyExcel导出已经设置了响应编码,导致重复了。 当你通过 HttpServletResponse 的输出流写入文件时,你已经直接控制了响应体。如果此时还尝…...
android display 笔记(五)HWC(Hardware Composer)
HWC 简单来说HWC是用来合成图形和显示图形的,可以把多个图形缓存传给硬件混合渲染器,让硬件混合渲染器执行合成操作,显示图形就是直接将图形缓存显示到屏幕。 android 14 /hardware/interfaces/graphics/composer/2.1/IComposer.hal 19 im…...

【模电笔记】——集成运算放大电路
tips:本章节的笔记已经打包到word文档里啦,建议大家下载文章顶部资源(有时看不到是在审核中,等等就能下载了。手机端下载后里面的插图可能会乱,建议电脑下载,兼容性更好且易于观看),…...

Android Studio Gradle多渠道打包
原理使用Android Studio打一次渠道包,用反编译工具反编译后,修改渠道信息重新编译 准备文件 分渠道配置文件:channel.txt ↓ # 多渠道配置里“统计平台”、“市场名称”、“渠道编号”分别代表什么意思? # 统计平台:…...
什么是DNS缓存?DNS缓存有哪些作用和危害?
在互联网世界的运转机制中,DNS(域名系统)是其中的关键,而DNS缓存则是这一系统的重要环节。它既能加快网站的访问速度,同时也会对网络安全造成影响,因此了解DNS缓存对于网站的日常管理至关重要。 什么是DNS…...

web基础与http协议与配置
目录 一、web基础 1.1 DNS与域名(详解看前面章节) 1.2 网页的概念(HTTP/HTTPS) 1.2.1 基本概念 1.2.2 HTML文档结构(了解) 1.2.3 web相关重点 1.2.4 静态资源和动态资源 二、http协议 2.1 概述 2.2 cookie和session&…...
机械学习—零基础学习日志(python编程2)
零基础为了学人工智能,正在艰苦的学习 这里把,函数以及类相关的知识做一个笔记,放在这里。 期待与大家交流~ 变量作用域 Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的…...

element-plus的表单输入框有清除按钮的,文字输入前后宽度不一致怎么解决
输入内容之后多了一个可清除的图标,输入框的宽度也被撑开了 根据输入前后的dom对比发现,多了一个图标的span标签 :deep(.el-input__wrapper) {position: relative;.el-input__inner {padding-right: 18px;}.el-input__suffix {position: absolute;right:…...
解决Docker拉取镜像时 i/o timeout错误
目录 一,设置Docker镜像源(推荐) 1.1 解决方案1:配置加速地址 1.2 解决方案2:使用代理拉取镜像 1.3 解决方案3:备用办法:直接传送镜像 二,目前可用的镜像源 一,设置…...

面壁的智能开源 MiniCPM-V 2.6 边缘人工智能多模态功能与 GPT-4V 不相上下
"MiniCPM-V2.6 "是一个边缘多模态人工智能模型,仅拥有 80 亿个参数,却在单图像、多图像和视频理解任务中取得了低于 200 亿个参数的三项 SOTA(艺术境界)成绩,显著增强了边缘多模态能力,并与 GPT-…...

dhcp+checkkickstar的实验理解
文章目录 实验介绍使用的服务介绍PXE服务dhcp服务Kickstart 服务tftp服务 第一部分(基础部分)代码展示注意点第一点第二点 结果展示 第二部分(…...
Android网络安全:如何防止中间人攻击
文章目录 引言一、中间人攻击概述二、预防中间人攻击的方法2.1 使用HTTPS2.2 证书锁定(Certificate Pinning)2.3 使用SSL/TLS最佳实践2.4 验证主机名 三、总结 引言 中间人攻击(Man-in-the-Middle,简称MITM)是一种常见…...

NOI Linux 2.0 的安装说明以及使用指南
关于 NOI Linux 2.0 NOI Linux 是 NOI 竞赛委员会基于 Ubuntu 操作系统开发的一款 Linux 桌面发行版,是一套免费的、专门为信息学奥林匹克竞赛选手设计的操作系统,是 NOI 系列赛事指定操作系统,适用于常见笔记本电脑和桌面电脑。 新建虚拟机…...
07、MySQL-多表查询
目录 1、内连接 1.1 隐式内连接 1.2 显式内连接 2、外连接 2.1 左外连接 2.2 右外连接 3、自连接 4、联合查询 5、子查询 5.1 标量子查询 5.2 列子查询 5.3 行子查询 5.4 表子查询 1、内连接 概念:相当于查询A、B表交集的部分数据 1.1 隐式内连接 语法&…...

20240809 每日AI必读资讯
乒乓球AI机器人赢了人类!正反手灵活转换,擦网球高球都能接 - 谷歌发布首个达到人类竞技水平的机器人Agent,挑战乒乓球赛场。 - 机器人通过学习大量乒乓球状态数据,掌握了正手上旋球、反手瞄准等技能,展现出高速运动…...
《投资的原理》阅读笔记一
这是我准备集中学习投资类书籍后阅读的第8本书,但是是第一本读到一半决定从新开始、每章都写笔记的第一本书。 《投资的原理》的作者陈嘉禾先生是一位资深的价值投资者,书中也是大力弘扬着价值投资,跟我倾向于量化投资方向的想法并不合拍&am…...

金九银十,全网最详细的软件测试面试题总结
前面看到了一些面试题,总感觉会用得到,但是看一遍又记不住,所以我把面试题都整合在一起,都是来自各路大佬的分享,为了方便以后自己需要的时候刷一刷,不用再到处找题,今天把自己整理的这些面试题…...

ActiveMQ任意文件写入漏洞(CVE-2016-3088)复现
一.环境配置 腾讯云的ubuntu操作系统,已经安装有docker 和 vulhub 直接来到 启动环境docker-compose,要在root权限下运行。 docker-compose up -d 若出现等待时间过长的情况,请参考这篇文章http://t.csdnimg.cn/SYhbE 访问http://公网ip:8…...

网络协议四 物理层,数据链路层
从这一节开始学习 五层模型。学习方法是从最底层物理层开始学习 七层模型 五层模型 各个层用的协议,以及加上协议后的称谓 各个层的作用 应用层:可以认为是原始数据,该数据称为 报文,用户数据。 运输层:也叫传输层&am…...

利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...