tsfresh.utilities 包
子模块
tsfresh.utilities.dataframe_functions 模块
用于处理 DataFrame 转换为内部标准化格式(参见 normalize_input_to_internal_representation)或处理 DataFrame 中 NaN 和 inf 的实用函数。
- tsfresh.utilities.dataframe_functions.add_sub_time_series_index(df_or_dict, sub_length, column_id=None, column_sort=None, column_kind=None)[source]
- 添加一个包含“id”的列,其内容如下: - 如果 column_id 为 None:对于每种类型(如果 column_kind 也为 None 则对于整个数据帧),通过将数据“子打包”成长度为“sub_length”的包来构建一个新的索引。例如,如果您有长度为 11 的数据且 sub_length 为 2,您将获得 6 个新包:0, 0; 1, 1; 2, 2; 3, 3; 4, 4; 5。 
- 如果 column_id 不为 None:与之前相同,但分别针对每个 id。旧的 column_id 值在逗号后添加到新的“id”列中。 
 - 您可以使用此函数将一个长测量值转换为子包,您希望在这些子包上提取特征。 - 参数:
- df_or_dict (pandas.DataFrame 或 dict) – pandas DataFrame 或字典。对象的所需形状/形式取决于其余传入的参数。 
- column_id (basestring 或 None) – 必须存在于 pandas DataFrame 或字典中的所有 DataFrame 中。此列不允许有 NaN 值。 
- column_sort (basestring 或 None) – 如果不为 None,则按此列对行进行排序。此列不允许有 NaN 值。 
- column_kind (basestring 或 None) – 仅在传入 pandas DataFrame 时可以使用(字典已被假定按类型分组)。它必须存在于 DataFrame 中且不允许有 NaN 值。如果未传入类型列,则假定 pandas DataFrame 中的每列(id 或排序列除外)都是一种可能的类型。 
 
- 返回:
- 添加了“id”列的数据帧或数据帧字典 
- 返回类型:
- 与 df_or_dict 相同 
 
- tsfresh.utilities.dataframe_functions.check_for_nans_in_columns(df, columns=None)[source]
- 辅助函数,用于检查数据帧中的 - NaN,如果存在,则抛出- ValueError。- 参数:
- df (pandas.DataFrame) – 要测试 NaN 的 pandas DataFrame 
- columns (list) – 要测试 NaN 的列列表。如果留空,将测试 DataFrame 的所有列。 
 
- 返回:
- 无 
- 返回类型:
- 无 
- 抛出:
- ValueError如果在 DataFrame 中找到- NaNs。
 
- tsfresh.utilities.dataframe_functions.get_ids(df_or_dict, column_id)[source]
- 从时间序列容器聚合 column_id 中的所有 id - 参数:
- df_or_dict (pandas.DataFrame 或 dict) – pandas DataFrame 或字典。 
- column_id (basestring) – 必须存在于 pandas DataFrame 或字典中的所有 DataFrame 中。此列不允许有 NaN 值。 
 
- 返回:
- 作为一个集合,包含 energy_ratio_by_chunks 中的所有现有 id 
- 返回类型:
- 集合 
- 抛出:
- TypeError如果 df_or_dict 不是 dict 或 pandas.DataFrame 类型
 
- tsfresh.utilities.dataframe_functions.get_range_values_per_column(df)[source]
- 检索 DataFrame df 中每列的有限最大值、最小值和中位数,并将它们存储在三个字典中。这些字典 col_to_max、col_to_min、col_to_median 将列名映射到该列的最大值、最小值或中位数。 - 如果一列完全不包含任何有限值,则存储 0。 - 参数:
- df (pandas.DataFrame) – 要获取每列最大值、最小值和中位数的数据帧 
- 返回:
- 将列名映射到最大值、最小值、平均值的字典 
- 返回类型:
- (dict, dict, dict) 
 
- tsfresh.utilities.dataframe_functions.impute(df_impute)[source]
- 按列将 DataFrame df_impute 中的所有 - NaNs和- infs替换为同列的平均值/极端值。具体替换方式如下: df_impute 中出现的每个- inf或- NaN将被替换为:- -inf->- min
- +inf->- max
- NaN->- median
 - 如果该列完全不包含有限值,则填充零。 - 此函数修改 df_impute 原位。之后,保证 df_impute 不包含任何非有限值。此外,保证所有列都是 - np.float64类型。- 参数:
- df_impute (pandas.DataFrame) – 要填充的 DataFrame 
- 返回 df_impute:
- 填充后的 DataFrame 
- 返回类型 df_impute:
- pandas.DataFrame 
 
