PEMS-SF 数据集处理 - 如何使用 Python 添加静态特征
处理 PEMS-SF 数据集时,可以通过 Python 来添加静态特征。以下是一个简单的步骤:
- 导入 PEMS-SF 数据集
首先,我们需要导入 PEMS-SF 数据集。可以使用 pandas 库中的 read_csv() 函数来读取 csv 文件,并将其存储在一个 DataFrame 对象中。
import pandas as pd
# 导入 PEMS-SF 数据集
df = pd.read_csv('PEMS_SF.csv')
- 添加静态特征
在 PEMS-SF 数据集中,静态特征包括天气、节假日等。由于我们没有这些静态特征的 csv 文件,我们可以使用其他数据源来获取这些信息。例如,我们可以使用天气 API 来获取天气信息,并使用节假日 API 来获取节假日信息。
import requests
# 获取天气信息
weather_api_key = 'your_weather_api_key'
weather_url = f'https://api.openweathermap.org/data/2.5/weather?q=San%20Francisco&appid={weather_api_key}'
response = requests.get(weather_url)
weather_data = response.json()
# 获取节假日信息
holiday_api_key = 'your_holiday_api_key'
holiday_url = f'https://calendarific.com/api/v2/holidays?api_key={holiday_api_key}&country=US&year=2021'
response = requests.get(holiday_url)
holiday_data = response.json()
在获取静态特征后,我们可以将其添加到 PEMS-SF 数据集中。例如,我们可以将天气信息添加到数据集中,并使用平均气温作为静态特征。
# 添加天气特征
weather = weather_data['weather'][0]['main']
temperature = weather_data['main']['temp']
df['weather'] = weather
df['temperature'] = temperature - 273.15 # 将温度从开尔文转换为摄氏度
# 计算平均气温
avg_temperature = df.groupby(['month', 'day'])['temperature'].mean()
df = pd.merge(df, avg_temperature, on=['month', 'day'], how='left')
df = df.rename(columns={'temperature_y': 'avg_temperature'})
df = df.drop(columns=['temperature_x'])
同样地,我们可以将节假日信息添加到数据集中,并使用 0 或 1 表示是否为节假日。
# 添加节假日特征
holidays = holiday_data['response']['holidays']
holiday_dates = [holiday['date']['iso'] for holiday in holidays]
df['is_holiday'] = df['date'].isin(holiday_dates).astype(int)
- 整理数据特征
最后,我们需要整理 PEMS-SF 数据集中的特征。例如,我们可以将小时和分钟组合为一个时间戳特征,并将其设置为索引。
# 将小时和分钟组合为时间戳
df['timestamp'] = pd.to_datetime(df['date'] + ' ' + df['hour'].astype(str) + ':' + df['minute'].astype(str))
# 将时间戳设置为索引
df = df.set_index('timestamp')
# 删除不需要的列
df = df.drop(columns=['date', 'hour', 'minute'])
通过以上步骤,我们可以成功地添加静态特征并整理 PEMS-SF 数据集中的特征。
原文地址: https://www.cveoy.top/t/topic/myip 著作权归作者所有。请勿转载和采集!