我现在有一个建筑物能耗数据集,包含建筑物id,记录时间,能耗抄表值等数据,其中记录时间为每小时一次,持续一整年。我现在想要按照时间把每月最后五天记录的数据作为测试集,其余的数据作为训练集。你能写一段python代码来完成这个划分吗?
时间: 2024-05-07 13:16:40 浏览: 14
当然可以,以下是一种可能的实现方式:
```python
import pandas as pd
from datetime import datetime, timedelta
# 读取数据集
df = pd.read_csv("能耗数据集.csv")
# 将记录时间转换为 pandas 的 datetime 格式
df["record_time"] = pd.to_datetime(df["record_time"])
# 对记录时间进行分组,取每月最后五天作为测试集
test_dates = []
for group_name, group_df in df.groupby(pd.Grouper(key="record_time", freq="M")):
last_five_days = group_df["record_time"].dt.day[-5:]
test_dates += list(last_five_days.dt.date)
# 标记测试集的数据
test_mask = df["record_time"].dt.day.isin(test_dates)
df["is_test"] = test_mask
# 拆分训练集和测试集
train_df = df[~test_mask]
test_df = df[test_mask]
# 输出拆分结果
print(f"训练集有 {len(train_df)} 条数据")
print(f"测试集有 {len(test_df)} 条数据")
```
这段代码首先读取建筑物能耗数据集,然后将记录时间转换为 pandas 的 datetime 格式。接着对记录时间进行分组,取每月最后五天作为测试集。然后标记测试集的数据,并将数据拆分为训练集和测试集。最后输出拆分结果。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)