- tsfresh.utilities.dataframe_functions.impute_dataframe_range(df_impute, col_to_max, col_to_min, col_to_median)[source]
- 按列将 DataFrame df_impute 中的所有 - NaNs、- -inf和- +inf替换为提供的字典中的平均值/极端值。- 具体替换方式如下: df_impute 中出现的每个 - inf或- NaN将被替换为:- -inf-> 由 col_to_min 中的值替换
- +inf-> 由 col_to_max 中的值替换
- NaN-> 由 col_to_median 中的值替换
 - 如果在其中一个字典中找不到 df_impute 的列,此方法将引发 ValueError。此外,如果要替换的值之一不是有限值,则返回 ValueError。 - 此函数修改 df_impute 原位。之后,保证 df_impute 不包含任何非有限值。此外,保证所有列都是 - np.float64类型。- 参数:
- df_impute (pandas.DataFrame) – 要填充的 DataFrame 
- col_to_max (dict) – 将列名映射到最大值的字典 
- col_to_min – 将列名映射到最小值的字典 
- col_to_median – 将列名映射到中位数的字典 
 
- 返回 df_impute:
- 填充后的 DataFrame 
- 返回类型 df_impute:
- pandas.DataFrame 
- 抛出:
- ValueError – 如果 df_impute 的列在 col_to_max, col_to_min 或 col_to_median 中缺失,或者要替换的值是非有限值 
 
- tsfresh.utilities.dataframe_functions.impute_dataframe_zero(df_impute)[source]
- 将 DataFrame df_impute 中的所有 - NaNs、- -infs和- +infs替换为 0。 df_impute 将被原位修改。所有列都将转换为- np.float64数据类型。- 参数:
- df_impute (pandas.DataFrame) – 要填充的 DataFrame 
- 返回 df_impute:
- 填充后的 DataFrame 
- 返回类型 df_impute:
- pandas.DataFrame 
 
- tsfresh.utilities.dataframe_functions.make_forecasting_frame(x, kind, max_timeshift, rolling_direction)[source]
- 接受一个单一时间序列 x,并构建一个 DataFrame df 和目标向量 y,可用于时间序列预测任务。 - 返回的 df 将包含 x 中每个时间戳的最后 max_timeshift 个数据点,作为新的时间序列,这样就可以用于拟合时间序列预测模型。 - 请参阅 滚动/时间序列预测 以详细了解滚动过程以及特征矩阵和目标向量是如何得出的。 - 返回的时间序列容器 df 将包含展平的数据帧形式的滚动时间序列,即 数据格式 中的第一种格式。 - 当 x 是 pandas.Series 时,其索引将用作 id。 - 参数:
- x (np.array 或 pd.Series) – 单一时间序列 
- kind (str) – 时间序列的类型 
- rolling_direction (int) – 符号决定是向后(如果符号为正)还是向前(如果在“时间”中)滚动 
- max_timeshift (int) – 如果不为 None,则仅移动至多 max_timeshift。如果为 None,则尽可能多地移动。 
 
- 返回:
- 时间序列容器 df,目标向量 y 
- 返回类型:
- (pd.DataFrame, pd.Series) 
 
- tsfresh.utilities.dataframe_functions.restrict_input_to_index(df_or_dict, column_id, index)[source]
- 将 df_or_dict 限制为 index 中包含的那些 id。 - 参数:
- df_or_dict (pandas.DataFrame 或 dict) – pandas DataFrame 或字典。 
- column_id (basestring) – 必须存在于 pandas DataFrame 或字典中的所有 DataFrame 中。此列不允许有 NaN 值。 
- index (Iterable 或 pandas.Series) – 包含 id 的索引 
 
- 返回 df_or_dict_restricted:
- 受限的 df_or_dict 
- 返回类型 df_or_dict_restricted:
- dict 或 pandas.DataFrame 
- 抛出:
- TypeError如果 df_or_dict 不是 dict 或 pandas.DataFrame 类型
 
- tsfresh.utilities.dataframe_functions.roll_time_series(df_or_dict, column_id, column_sort=None, column_kind=None, rolling_direction=1, max_timeshift=None, min_timeshift=0, chunksize=None, n_jobs=1, show_warnings=False, disable_progressbar=False, distributor=None)[source]
- 此方法创建时间序列的子窗口。它在“时间”域中(由 column_sort 给定的排序顺序表示)分别对每种类型和每个 id 的(已排序)数据帧进行滚动操作。 - 对于每个滚动步骤,通过 ({id}, {shift}) 的方案创建一个新的 id,其中 id 是列的旧 id,shift 是“时间”移动量。您可以将其视为一个固定长度(max_timeshift)的窗口,每次移动一个步骤遍历您的时间序列。窗口看到的每个剪切部分都是一个新的时间序列,具有新的标识符。 - 几点说明 - 此方法将创建新的 ID! 
- rolling 的符号定义了时间滚动的方向,正值表示我们将剪切窗口向前移动。每个新的子时间序列的名称由最后一个时间点给出。这意味着,名为 ([id=]4,[timeshift=]5) 且 max_timeshift 为 3 的时间序列包含时间点 3、4 和 5 的数据。负的 rolling 方向意味着,您在数据的负时间方向上移动。名为 ([id=]4,[timeshift=]5) 且 max_timeshift 为 3 的时间序列将包含时间点 5、6 和 7 的数据。绝对值定义了在每个步骤移动多少时间。 
- 可以移动不同长度的时间序列,但是 
- 我们假设时间序列是均匀采样的 
- 欲了解更多信息,请参阅 滚动/时间序列预测。 
 - 参数:
