本帖最后由 歌者文明清理员 于 2023-7-12 22:34 编辑
问题一的代码解答如下:
import pandas as pd
# 读取CSV文件
data = pd.read_csv('your_data.csv')
# 将时间戳列转换为datetime类型
data['timestamp'] = pd.to_datetime(data['timestamp'])
# 设置上午10点作为分界线
boundary_time = pd.to_datetime('10:00:00').time()
# 过滤出符合条件的数据
filtered_data = data[data['timestamp'].dt.time >= boundary_time]
# 提取每天的最大和最小量值行
daily_max_min = filtered_data.groupby(filtered_data['timestamp'].dt.date)['value'].agg(['max', 'min'])
# 输出结果
print(daily_max_min)
问题二的代码解答如下:
import pandas as pd
# 读取CSV文件
data = pd.read_csv('your_data.csv')
# 将时间戳列转换为datetime类型
data['timestamp'] = pd.to_datetime(data['timestamp'])
# 设置上午10点和下午10点作为白班和夜班的分界线
morning_shift_end = pd.to_datetime('10:00:00').time()
night_shift_end = pd.to_datetime('22:00:00').time()
# 根据班次划分数据
morning_shift_data = data[(data['timestamp'].dt.time >= morning_shift_end) & (data['timestamp'].dt.time < night_shift_end)]
night_shift_data = data[(data['timestamp'].dt.time >= night_shift_end) | (data['timestamp'].dt.time < morning_shift_end)]
# 提取每天每个班次的最大和最小量值行
morning_shift_max_min = morning_shift_data.groupby(morning_shift_data['timestamp'].dt.date)['value'].agg(['max', 'min'])
night_shift_max_min = night_shift_data.groupby(night_shift_data['timestamp'].dt.date)['value'].agg(['max', 'min'])
# 输出结果
print("白班最大值和最小值:")
print(morning_shift_max_min)
print("夜班最大值和最小值:")
print(night_shift_max_min)
请注意,以上代码中的'your_data.csv'应替换为实际的数据文件路径。 |