跳到内容

时间序列数据

ydata-profiling 可用于对时间序列数据进行快速探索性数据分析 (Exploratory Data Analysis)。这对于快速了解时间相关变量的行为非常有用,例如时间图、季节性、趋势、平稳性和数据间隙等行为。

结合分析报告比较功能,您可以从时间序列特有的统计量(例如 PACF 和 ACF 图)的角度,比较数据的演变和时间行为。它还提供了时间序列中间隙的识别,这些间隙可能是由缺失值或时间索引中缺失的条目造成的。

时间序列 EDA 教程

您想学习如何解释时间序列分析报告吗?请查看此处的博客内容

您可以在我们的示例文件夹中找到包含完整代码的笔记本


Time-series profiling

时间序列分析报告

时间序列数据集分析

在假设数据集包含时间相关特征的情况下,可以使用以下语法生成分析报告

设置时间序列分析配置
import pandas as pd

from ydata_profiling.utils.cache import cache_file
from ydata_profiling import ProfileReport

file_name = cache_file(
    "pollution_us_2000_2016.csv",
    "https://query.data.world/s/mz5ot3l4zrgvldncfgxu34nda45kvb",
)

df = pd.read_csv(file_name, index_col=[0])

# Filtering time-series to profile a single site
site = df[df["Site Num"] == 3003]

#Enable tsmode to True to automatically identify time-series variables
#Provide the column name that provides the chronological order of your time-series
profile = ProfileReport(df, tsmode=True, sortby="Date Local", title="Time-Series EDA")

profile.to_file("report_timeseries.html")

要启用时间序列报告生成,需要将 ts_mode 设置为 True。如果设置为 True,则将根据自相关性自动识别具有时间依赖性的变量。时间序列报告使用 sortby 属性对数据集进行排序。如果未提供,则假定数据集已排序。您可以通过设置 x 配置来设置要检测的相关级别,以应用时间序列验证。

警告与验证

具体到时间序列分析,ydata-profiling 警告家族中新增了 2 个警告:NON_STATIONARYSEASONAL

平稳性

在时间序列分析领域,平稳时间序列是指其统计特性(例如均值、方差和自相关性)随时间保持不变的数据集。此特性对于许多时间序列预测和建模技术至关重要,因为它们通常假定基础数据是平稳的。平稳性通过使模式和趋势更容易检测来简化建模过程。

ydata-profiling 的平稳性警告基于 Augmented Dickey-Fuller(ADF) 检验。尽管如此,您应始终将此警告的输出与对时间序列行为的视觉检查相结合,并搜索滚动统计分析的方差。

季节性

季节性时间序列是一种特定类型的时间序列数据,它在规则的时间间隔内呈现重复模式或波动。这些模式称为季节性,常出现在与年度、月度、周度或日度周期相关的数据中。如果不处理潜在的季节性,准确建模季节性时间序列数据可能具有挑战性。

ydata-profiling 的季节性警告基于 Augmented Dickey-Fuller(ADF) 检验。尽管如此,您应始终将此警告的输出与季节性分解后的 PACF 和 ACF 图(也在您的时间序列分析报告中计算)相结合。

时间序列缺失间隙


Time-series gap analysis

时间序列缺失数据可视化

作为数据科学家,处理时间序列数据的一个关键方面是理解和分析时间序列中的间隙。时间序列间隙是指时间序列数据中缺少观测值或观测值不完整的时间段。虽然这些间隙可能看起来不方便,但它们包含有价值的信息,并会显著影响您分析和预测的质量和可靠性。

ydata-profiling 对潜在时间序列间隙的自动化识别基于时间间隔分析。通过分析数据点之间的时间间隔,预计这些间隙将表现为分布中较大的间隔。

您可以在此处设置用于识别缺失间隙的配置和间隔。

自定义时间序列变量

在某些情况下,您可能已经知道哪些变量是时间序列变量,或者您可能只是想确保您希望作为时间序列分析的变量得到相应的分析

设置哪些变量是时间序列变量
import pandas as pd

from ydata_profiling.utils.cache import cache_file
from ydata_profiling import ProfileReport

file_name = cache_file(
    "pollution_us_2000_2016.csv",
    "https://query.data.world/s/mz5ot3l4zrgvldncfgxu34nda45kvb",
)

df = pd.read_csv(file_name, index_col=[0])

# Filtering time-series to profile a single site
site = df[df["Site Num"] == 3003]

# Setting what variables are time series
type_schema = {
    "NO2 Mean": "timeseries",
    "NO2 1st Max Value": "timeseries",
    "NO2 1st Max Hour": "timeseries",
    "NO2 AQI": "timeseries",
}

profile = ProfileReport(
    df,
    tsmode=True,
    type_schema=type_schema,
    sortby="Date Local",
    title="Time-Series EDA for site 3003",
)

profile.to_file("report_timeseries.html")

关于时间序列分析的更多问题和建议,请联系我们 Data-Centric AI 社区