- df_or_dict (pandas.DataFrame 或 dict) – pandas DataFrame 或字典。对象的所需形状/形式取决于其余传入的参数。 
- column_id (basestring) – 必须存在于 pandas DataFrame 或字典中的所有 DataFrame 中。此列不允许有 NaN 值。 
- column_sort (basestring 或 None) – 如果不为 None,则按此列对行进行排序。此列不允许有 NaN 值。如果未给出,将由一个递增的数字填充,表示传入数据帧的顺序用作时间序列的“时间”。 
- column_kind (basestring 或 None) – 仅在传入 pandas DataFrame 时可以使用(字典已被假定按类型分组)。它必须存在于 DataFrame 中且不允许有 NaN 值。如果未传入类型列,则假定 pandas DataFrame 中的每列(id 或排序列除外)都是一种可能的类型。 
- rolling_direction (int) – 符号决定是将我们的剪切窗口在“时间”中向后移动还是向前移动。绝对值决定每个步骤移动多少。 
- max_timeshift (int) – 如果不为 None,则剪切窗口最大为 max_timeshift 大小。如果为 None,则无限增长。 
- min_timeshift (int) – 丢弃所有小于或等于此值的提取预测窗口。必须大于或等于 0。 
- n_jobs (int) – 用于并行化的进程数。如果为零,则不使用并行化。 
- chunksize (None 或 int) – 每个任务应该计算多少次移动。 
- show_warnings (bool) – 在特征提取过程中显示警告(用于计算器调试)。 
- disable_progressbar (bool) – 计算时不显示进度条。 
- distributor (class) – 高级参数:将其设置为您要用作分发器的类名。有关更多信息,请参阅 utilities/distribution.py。如果您希望 TSFresh 选择最佳分发器,则留空。 
 
- 返回:
- 滚动的或数据帧字典 
- 返回类型:
- 与 df_or_dict 相同 
 
tsfresh.utilities.distribution 模块
此模块包含 Distributor 类,这些对象用于分配特征计算。本质上,Distributor 组织将特征计算器应用于数据块。
此模块由 Nils Braun 设计
- class tsfresh.utilities.distribution.ApplyDistributor(meta)[source]
- 
- map_reduce(map_function, data, function_kwargs=None, chunk_size=None, data_length=None)[source]
- 此方法包含 DistributorBaseClass 类的核心功能。 - 它将 map_function 映射到数据的每个元素,并将结果合并以返回一个展平的列表。 - 它需要在每个子类中实现。 - 参数:
- map_function (callable) – 应用于每个数据项的函数。 
- data (iterable) – 计算中使用的数据 
- function_kwargs (dict of string to parameter) – map 函数的参数 
- chunk_size (int) – 如果给定,则根据此大小对数据进行分块。如果未给定,则使用经验值。 
- data_length (int) – 如果数据是生成器,则必须在此处设置长度。如果为 none,则长度从数据的 len 中推断出来。 
 
- 返回:
- 计算结果 
- 返回类型:
- list 
 
 
- class tsfresh.utilities.distribution.ClusterDaskDistributor(address)[source]
- 基类: - IterableDistributorBaseClass- 使用 dask 集群的分发器,意味着计算分布在集群上 
- class tsfresh.utilities.distribution.DistributorBaseClass[source]
- 基类: - object- 分发器抽象基类。 - DistributorBaseClass 子类实例的主要目的是在数据项列表(称为 data)上评估一个函数(称为 map_function)。 - 根据 distribute 函数的实现,这可以在并行或使用节点集群完成。 - map_reduce(map_function, data, function_kwargs=None, chunk_size=None, data_length=None)[source]
- 此方法包含 DistributorBaseClass 类的核心功能。 - 它将 map_function 映射到数据的每个元素,并将结果合并以返回一个展平的列表。 - 它需要在每个子类中实现。 - 参数:
- map_function (callable) – 应用于每个数据项的函数。 
- data (iterable) – 计算中使用的数据 
- function_kwargs (dict of string to parameter) – map 函数的参数 
- chunk_size (int) – 如果给定,则根据此大小对数据进行分块。如果未给定,则使用经验值。 
- data_length (int) – 如果数据是生成器,则必须在此处设置长度。如果为 none,则长度从数据的 len 中推断出来。 
 
