读取期货数据集(JM) 设置‘time’为索引序列 修改2中设置的‘time’索引为时间序列索引 提取2018年数据,构建新的数据集。下述题目将基于2018年数据实现。 查看并提取2018年数据中包含NaN(空)的记录 填充空值(请自行设计填充值,或分别将open_price, high_price, low_price, close_price中空值,填充为对应序列的均值、最高价、最低价、前项数据) 再次查看空值是否填充成功。 对2018数据进行重复值检测。若有重复值,则删除重复,然后再次验证。 箱型图查看异常值数据(2018) 过滤异常值,可使用“四分位距”过滤算法,或“3sigma” 过滤算法,不用输出
时间: 2023-12-10 13:37:01 浏览: 725
时间序列分析-基于R 课后习题数据
以下是Python代码实现:
```python
import pandas as pd
import numpy as np
# 读取期货数据集(JM)并设置time为索引序列
df = pd.read_csv('JM_2015_2020.csv')
df = df.set_index('time')
# 修改time索引为时间序列索引
df.index = pd.to_datetime(df.index)
# 提取2018年数据,构建新的数据集
df_2018 = df['2018']
# 查看并提取2018年数据中包含NaN的记录
nan_records = df_2018[df_2018.isnull().any(axis=1)]
# 填充空值
df_2018 = df_2018.fillna(method='ffill') # 前项填充
# 再次查看空值是否填充成功
print(df_2018.isnull().sum())
# 对2018数据进行重复值检测
print(df_2018.duplicated().sum())
# 删除重复值
df_2018 = df_2018.drop_duplicates()
# 箱型图查看异常值数据(2018)
df_2018.plot.box()
# 过滤异常值
Q1 = df_2018.quantile(0.25)
Q3 = df_2018.quantile(0.75)
IQR = Q3 - Q1
df_2018_filtered = df_2018[~((df_2018 < (Q1 - 1.5 * IQR)) | (df_2018 > (Q3 + 1.5 * IQR))).any(axis=1)]
```
其中,最后一行代码使用四分位距过滤异常值。如果要使用3sigma过滤算法,可以将最后一行代码修改为:
```python
df_2018_filtered = df_2018[~((df_2018 - df_2018.mean()) > 3 * df_2018.std()).any(axis=1)]
```
阅读全文