- 返回:
- 计算结果 
- 返回类型:
- list 
 
 
- class tsfresh.utilities.distribution.IterableDistributorBaseClass[source]
- 
Distributor 基类,可以处理所有可迭代项,并分别计算每个项上的 map_function。 这是在数据块上完成的,这意味着 DistributorBaseClass 类将把数据分成块,分发数据并分别对项应用 map_function 函数。 根据 distribute 函数的实现,这可以在并行或使用节点集群完成。 - calculate_best_chunk_size(data_length)[source]
- 计算长度为 data_length 的列表的最佳 chunk_size。当前实现的公式或多或少是单机多进程情况下的经验结果。 - 参数:
- data_length (int) – 定义需要进行多少计算的长度。 
- 返回:
- 计算出的 chunk size 
- 返回类型:
- int 
 - TODO: 研究不同设置下的最佳 chunk size。 
 - distribute(func, partitioned_chunks, kwargs)[source]
- 此抽象基函数将工作分配给 worker,worker 可以是线程或集群中的节点。必须在派生类中实现。 - 参数:
- func (callable) – 要发送到每个 worker 的函数。 
- partitioned_chunks (iterable) – 数据块列表 - 每个元素又是一个块列表 - 应该由一个 worker 处理。 
- kwargs (dict of string to parameter) – map 函数的参数 
 
- 返回:
- 计算结果列表 - 每个项应该是将 func 应用于单个元素的结果。 
 
 - map_reduce(map_function, data, function_kwargs=None, chunk_size=None, data_length=None)[source]
- 此方法包含 DistributorBaseClass 类的核心功能。 - 它将 map_function 映射到数据的每个元素,并将结果合并以返回一个展平的列表。 - 如何计算任务,由类 - tsfresh.utilities.distribution.DistributorBaseClass.distribute()方法决定,该方法可以在多个线程或多个处理单元之间分配任务等。- 为了不单独传输数据的每个元素,数据根据块大小(或在未给定时根据经验猜测)被分割成块。通过这种方式,worker 处理的是大小适当而非微小的数据部分。 - 参数:
- map_function (callable) – 应用于每个数据项的函数。 
- data (iterable) – 计算中使用的数据 
- function_kwargs (dict of string to parameter) – map 函数的参数 
- chunk_size (int) – 如果给定,则根据此大小对数据进行分块。如果未给定,则使用经验值。 
- data_length (int) – 如果数据是生成器,则必须在此处设置长度。如果为 none,则长度从数据的 len 中推断出来。 
 
- 返回:
- 计算结果 
- 返回类型:
- list 
 
 
- class tsfresh.utilities.distribution.LocalDaskDistributor(n_workers)[source]
- 基类: - IterableDistributorBaseClass- 使用本地 dask 集群和进程内通信的分发器。 
- class tsfresh.utilities.distribution.MapDistributor(disable_progressbar=False, progressbar_title='Feature Extraction')[source]
- 基类: - IterableDistributorBaseClass- 使用 Python 内建的 map 分发器,它按顺序计算每个任务。 
- class tsfresh.utilities.distribution.MultiprocessingDistributor(n_workers, disable_progressbar=False, progressbar_title='Feature Extraction', show_warnings=True)[source]
- 基类: - IterableDistributorBaseClass- 使用 multiprocessing Pool 在本地机器上并行计算任务的分发器。 
tsfresh.utilities.profiling 模块
包含用于启动和停止分析器的方法,该分析器检查不同特征计算器的运行时
- tsfresh.utilities.profiling.end_profiling(profiler, filename, sorting=None)[source]
- 辅助函数,用于停止分析过程并将分析数据写入给定文件名。在此之前,按传入的 sorting 对统计信息进行排序。 - 参数:
- profiler (cProfile.Profile) – 已启动的分析器(可能由 start_profiling 启动)。 
- filename (basestring) – 保存配置文件的输出文件名。 
- sorting (basestring) – 传递给 sort_stats 函数的统计信息的排序方式。 
 
- 返回:
- 无 
- 返回类型:
- 无 
 - 使用以下方法启动和停止分析器 - >>> profiler = start_profiling() >>> # Do something you want to profile >>> end_profiling(profiler, "out.txt", "cumulative") 
tsfresh.utilities.string_manipulation 模块
模块内容
此 utilities 子模块包含多个实用函数。这些函数仅应在 tsfresh 内部使用。