4173 lines
504 KiB
Plaintext
4173 lines
504 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 30,
|
||
"id": "7fadc60c-d710-4b8c-89cd-1d889ece1eaf",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"读取本地数据:juxitingdataset\\PP指标数据.xlsx\n",
|
||
"读取本地数据:juxitingdataset\\PP指标数据.xlsx\n",
|
||
"getdata接收:juxitingdataset\\PP指标数据.xlsx date \n",
|
||
"getdata接收:juxitingdataset\\PP指标数据.xlsx date \n",
|
||
"删除两月不更新特征前数据量:(2516, 354)\n",
|
||
"删除两月不更新特征前数据量:(2516, 354)\n",
|
||
"删除两月不更新特征后数据量:(2516, 312)\n",
|
||
"删除两月不更新特征后数据量:(2516, 312)\n",
|
||
"删除预测列为空值的行后数据量:(772, 312)\n",
|
||
"删除预测列为空值的行后数据量:(772, 312)\n",
|
||
"删除全为空值的列后数据量:(772, 312)\n",
|
||
"删除全为空值的列后数据量:(772, 312)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
"d:\\code\\PriceForecast\\lib\\dataread.py:226: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" values.dropna(inplace=True,axis=0)\n",
|
||
" 日度(216) 周度(94) 154天(1)\n",
|
||
"0 PP主力收盘价拟合残差/丙烷 CP M1 PE注塑开工率/周 中国:华东地区:市场平均价:BOPP厚光膜\n",
|
||
"1 华南聚丙烯基差(折盘面收盘价) PP:看跌比例:中国(周) \n",
|
||
"2 华北聚丙烯基差(折盘面收盘价) PP:看平比例:中国(周) \n",
|
||
"3 华东聚丙烯基差(折盘面收盘价) PP:看升比例:中国(周) \n",
|
||
"4 煤制聚丙烯利润 PP看空情绪指数环差 \n",
|
||
".. ... ... ...\n",
|
||
"211 PE期货收盘价 \n",
|
||
"212 PP连续-1月 \n",
|
||
"213 PP连续-5月 \n",
|
||
"214 PP连续-9月 \n",
|
||
"215 y \n",
|
||
"\n",
|
||
"[216 rows x 3 columns]\n",
|
||
" 日度(216) 周度(94) 154天(1)\n",
|
||
"0 PP主力收盘价拟合残差/丙烷 CP M1 PE注塑开工率/周 中国:华东地区:市场平均价:BOPP厚光膜\n",
|
||
"1 华南聚丙烯基差(折盘面收盘价) PP:看跌比例:中国(周) \n",
|
||
"2 华北聚丙烯基差(折盘面收盘价) PP:看平比例:中国(周) \n",
|
||
"3 华东聚丙烯基差(折盘面收盘价) PP:看升比例:中国(周) \n",
|
||
"4 煤制聚丙烯利润 PP看空情绪指数环差 \n",
|
||
".. ... ... ...\n",
|
||
"211 PE期货收盘价 \n",
|
||
"212 PP连续-1月 \n",
|
||
"213 PP连续-5月 \n",
|
||
"214 PP连续-9月 \n",
|
||
"215 y \n",
|
||
"\n",
|
||
"[216 rows x 3 columns]\n",
|
||
"特征信息:总共有309个,日度(216),周度(94),154天(1), 详看 附1、特征列表\n",
|
||
" 数据特征工程:\n",
|
||
" 1. 数据日期排序,新日期在最后\n",
|
||
" 2. 删除空列,特征数据列没有值,就删除\n",
|
||
" 3. 删除近两月不再更新值的指标\n",
|
||
" 4. 非日度数据填充为日度数据,填充规则:\n",
|
||
" -- 向后填充,举例:假设周五出现一个周度指标数据,那么在这之前的数据用上周五的数据\n",
|
||
" -- 向前填充,举例:采集数据开始日期为2018年1月1日,那么周度数据可能是2018年1月3日,那么3日的数据向前填充,使1日2日都有数值\n",
|
||
" 数据特征相关性分析:\n",
|
||
" \n",
|
||
"特征信息:总共有309个,日度(216),周度(94),154天(1), 详看 附1、特征列表\n",
|
||
" 数据特征工程:\n",
|
||
" 1. 数据日期排序,新日期在最后\n",
|
||
" 2. 删除空列,特征数据列没有值,就删除\n",
|
||
" 3. 删除近两月不再更新值的指标\n",
|
||
" 4. 非日度数据填充为日度数据,填充规则:\n",
|
||
" -- 向后填充,举例:假设周五出现一个周度指标数据,那么在这之前的数据用上周五的数据\n",
|
||
" -- 向前填充,举例:采集数据开始日期为2018年1月1日,那么周度数据可能是2018年1月3日,那么3日的数据向前填充,使1日2日都有数值\n",
|
||
" 数据特征相关性分析:\n",
|
||
" \n",
|
||
"********************************************************************************************************************************************************************************************************\n",
|
||
"********************************************************************************************************************************************************************************************************\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Figure size 1000x1000 with 0 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# 读取配置\n",
|
||
"from lib.dataread import *\n",
|
||
"from lib.tools import *\n",
|
||
"from models.nerulforcastmodels import ex_Model,model_losss,brent_export_pdf,tansuanli_export_pdf,pp_export_pdf,model_losss_juxiting\n",
|
||
"\n",
|
||
"import glob\n",
|
||
"import torch\n",
|
||
"torch.set_float32_matmul_precision(\"high\")\n",
|
||
"\n",
|
||
"sqlitedb = SQLiteHandler(db_name) \n",
|
||
"sqlitedb.connect()\n",
|
||
"\n",
|
||
"signature = BinanceAPI(APPID, SECRET)\n",
|
||
"etadata = EtaReader(signature=signature,\n",
|
||
" classifylisturl = classifylisturl,\n",
|
||
" classifyidlisturl=classifyidlisturl,\n",
|
||
" edbcodedataurl=edbcodedataurl,\n",
|
||
" edbcodelist=edbcodelist,\n",
|
||
" edbdatapushurl=edbdatapushurl,\n",
|
||
" edbdeleteurl=edbdeleteurl,\n",
|
||
" edbbusinessurl=edbbusinessurl\n",
|
||
" )\n",
|
||
"# 获取数据\n",
|
||
"if is_eta:\n",
|
||
" # eta数据\n",
|
||
" logger.info('从eta获取数据...')\n",
|
||
" signature = BinanceAPI(APPID, SECRET)\n",
|
||
" etadata = EtaReader(signature=signature,\n",
|
||
" classifylisturl = classifylisturl,\n",
|
||
" classifyidlisturl=classifyidlisturl,\n",
|
||
" edbcodedataurl=edbcodedataurl,\n",
|
||
" edbcodelist=edbcodelist,\n",
|
||
" edbdatapushurl=edbdatapushurl,\n",
|
||
" edbdeleteurl=edbdeleteurl,\n",
|
||
" edbbusinessurl=edbbusinessurl,\n",
|
||
" )\n",
|
||
" df_zhibiaoshuju,df_zhibiaoliebiao = etadata.get_eta_api_pp_data(data_set=data_set,dataset=dataset) # 原始数据,未处理\n",
|
||
"\n",
|
||
" # 数据处理\n",
|
||
" df = datachuli_juxiting(df_zhibiaoshuju,df_zhibiaoliebiao,y = y,dataset=dataset,add_kdj=add_kdj,is_timefurture=is_timefurture,end_time=end_time) \n",
|
||
"\n",
|
||
"else:\n",
|
||
" logger.info('读取本地数据:'+os.path.join(dataset,data_set))\n",
|
||
" df = getdata_juxiting(filename=os.path.join(dataset,data_set),y=y,dataset=dataset,add_kdj=add_kdj,is_timefurture=is_timefurture,end_time=end_time) # 原始数据,未处理\n",
|
||
"\n",
|
||
"# 更改预测列名称\n",
|
||
"df.rename(columns={y:'y'},inplace=True)\n",
|
||
" \n",
|
||
"if is_edbnamelist:\n",
|
||
" df = df[edbnamelist] \n",
|
||
"df.to_csv(os.path.join(dataset,'指标数据.csv'), index=False)\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 31,
|
||
"id": "ae059224-976c-4839-b455-f81da7f25179",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# 保存最新日期的y值到数据库\n",
|
||
"# 取第一行数据存储到数据库中\n",
|
||
"first_row = df[['ds','y']].tail(1)\n",
|
||
"# 将最新真实值保存到数据库\n",
|
||
"# if not sqlitedb.check_table_exists('trueandpredict'):\n",
|
||
"# first_row.to_sql('trueandpredict',sqlitedb.connection,index=False)\n",
|
||
"# else:\n",
|
||
"# for row in first_row.itertuples(index=False):\n",
|
||
"# row_dict = row._asdict()\n",
|
||
"# row_dict['ds'] = row_dict['ds'].strftime('%Y-%m-%d %H:%M:%S')\n",
|
||
"# check_query = sqlitedb.select_data('trueandpredict',where_condition = f\"ds = '{row.ds}'\")\n",
|
||
"# if len(check_query) > 0:\n",
|
||
"# set_clause = \", \".join([f\"{key} = '{value}'\" for key, value in row_dict.items()])\n",
|
||
"# sqlitedb.update_data('trueandpredict',set_clause,where_condition = f\"ds = '{row.ds}'\")\n",
|
||
"# continue\n",
|
||
"# sqlitedb.insert_data('trueandpredict',tuple(row_dict.values()),columns=row_dict.keys())\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 32,
|
||
"id": "abb597fc-c5f3-4d76-8099-5eff358cb634",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import datetime\n",
|
||
"# 判断当前日期是不是周一\n",
|
||
"is_weekday = datetime.datetime.now().weekday() == 1\n",
|
||
"if is_weekday:\n",
|
||
" logger.info('今天是周一,更新预测模型')\n",
|
||
" # 计算最近20天预测残差最低的模型名称\n",
|
||
"\n",
|
||
" model_results = sqlitedb.select_data('trueandpredict',order_by = \"ds DESC\",limit = \"20\")\n",
|
||
" # 删除空值率为40%以上的列\n",
|
||
" print(model_results.shape)\n",
|
||
" model_results = model_results.dropna(thresh=len(model_results)*0.6,axis=1)\n",
|
||
" model_results = model_results.dropna()\n",
|
||
" print(model_results.shape)\n",
|
||
" modelnames = model_results.columns.to_list()[2:] \n",
|
||
" for col in model_results[modelnames].select_dtypes(include=['object']).columns:\n",
|
||
" model_results[col] = model_results[col].astype(np.float32)\n",
|
||
" # 计算每个预测值与真实值之间的偏差率\n",
|
||
" for model in modelnames:\n",
|
||
" model_results[f'{model}_abs_error_rate'] = abs(model_results['y'] - model_results[model]) / model_results['y']\n",
|
||
"\n",
|
||
" # 获取每行对应的最小偏差率值\n",
|
||
" min_abs_error_rate_values = model_results.apply(lambda row: row[[f'{model}_abs_error_rate' for model in modelnames]].min(), axis=1)\n",
|
||
" # 获取每行对应的最小偏差率值对应的列名\n",
|
||
" min_abs_error_rate_column_name = model_results.apply(lambda row: row[[f'{model}_abs_error_rate' for model in modelnames]].idxmin(), axis=1)\n",
|
||
" print(min_abs_error_rate_column_name)\n",
|
||
" # 将列名索引转换为列名\n",
|
||
" min_abs_error_rate_column_name = min_abs_error_rate_column_name.map(lambda x: x.split('_')[0])\n",
|
||
" # 取出现次数最多的模型名称\n",
|
||
" most_common_model = min_abs_error_rate_column_name.value_counts().idxmax()\n",
|
||
" logger.info(f\"最近20天预测残差最低的模型名称:{most_common_model}\")\n",
|
||
"\n",
|
||
" # 保存结果到数据库\n",
|
||
" \n",
|
||
" if not sqlitedb.check_table_exists('most_model'):\n",
|
||
" sqlitedb.create_table('most_model',columns=\"ds datetime, most_common_model TEXT\")\n",
|
||
" sqlitedb.insert_data('most_model',(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),most_common_model,),columns=('ds','most_common_model',))\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 33,
|
||
"id": "ade7026e-8cf2-405f-a2da-9e90f364adab",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"开始训练模型...\n",
|
||
"开始训练模型...\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"if is_corr:\n",
|
||
" df = corr_feature(df=df)\n",
|
||
"\n",
|
||
"df1 = df.copy() # 备份一下,后面特征筛选完之后加入ds y 列用\n",
|
||
"logger.info(f\"开始训练模型...\")\n",
|
||
"row,col = df.shape\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 34,
|
||
"id": "dfef57d8-36da-423b-bbe7-05a13e15f71b",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"now = datetime.datetime.now().strftime('%Y%m%d%H%M%S')\n",
|
||
"# ex_Model(df,\n",
|
||
"# horizon=horizon,\n",
|
||
"# input_size=input_size,\n",
|
||
"# train_steps=train_steps,\n",
|
||
"# val_check_steps=val_check_steps,\n",
|
||
"# early_stop_patience_steps=early_stop_patience_steps,\n",
|
||
"# is_debug=is_debug,\n",
|
||
"# dataset=dataset,\n",
|
||
"# is_train=is_train,\n",
|
||
"# is_fivemodels=is_fivemodels,\n",
|
||
"# val_size=val_size,\n",
|
||
"# test_size=test_size,\n",
|
||
"# settings=settings,\n",
|
||
"# now=now,\n",
|
||
"# etadata = etadata,\n",
|
||
"# modelsindex = modelsindex,\n",
|
||
"# data = data,\n",
|
||
"# is_eta=is_eta,\n",
|
||
"# )\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 43,
|
||
"id": "0e5b6f30-b7ca-4718-97a3-48b54156e07f",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"模型训练完成\n",
|
||
"模型训练完成\n",
|
||
"训练数据绘图ing\n",
|
||
"训练数据绘图ing\n",
|
||
"C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_19344\\3035235873.py:145: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
|
||
"Try using .loc[row_indexer,col_indexer] = value instead\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" names_df['columns'] = names_df.apply(add_rote_column, axis=1)\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
"['NLinear', 'RNN', 'TiDE', 'TSMixer', 'PatchTST', 'NHITS', 'DilatedRNN', 'DLinear', 'GRU', 'LSTM', 'Informer', 'DeepNPTS', 'MLP', 'TFT', 'TSMixerx', 'BiTCN', 'TCN', 'iTransformer', 'StemGNN', 'MLPMultivariate']\n",
|
||
"<class 'list'>\n",
|
||
" ds y NHITS upper_bound lower_bound\n",
|
||
"0 2024-01-30 7315.000000 7314.250977 7255.317383 7406.355469\n",
|
||
"5 2024-01-31 7302.500000 7313.850586 7260.271484 7409.821777\n",
|
||
"10 2024-02-01 7275.000000 7296.995117 7250.980469 7406.994141\n",
|
||
"15 2024-02-02 7242.500000 7275.514648 7233.059082 7395.299805\n",
|
||
"20 2024-02-04 7240.000000 7236.788574 7210.264160 7378.917480\n",
|
||
".. ... ... ... ... ...\n",
|
||
"975 2024-11-13 7323.333496 7332.291016 7241.626953 7422.700195\n",
|
||
"976 2024-11-14 7353.333496 7344.439941 7244.206543 7417.808594\n",
|
||
"977 2024-11-15 7393.333496 7319.736328 7230.743652 7441.161133\n",
|
||
"978 2024-11-18 7363.333496 7317.362305 7208.802734 7442.793457\n",
|
||
"979 2024-11-19 7370.000000 7307.738770 7191.159668 7436.033203\n",
|
||
"\n",
|
||
"[200 rows x 5 columns]\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 2000x1000 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"C:\\Users\\EDY\\AppData\\Local\\Temp\\ipykernel_19344\\3035235873.py:337: SettingWithCopyWarning: \n",
|
||
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
|
||
"Try using .loc[row_indexer,col_indexer] = value instead\n",
|
||
"\n",
|
||
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
|
||
" first_row['ds'] = first_row['ds'].dt.strftime('%Y-%m-%d 00:00:00')\n",
|
||
"更新数据sqlUPDATE trueandpredict SET ds = '2024-11-20 00:00:00', NHITS = '7337.594', Informer = '7316.5264', LSTM = '7313.051', iTransformer = '7342.468', TSMixer = '7344.392', TSMixerx = '7306.8916', PatchTST = '7350.6377', RNN = '7378.303', GRU = '7405.318', TCN = '7418.5396', BiTCN = '7321.0723', DilatedRNN = '7320.571', MLP = '7338.035', DLinear = '7387.8057', NLinear = '7361.405', TFT = '7362.294', StemGNN = '7351.2534', MLPMultivariate = '7331.5254', TiDE = '7354.707', DeepNPTS = '7376.7446' WHERE ds = '2024-11-20 00:00:00'\n",
|
||
"更新数据sqlUPDATE trueandpredict SET ds = '2024-11-20 00:00:00', NHITS = '7337.594', Informer = '7316.5264', LSTM = '7313.051', iTransformer = '7342.468', TSMixer = '7344.392', TSMixerx = '7306.8916', PatchTST = '7350.6377', RNN = '7378.303', GRU = '7405.318', TCN = '7418.5396', BiTCN = '7321.0723', DilatedRNN = '7320.571', MLP = '7338.035', DLinear = '7387.8057', NLinear = '7361.405', TFT = '7362.294', StemGNN = '7351.2534', MLPMultivariate = '7331.5254', TiDE = '7354.707', DeepNPTS = '7376.7446' WHERE ds = '2024-11-20 00:00:00'\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Column 'ds' already exists in table 'trueandpredict'.\n",
|
||
"Column 'NHITS' already exists in table 'trueandpredict'.\n",
|
||
"Column 'Informer' already exists in table 'trueandpredict'.\n",
|
||
"Column 'LSTM' already exists in table 'trueandpredict'.\n",
|
||
"Column 'iTransformer' already exists in table 'trueandpredict'.\n",
|
||
"Column 'TSMixer' already exists in table 'trueandpredict'.\n",
|
||
"Column 'TSMixerx' already exists in table 'trueandpredict'.\n",
|
||
"Column 'PatchTST' already exists in table 'trueandpredict'.\n",
|
||
"Column 'RNN' already exists in table 'trueandpredict'.\n",
|
||
"Column 'GRU' already exists in table 'trueandpredict'.\n",
|
||
"Column 'TCN' already exists in table 'trueandpredict'.\n",
|
||
"Column 'BiTCN' already exists in table 'trueandpredict'.\n",
|
||
"Column 'DilatedRNN' already exists in table 'trueandpredict'.\n",
|
||
"Column 'MLP' already exists in table 'trueandpredict'.\n",
|
||
"Column 'DLinear' already exists in table 'trueandpredict'.\n",
|
||
"Column 'NLinear' already exists in table 'trueandpredict'.\n",
|
||
"Column 'TFT' already exists in table 'trueandpredict'.\n",
|
||
"Column 'StemGNN' already exists in table 'trueandpredict'.\n",
|
||
"Column 'MLPMultivariate' already exists in table 'trueandpredict'.\n",
|
||
"Column 'TiDE' already exists in table 'trueandpredict'.\n",
|
||
"Column 'DeepNPTS' already exists in table 'trueandpredict'.\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"训练数据绘图end\n",
|
||
"训练数据绘图end\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"logger.info('模型训练完成')\n",
|
||
"# # 模型评估\n",
|
||
"\n",
|
||
"pd.set_option('display.max_columns', 100)\n",
|
||
"\n",
|
||
"# 计算预测评估指数\n",
|
||
"def model_losss_juxiting(sqlitedb):\n",
|
||
" global dataset\n",
|
||
" most_model = [sqlitedb.select_data('most_model',columns=['most_common_model'],order_by='ds desc',limit=1).values[0][0]]\n",
|
||
" most_model_name = most_model[0]\n",
|
||
"\n",
|
||
" # 预测数据处理 predict\n",
|
||
" df_combined = loadcsv(os.path.join(dataset,\"cross_validation.csv\")) \n",
|
||
" df_combined = dateConvert(df_combined)\n",
|
||
" # 删除空列\n",
|
||
" df_combined.dropna(axis=1,inplace=True)\n",
|
||
" # 删除缺失值,预测过程不能有缺失值\n",
|
||
" df_combined.dropna(inplace=True) \n",
|
||
" # 其他列转为数值类型\n",
|
||
" df_combined = df_combined.astype({col: 'float32' for col in df_combined.columns if col not in ['cutoff','ds'] })\n",
|
||
" # 使用 groupby 和 transform 结合 lambda 函数来获取每个分组中 cutoff 的最小值,并创建一个新的列来存储这个最大值\n",
|
||
" df_combined['max_cutoff'] = df_combined.groupby('ds')['cutoff'].transform('max')\n",
|
||
"\n",
|
||
" # 然后筛选出那些 cutoff 等于 max_cutoff 的行,这样就得到了每个分组中 cutoff 最大的行,并保留了其他列\n",
|
||
" df_combined = df_combined[df_combined['cutoff'] == df_combined['max_cutoff']]\n",
|
||
" # 删除模型生成的cutoff列\n",
|
||
" df_combined.drop(columns=['cutoff', 'max_cutoff'], inplace=True)\n",
|
||
" # 获取模型名称\n",
|
||
" modelnames = df_combined.columns.to_list()[1:] \n",
|
||
" if 'y' in modelnames:\n",
|
||
" modelnames.remove('y')\n",
|
||
" df_combined3 = df_combined.copy() # 备份df_combined,后面画图需要\n",
|
||
"\n",
|
||
"\n",
|
||
" # 空的列表存储每个模型的MSE、RMSE、MAE、MAPE、SMAPE\n",
|
||
" cellText = []\n",
|
||
"\n",
|
||
" # 遍历模型名称,计算模型评估指标 \n",
|
||
" for model in modelnames:\n",
|
||
" modelmse = mse(df_combined['y'], df_combined[model])\n",
|
||
" modelrmse = rmse(df_combined['y'], df_combined[model])\n",
|
||
" modelmae = mae(df_combined['y'], df_combined[model])\n",
|
||
" # modelmape = mape(df_combined['y'], df_combined[model])\n",
|
||
" # modelsmape = smape(df_combined['y'], df_combined[model])\n",
|
||
" # modelr2 = r2_score(df_combined['y'], df_combined[model])\n",
|
||
" cellText.append([model,round(modelmse, 3), round(modelrmse, 3), round(modelmae, 3)])\n",
|
||
" \n",
|
||
" model_results3 = pd.DataFrame(cellText,columns=['模型(Model)','平均平方误差(MSE)', '均方根误差(RMSE)', '平均绝对误差(MAE)'])\n",
|
||
" # 按MSE降序排列\n",
|
||
" model_results3 = model_results3.sort_values(by='平均平方误差(MSE)', ascending=True)\n",
|
||
" model_results3.to_csv(os.path.join(dataset,\"model_evaluation.csv\"),index=False)\n",
|
||
" modelnames = model_results3['模型(Model)'].tolist()\n",
|
||
" allmodelnames = modelnames.copy()\n",
|
||
" # 保存5个最佳模型的名称\n",
|
||
" if len(modelnames) > 5:\n",
|
||
" modelnames = modelnames[0:5]\n",
|
||
" with open(os.path.join(dataset,\"best_modelnames.txt\"), 'w') as f:\n",
|
||
" f.write(','.join(modelnames) + '\\n')\n",
|
||
"\n",
|
||
" def plot_predict_vs_true():\n",
|
||
" # 预测值与真实值对比图\n",
|
||
" plt.rcParams['font.sans-serif'] = ['SimHei']\n",
|
||
" plt.figure(figsize=(15, 10))\n",
|
||
" for n,model in enumerate(modelnames[:5]):\n",
|
||
" plt.subplot(3, 2, n+1)\n",
|
||
" plt.plot(df_combined3['ds'], df_combined3['y'], label='真实值')\n",
|
||
" plt.plot(df_combined3['ds'], df_combined3[model], label=model)\n",
|
||
" plt.legend()\n",
|
||
" plt.xlabel('日期')\n",
|
||
" plt.ylabel('价格')\n",
|
||
" plt.title(model+'拟合')\n",
|
||
" plt.subplots_adjust(hspace=0.5)\n",
|
||
" plt.savefig(os.path.join(dataset,'预测值与真实值对比图.png'), bbox_inches='tight')\n",
|
||
" plt.close()\n",
|
||
" \n",
|
||
" plot_predict_vs_true()\n",
|
||
" \n",
|
||
" \n",
|
||
" '''\n",
|
||
" # # 根据最佳模型的绝对误差的平均比例,最佳模型乘平均比例的百分比,确定最大最小值\n",
|
||
" # 计算最佳模型对应的绝对误差的平均比例\n",
|
||
" most_model_mae = model_results3[model_results3['模型(Model)']==most_model_name]['平均绝对误差(MAE)'].values[0]\n",
|
||
" \n",
|
||
" def mae_upper_lower(row):\n",
|
||
" # 计算上边界值\n",
|
||
" upper_bound = row[most_model_name] * (1 + most_model_mae/row[most_model_name])\n",
|
||
" # 计算下边界值\n",
|
||
" lower_bound = row[most_model_name] * (1 - most_model_mae/row[most_model_name])\n",
|
||
" return pd.Series([lower_bound, upper_bound], index=['lower_bound', 'upper_bound'])\n",
|
||
" \n",
|
||
" df_combined3[['upper_bound', 'lower_bound']] = df_combined3.apply(mae_upper_lower, axis=1)\n",
|
||
" '''\n",
|
||
" \n",
|
||
" # 每个模型的绝对值\n",
|
||
" # names = []\n",
|
||
" # for col in allmodelnames:\n",
|
||
" # df_combined3[f'{col}-{most_model_name}-误差比例'] = abs(df_combined3[col] - df_combined3[most_model_name]) / df_combined3[most_model_name] * 100\n",
|
||
" \n",
|
||
"\n",
|
||
" # # 设置阈值 rote\n",
|
||
" # rote = 1.5\n",
|
||
" # names_df = df_combined3[names]\n",
|
||
" # # names_df['rote'] = rote\n",
|
||
" # def add_rote_column(row):\n",
|
||
" # columns = []\n",
|
||
" # for r in names_df.columns:\n",
|
||
" # if row[r] <= rote:\n",
|
||
" # columns.append(r.split('-')[0])\n",
|
||
" # return pd.Series([columns], index=['columns'])\n",
|
||
" # names_df['columns'] = names_df.apply(add_rote_column, axis=1)\n",
|
||
" \n",
|
||
" # def add_upper_lower_bound(row):\n",
|
||
" # print(row['columns'])\n",
|
||
" # print(type(row['columns']))\n",
|
||
" # # 计算上边界值\n",
|
||
" # upper_bound = df_combined3.loc[row.name,row['columns']].max()\n",
|
||
" # # 计算下边界值\n",
|
||
" # lower_bound = df_combined3.loc[row.name,row['columns']].min()\n",
|
||
" # return pd.Series([lower_bound, upper_bound], index=['lower_bound', 'upper_bound'])\n",
|
||
" # df_combined3[['upper_bound','lower_bound']] = names_df.apply(add_upper_lower_bound, axis=1)\n",
|
||
" \n",
|
||
" # print(df_combined3[['ds','y',most_model_name,'upper_bound','lower_bound']])\n",
|
||
" \n",
|
||
" \n",
|
||
" \n",
|
||
" \n",
|
||
" \n",
|
||
" # '''\n",
|
||
" # 计算每个模型与最佳模型的绝对误差比例\n",
|
||
" names = []\n",
|
||
" for col in allmodelnames:\n",
|
||
" df_combined3[f'{col}-{most_model_name}-误差比例'] = abs(df_combined3[col] - df_combined3[most_model_name]) / df_combined3[most_model_name]\n",
|
||
" names.append(f'{col}-{most_model_name}-误差比例')\n",
|
||
"\n",
|
||
" # 设置阈值 rote\n",
|
||
" rote = 0.04\n",
|
||
" names_df = df_combined3[names]\n",
|
||
" # names_df['rote'] = rote\n",
|
||
" def add_rote_column(row):\n",
|
||
" columns = []\n",
|
||
" for r in names_df.columns:\n",
|
||
" if row[r] <= rote:\n",
|
||
" columns.append(r.split('-')[0])\n",
|
||
" return pd.Series([columns], index=['columns'])\n",
|
||
" names_df['columns'] = names_df.apply(add_rote_column, axis=1)\n",
|
||
" \n",
|
||
" def add_upper_lower_bound(row):\n",
|
||
" print(row['columns'])\n",
|
||
" print(type(row['columns']))\n",
|
||
" # 计算上边界值\n",
|
||
" upper_bound = df_combined3.loc[row.name,row['columns']].max()\n",
|
||
" # 计算下边界值\n",
|
||
" lower_bound = df_combined3.loc[row.name,row['columns']].min()\n",
|
||
" return pd.Series([lower_bound, upper_bound], index=['lower_bound', 'upper_bound'])\n",
|
||
" df_combined3[['upper_bound','lower_bound']] = names_df.apply(add_upper_lower_bound, axis=1)\n",
|
||
" \n",
|
||
" print(df_combined3[['ds','y',most_model_name,'upper_bound','lower_bound']])\n",
|
||
" # '''\n",
|
||
" \n",
|
||
" \n",
|
||
" '''\n",
|
||
" # 计算波动率,取近60日波动率的10%和90%分位数确定通道上下界\n",
|
||
" df_combined3['volatility'] = df_combined3['y'].pct_change().round(4)\n",
|
||
" # 计算近60日的波动率 10% 90%分位数\n",
|
||
" df_combined3['quantile_10'] = df_combined3['volatility'].rolling(60).quantile(0.1)\n",
|
||
" df_combined3['quantile_90'] = df_combined3['volatility'].rolling(60).quantile(0.9)\n",
|
||
" df_combined3 = df_combined3.round(4)\n",
|
||
" # 计算分位数对应的价格\n",
|
||
" df_combined3['quantile_10_price'] = df_combined3['y'] * (1 + df_combined3['quantile_10'])\n",
|
||
" df_combined3['quantile_90_price'] = df_combined3['y'] * (1 + df_combined3['quantile_90'])\n",
|
||
"\n",
|
||
" # 遍历行\n",
|
||
" def find_min_max_within_quantile(row):\n",
|
||
" # 获取分位数10%和90%的值\n",
|
||
" q10 = row['quantile_10_price']\n",
|
||
" q90 = row['quantile_90_price']\n",
|
||
" \n",
|
||
" # 判断flot值是否为空值\n",
|
||
" if pd.isna(q10) or pd.isna(q90):\n",
|
||
" return pd.Series([None, None, None, None], index=['min_within_quantile','max_within_quantile','min_model','max_model'])\n",
|
||
" \n",
|
||
" # 初始化最小和最大值为None\n",
|
||
" min_value = None\n",
|
||
" max_value = None\n",
|
||
" min_value_model = ''\n",
|
||
" max_value_model = ''\n",
|
||
"\n",
|
||
" # 遍历指定列,找出在分位数范围内的最大最小值\n",
|
||
" for model in modelnames:\n",
|
||
" value = row[model]\n",
|
||
" if value >= q10 and value <= q90:\n",
|
||
" if min_value is None or value < min_value:\n",
|
||
" min_value = value\n",
|
||
" min_value_model = model\n",
|
||
"\n",
|
||
" if max_value is None or value > max_value:\n",
|
||
" max_value = value\n",
|
||
" max_value_model = model\n",
|
||
" \n",
|
||
" # 返回最大最小值\n",
|
||
" return pd.Series([min_value, max_value,min_value_model,max_value_model], index=['min_within_quantile', 'max_within_quantile','min_model','max_model'])\n",
|
||
"\n",
|
||
" # 应用函数到每一行\n",
|
||
" df_combined3[['min_within_quantile', 'max_within_quantile','min_model','max_model']] = df_combined3.apply(find_min_max_within_quantile, axis=1)\n",
|
||
"\n",
|
||
" \n",
|
||
" '''\n",
|
||
" \n",
|
||
" # 去除有空值的行\n",
|
||
" df_combined3.dropna(inplace=True)\n",
|
||
" # 保存到数据库\n",
|
||
" # df_combined3.to_sql('testandpredict_groupby', sqlitedb.connection, if_exists='replace', index=False)\n",
|
||
" df_combined3.to_csv(os.path.join(dataset,\"testandpredict_groupby.csv\"),index=False)\n",
|
||
"\n",
|
||
" \n",
|
||
" def _plt_predict_ture(df):\n",
|
||
" df = df[-50:] # 取50个数据点画图\n",
|
||
" # 历史价格\n",
|
||
" plt.figure(figsize=(20, 10))\n",
|
||
" plt.plot(df['ds'], df['y'], label='真实值')\n",
|
||
" # 颜色填充\n",
|
||
" # plt.fill_between(df['ds'], df['min_within_quantile'], df['max_within_quantile'], alpha=0.2)\n",
|
||
" plt.fill_between(df['ds'], df['upper_bound'], df['lower_bound'], alpha=0.2)\n",
|
||
" # plt.plot(df_combined3['ds'], df_combined3['min_abs_error_rate_prediction'], label='最小绝对误差', linestyle='--', color='orange')\n",
|
||
" # 网格\n",
|
||
" plt.grid(True)\n",
|
||
" # 显示历史值\n",
|
||
" for i, j in zip(df['ds'], df['y']):\n",
|
||
" plt.text(i, j, str(j), ha='center', va='bottom')\n",
|
||
"\n",
|
||
" for model in most_model:\n",
|
||
" plt.plot(df['ds'], df[model], label=model,marker='o')\n",
|
||
" # 当前日期画竖虚线\n",
|
||
" plt.axvline(x=df['ds'].iloc[-horizon], color='r', linestyle='--')\n",
|
||
" plt.legend()\n",
|
||
" plt.xlabel('日期')\n",
|
||
" plt.ylabel('价格')\n",
|
||
" \n",
|
||
" plt.savefig(os.path.join(dataset,'历史价格-预测值.png'), bbox_inches='tight')\n",
|
||
" plt.show()\n",
|
||
" plt.close()\n",
|
||
"\n",
|
||
" _plt_predict_ture(df_combined3)\n",
|
||
"\n",
|
||
" '''\n",
|
||
" # 去掉方差最大的模型,其余模型预测最大最小值确定通道边界\n",
|
||
" \n",
|
||
" \n",
|
||
" # 历史数据+预测数据\n",
|
||
" # 拼接未来时间预测\n",
|
||
" df_predict = loadcsv(os.path.join(dataset,'predict.csv'))\n",
|
||
" df_predict.drop('unique_id',inplace=True,axis=1)\n",
|
||
" df_predict.dropna(axis=1,inplace=True)\n",
|
||
" df_predict2 = df_predict.copy()\n",
|
||
" try:\n",
|
||
" df_predict['ds'] = pd.to_datetime(df_predict['ds'],format=r'%Y-%m-%d')\n",
|
||
" except ValueError :\n",
|
||
" df_predict['ds'] = pd.to_datetime(df_predict['ds'],format=r'%Y/%m/%d')\n",
|
||
"\n",
|
||
" # 取第一行数据存储到数据库中\n",
|
||
" first_row = df_predict.head(1)\n",
|
||
" first_row['ds'] = first_row['ds'].dt.strftime('%Y-%m-%d 00:00:00')\n",
|
||
"\n",
|
||
" # # 将预测结果保存到数据库\n",
|
||
" df_combined3 = pd.concat([df_combined3, df_predict]).reset_index(drop=True)\n",
|
||
" # # 判断 df 的数值列转为float\n",
|
||
" for col in df_combined3.columns:\n",
|
||
" try:\n",
|
||
" if col != 'ds':\n",
|
||
" df_combined3[col] = df_combined3[col].astype(float)\n",
|
||
" df_combined3[col] = df_combined3[col].round(2)\n",
|
||
" except ValueError:\n",
|
||
" pass\n",
|
||
" df_combined3.to_csv(os.path.join(dataset,\"testandpredict_groupby.csv\"),index=False)\n",
|
||
" df_combined3['ds'] = df_combined3['ds'].dt.strftime('%Y-%m-%d 00:00:00')\n",
|
||
" # # 判断表存在\n",
|
||
" if not sqlitedb.check_table_exists('testandpredict_groupby'):\n",
|
||
" df_combined3.to_sql('testandpredict_groupby',sqlitedb.connection,index=False)\n",
|
||
" else:\n",
|
||
" for row in df_combined3.itertuples(index=False):\n",
|
||
" row_dict = row._asdict()\n",
|
||
" check_query = sqlitedb.select_data('testandpredict_groupby',where_condition = f\"ds = '{row.ds}'\")\n",
|
||
" if len(check_query) > 0:\n",
|
||
" set_clause = \", \".join([f\"{key} = '{value}'\" for key, value in row_dict.items()])\n",
|
||
" sqlitedb.update_data('testandpredict_groupby',set_clause,where_condition = f\"ds = '{row.ds}'\")\n",
|
||
" continue\n",
|
||
" sqlitedb.insert_data('testandpredict_groupby',tuple(row_dict.values()),columns=row_dict.keys())\n",
|
||
"\n",
|
||
" ten_models = allmodelnames\n",
|
||
" # 计算每个模型的方差\n",
|
||
" variances = df_combined3[ten_models].var()\n",
|
||
" # 找到方差最大的模型\n",
|
||
" max_variance_model = variances.idxmax()\n",
|
||
" # 打印方差最大的模型\n",
|
||
" print(\"方差最大的模型是:\", max_variance_model)\n",
|
||
" # 去掉方差最大的模型\n",
|
||
" df_combined3 = df_combined3.drop(columns=[max_variance_model])\n",
|
||
" if max_variance_model in allmodelnames:\n",
|
||
" allmodelnames.remove(max_variance_model)\n",
|
||
" df_combined3['min'] = df_combined3[allmodelnames].min(axis=1)\n",
|
||
" df_combined3['max'] = df_combined3[allmodelnames].max(axis=1)\n",
|
||
" print(df_combined3[['min','max']])\n",
|
||
" # 历史价格+预测价格\n",
|
||
" df_combined3 = df_combined3[-50:] # 取50个数据点画图\n",
|
||
" plt.figure(figsize=(20, 10))\n",
|
||
" plt.plot(df_combined3['ds'], df_combined3['y'], label='真实值',marker='o')\n",
|
||
" plt.plot(df_combined3['ds'], df_combined3[most_model], label=most_model_name)\n",
|
||
" plt.fill_between(df_combined3['ds'], df_combined3['min'], df_combined3['max'], alpha=0.2)\n",
|
||
" plt.grid(True)\n",
|
||
" # # 显示历史值\n",
|
||
" for i, j in zip(df_combined3['ds'][:-5], df_combined3['y'][:-5]):\n",
|
||
" plt.text(i, j, str(j), ha='center', va='bottom')\n",
|
||
" # 当前日期画竖虚线\n",
|
||
" plt.axvline(x=df_combined3['ds'].iloc[-horizon], color='r', linestyle='--')\n",
|
||
" plt.legend()\n",
|
||
" plt.xlabel('日期')\n",
|
||
" plt.ylabel('价格')\n",
|
||
"\n",
|
||
" plt.savefig(os.path.join(dataset,'历史价格-预测值.png'), bbox_inches='tight')\n",
|
||
" plt.close()\n",
|
||
" '''\n",
|
||
"\n",
|
||
" # # 历史数据+预测数据\n",
|
||
" # # 拼接未来时间预测\n",
|
||
" df_predict = pd.read_csv(os.path.join(dataset,'predict.csv'))\n",
|
||
" df_predict.drop('unique_id',inplace=True,axis=1)\n",
|
||
" df_predict.dropna(axis=1,inplace=True)\n",
|
||
"\n",
|
||
" try:\n",
|
||
" df_predict['ds'] = pd.to_datetime(df_predict['ds'],format=r'%Y-%m-%d')\n",
|
||
" except ValueError :\n",
|
||
" df_predict['ds'] = pd.to_datetime(df_predict['ds'],format=r'%Y/%m/%d')\n",
|
||
"\n",
|
||
" def first_row_to_database(df):\n",
|
||
" # # 取第一行数据存储到数据库中\n",
|
||
" first_row = df.head(1)\n",
|
||
" first_row['ds'] = first_row['ds'].dt.strftime('%Y-%m-%d 00:00:00')\n",
|
||
" # 将预测结果保存到数据库\n",
|
||
" if not sqlitedb.check_table_exists('trueandpredict'):\n",
|
||
" first_row.to_sql('trueandpredict',sqlitedb.connection,index=False)\n",
|
||
" else:\n",
|
||
" for col in first_row.columns:\n",
|
||
" sqlitedb.add_column_if_not_exists('trueandpredict',col,'TEXT')\n",
|
||
" for row in first_row.itertuples(index=False):\n",
|
||
" row_dict = row._asdict()\n",
|
||
" columns=row_dict.keys()\n",
|
||
" check_query = sqlitedb.select_data('trueandpredict',where_condition = f\"ds = '{row.ds}'\")\n",
|
||
" if len(check_query) > 0:\n",
|
||
" set_clause = \", \".join([f\"{key} = '{value}'\" for key, value in row_dict.items()])\n",
|
||
" sqlitedb.update_data('trueandpredict',set_clause,where_condition = f\"ds = '{row.ds}'\")\n",
|
||
" continue\n",
|
||
" sqlitedb.insert_data('trueandpredict',tuple(row_dict.values()),columns=columns)\n",
|
||
"\n",
|
||
" first_row_to_database(df_predict)\n",
|
||
" def find_most_common_model():\n",
|
||
" # 最多频率的模型名称\n",
|
||
" min_model_max_frequency_model = df_combined3['min_model'].tail(20).value_counts().idxmax()\n",
|
||
" max_model_max_frequency_model = df_combined3['max_model'].tail(20).value_counts().idxmax()\n",
|
||
" if min_model_max_frequency_model == max_model_max_frequency_model:\n",
|
||
" # 取20天第二多的模型\n",
|
||
" max_model_max_frequency_model = df_combined3['max_model'].tail(20).value_counts().nlargest(2).index[1]\n",
|
||
"\n",
|
||
" df_predict['min_model'] = min_model_max_frequency_model\n",
|
||
" df_predict['max_model'] = max_model_max_frequency_model\n",
|
||
" df_predict['min_within_quantile'] = df_predict[min_model_max_frequency_model]\n",
|
||
" df_predict['max_within_quantile'] = df_predict[max_model_max_frequency_model]\n",
|
||
"\n",
|
||
"\n",
|
||
" # find_most_common_model()\n",
|
||
"\n",
|
||
" df_predict2 = df_predict.copy()\n",
|
||
" df_predict2['ds'] = pd.to_datetime(df_predict2['ds'])\n",
|
||
" df_predict2['ds'] = df_predict2['ds'].dt.strftime('%Y-%m-%d 00:00:00')\n",
|
||
"\n",
|
||
"\n",
|
||
" def _add_abs_error_rate():\n",
|
||
" # 计算每个预测值与真实值之间的偏差率\n",
|
||
" for model in allmodelnames:\n",
|
||
" df_combined3[f'{model}_abs_error_rate'] = abs(df_combined3['y'] - df_combined3[model]) / df_combined3['y']\n",
|
||
"\n",
|
||
" # 获取每行对应的最小偏差率值\n",
|
||
" min_abs_error_rate_values = df_combined3.apply(lambda row: row[[f'{model}_abs_error_rate' for model in allmodelnames]].min(), axis=1)\n",
|
||
" # 获取每行对应的最小偏差率值对应的列名\n",
|
||
" min_abs_error_rate_column_name = df_combined3.apply(lambda row: row[[f'{model}_abs_error_rate' for model in allmodelnames]].idxmin(), axis=1) \n",
|
||
" # 将列名索引转换为列名\n",
|
||
" min_abs_error_rate_column_name = min_abs_error_rate_column_name.map(lambda x: x.split('_')[0])\n",
|
||
" # 获取最小偏差率对应的模型的预测值\n",
|
||
" min_abs_error_rate_predictions = df_combined3.apply(lambda row: row[min_abs_error_rate_column_name[row.name]], axis=1)\n",
|
||
" # 将最小偏差率对应的模型的预测值添加到DataFrame中\n",
|
||
" df_combined3['min_abs_error_rate_prediction'] = min_abs_error_rate_predictions\n",
|
||
" df_combined3['min_abs_error_rate_column_name'] = min_abs_error_rate_column_name\n",
|
||
"\n",
|
||
" _add_abs_error_rate()\n",
|
||
"\n",
|
||
" df_combined3 = pd.concat([df_combined3, df_predict]).reset_index(drop=True)\n",
|
||
" # 判断 df 的数值列转为float\n",
|
||
" for col in df_combined3.columns:\n",
|
||
" try:\n",
|
||
" if col != 'ds':\n",
|
||
" df_combined3[col] = df_combined3[col].astype(float)\n",
|
||
" df_combined3[col] = df_combined3[col].round(2)\n",
|
||
" except ValueError:\n",
|
||
" pass\n",
|
||
" df_combined3.to_csv(os.path.join(dataset,\"df_combined3.csv\"),index=False) \n",
|
||
" \n",
|
||
" # 历史价格+预测价格\n",
|
||
" # 将预测结果保存到数据库\n",
|
||
" # 判断表存在\n",
|
||
" # if not sqlitedb.check_table_exists('testandpredict_groupby'):\n",
|
||
" # df_combined3.to_sql('testandpredict_groupby',sqlitedb.connection,index=False)\n",
|
||
" # else:\n",
|
||
" # for row in df_combined3.itertuples(index=False):\n",
|
||
" # row_dict = row._asdict()\n",
|
||
" # check_query = sqlitedb.select_data('testandpredict_groupby',where_condition = f\"ds = '{row.ds}'\")\n",
|
||
" # if len(check_query) > 0:\n",
|
||
" # set_clause = \", \".join([f\"{key} = '{value}'\" for key, value in row_dict.items()])\n",
|
||
" # sqlitedb.update_data('testandpredict_groupby',set_clause,where_condition = f\"ds = '{row.ds}'\")\n",
|
||
" # continue\n",
|
||
" # sqlitedb.insert_data('testandpredict_groupby',tuple(row_dict.values()),columns=row_dict.keys())\n",
|
||
" \n",
|
||
" \n",
|
||
"\n",
|
||
" def _plt_predict_table(df): \n",
|
||
" # 预测值表格\n",
|
||
" fig, ax = plt.subplots(figsize=(20, 6))\n",
|
||
" ax.axis('off') # 关闭坐标轴\n",
|
||
" # 数值保留2位小数\n",
|
||
" df = df.round(2)\n",
|
||
" df = df[-horizon:]\n",
|
||
" df['Day'] = [f'Day_{i}' for i in range(1,horizon+1)]\n",
|
||
" # Day列放到最前面\n",
|
||
" df = df[['Day'] + list(df.columns[:-1])]\n",
|
||
" table = ax.table(cellText=df.values, colLabels=df.columns, loc='center')\n",
|
||
" #加宽表格\n",
|
||
" table.auto_set_font_size(False)\n",
|
||
" table.set_fontsize(10)\n",
|
||
"\n",
|
||
" # 设置表格样式,列数据最小的用绿色标识\n",
|
||
" plt.savefig(os.path.join(dataset,'预测值表格.png'), bbox_inches='tight')\n",
|
||
" plt.close()\n",
|
||
" \n",
|
||
" def _plt_model_results3():\n",
|
||
" # 可视化评估结果\n",
|
||
" plt.rcParams['font.sans-serif'] = ['SimHei']\n",
|
||
" fig, ax = plt.subplots(figsize=(20, 10))\n",
|
||
" ax.axis('off') # 关闭坐标轴\n",
|
||
" table = ax.table(cellText=model_results3.values, colLabels=model_results3.columns, loc='center')\n",
|
||
" # 加宽表格\n",
|
||
" table.auto_set_font_size(False)\n",
|
||
" table.set_fontsize(10)\n",
|
||
"\n",
|
||
" # 设置表格样式,列数据最小的用绿色标识\n",
|
||
" plt.savefig(os.path.join(dataset,'模型评估.png'), bbox_inches='tight')\n",
|
||
" plt.close()\n",
|
||
"\n",
|
||
"\n",
|
||
" _plt_predict_table(df_combined3)\n",
|
||
" _plt_model_results3()\n",
|
||
"\n",
|
||
" return model_results3\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"logger.info('训练数据绘图ing')\n",
|
||
"model_results3 = model_losss_juxiting(sqlitedb)\n",
|
||
"\n",
|
||
"logger.info('训练数据绘图end')\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 36,
|
||
"id": "85b557de-8235-4e27-b5b8-58b36dfe6724",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"制作报告ing\n",
|
||
"制作报告ing\n",
|
||
"开始绘制价差类指标的相关性直方图\n",
|
||
"开始绘制价差类指标的相关性直方图\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"价差下正相关的特征值有: ['PP期货-丙烯价差(山东)/400DMA', 'PP-SC价差(7吨桶比)', '布伦特-PP价差(盘面)', '薄壁-拉丝价差(华北)', 'PP-FEI M4(含税成本)', '油制PP利润(华东)', 'PP-FEI M3(含税成本)', '价差:聚乙烯与乙烯(西北欧)', 'PP-FEI M2(含税成本)', 'PP-FEI M1(含税成本)', 'PP加权利润', '滨化PDH利润(1.169/含税)', 'PDH利润(山东/丙烯)', 'PP-FEI价差', '外采丙烯制聚丙烯利润(华东)', '5-9月差(PP)', '9-1月差(PP)']\n",
|
||
"正在绘制第1个特征PP期货-丙烯价差(山东)/400DMA与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第2个特征PP-SC价差(7吨桶比)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第3个特征布伦特-PP价差(盘面)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第4个特征薄壁-拉丝价差(华北)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第5个特征PP-FEI M4(含税成本)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"价差下负相关的特征值有: ['L-P价差', 'L-P价差(盘面)', 'PDH制PP利润(山东)', '低熔共聚-拉丝价差(华南)', '外采丙烯制聚丙烯利润(山东)', 'PDH制PP利润(华南)', '京博-滨化价差(不含税/1.13/580)', 'PP现货-丙烯价差(山东)', 'PP-3MA价差(盘面)', 'PP-3*MA主力', '透明-PP盘面价差(华北)', '透明-拉丝价差(华北)', 'PP期货-丙烯价差(山东)', 'PDH制PP利润(华东)', 'PDH制PP利润(华东)指数修匀', '华东拉丝-CP', '透明-PP盘面(华东)', 'LPG-PP价差(盘面)', '拉丝区域价差(华东-华北)', '透明-拉丝价差(华东)', 'PP盘中基差(临沂)', 'PP基差(盘中)', '外采甲醇制PP利润(西北)', '拉丝区域价差(华南-华北)', '滨化丙烷-PP边际贡献(不含税/510/收率1.169)', '滨化丙烯-京博PP边际贡献(不含税/600/收率1.169)', '粉粒价差(山东)', '外采甲醇制PP利润(太仓)', '1-5月差(PP)', '滨化丙烷-PP边际贡献(不含税/580/收率1.13)', '山东拉丝-CP', '山东拉丝-丙烯价差', '拉丝区域价差(华南-华东)']\n",
|
||
"正在绘制第1个特征L-P价差与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第2个特征L-P价差(盘面)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第3个特征PDH制PP利润(山东)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第4个特征低熔共聚-拉丝价差(华南)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第5个特征外采丙烯制聚丙烯利润(山东)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"价差类指标的相关性总和为:11.033279360751804\n",
|
||
"价差类指标的相关性总和为:11.033279360751804\n",
|
||
"d:\\code\\PriceForecast\\models\\nerulforcastmodels.py:1709: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n",
|
||
" grouped_corr = pd.concat([grouped_corr, goup_corr], axis=0, ignore_index=True)\n",
|
||
"开始绘制价格类指标的相关性直方图\n",
|
||
"开始绘制价格类指标的相关性直方图\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"价格下正相关的特征值有: ['PP神华竞拍(临沂)', 'PP:拉丝:S1003:市场主流价:常州:国能榆林化工(日)', 'PP神华竞拍(华东)', 'BOPP:成本:中国(日)', 'PP:BOPP:1103K:出厂价:华北地区:国家能源宁煤(日)', 'PP拉丝国内现货价格', 'PP:BOPP:1103K:出厂价:华南地区:宁夏神华宁煤(日)', 'PP:BOPP:1103K:出厂价:华东地区:国家能源宁煤(日)', 'PP神华竞拍(西安)', 'PP:薄壁注塑:1040TE:出厂价:华东地区:宁夏神华宁煤(日)', 'PP:薄壁注塑:1040TE:出厂价:华南地区:宁夏神华宁煤(日)', 'PP主力盘中', 'PP:拉丝:S1003:市场主流价:东莞:宝丰能源(日)', 'PP:BOPP:PPH-F03D:出厂价:华南地区:海南炼化装置一(日)', 'PP粉料(山东)/拼接', 'PP.DCE收盘价', 'PP主力收盘价', 'PP无纺布生产成本(日)', 'PP:薄壁注塑:PPH-MN60:出厂价:华南地区:中石化北海(日)', 'PP:低熔共聚:K8003:出厂价:华东地区:东华能源(宁波)(日)', 'PP:薄壁注塑:BZ-70:出厂价:华北地区:寿光鲁清(日)', 'PP:中熔共聚:2043N:出厂价:华南地区:国家能源宁煤(日)', 'PP:中熔共聚:2043N:出厂价:华东地区:国家能源宁煤(日)', 'PP:薄壁注塑:TM6000H:出厂价:华南地区:福建联合石化(日)', 'PP:低熔共聚:2500H:市场价:厦门:国家能源宁煤(日)', 'PP:拉丝:1102K:市场价:临沂:国家能源宁煤(日)', 'PP:低熔共聚:K8003:自提价:广州:宝丰能源(日)', 'PP:透明:R3080T:出厂价:华东地区:浙江鸿基(日)', 'PP:中熔共聚:EP5010C:出厂价:华北地区:中沙天津(日)', 'PP:BOPP:PPH-FL03-S:出厂价:华北地区:青岛炼化(日)', 'PP:中熔共聚:SP179P:出厂价:华北地区:中石化齐鲁化工(日)', 'PP:拉丝:1102K:市场价:青州:国家能源宁煤(日)', 'PP:透明:R3260T:出厂价:华东地区:浙江鸿基(日)', 'PP:低熔共聚:K8003:自提价:宁波:国能榆林化工(日)', 'PP:低熔共聚:K8003:市场价:杭州:东华能源(宁波)(日)', 'PP粉料(山东)', 'PP:中熔共聚:YPJ1215C:出厂价:华东地区:扬子石化(日)', 'PP:中熔共聚:EP440N:出厂价:华南地区:中科炼化(日)', 'DCE:化工产品:期货价格指数收盘价(日)', 'PP:薄壁注塑:PPH-MM60:出厂价:华北地区:石家庄炼化(日)', 'PP:低熔共聚:EPS30R:市场价:临沂:榆能化(日)', 'PP:薄壁注塑:M60ET:出厂价:华东地区:镇海炼化(日)', 'CPP:二元共聚膜:PPR-F08-S:出厂价:华南地区:茂名石化(日)', 'CPP:二元共聚膜:PPR-F08M-S:出厂价:华南地区:茂名石化(日)', '现货价(中间价):均聚聚丙烯(PP-H):CFR远东', 'BOPP:厚光膜:出厂价:华北地区:山东永冠(日)', 'PP:无规共聚:HC-M700B:出厂价:华北地区:山东东明(日)', 'PP:透明:HC-RP340R:出厂价:华北地区:山东东明(日)', 'PP:低熔共聚:2500H:市场价:台州:国家能源宁煤(日)', 'PP:薄壁注塑:K1870-B:市场价:临沂:榆能化(日)', 'PP:高熔共聚:EP300R:市场价:青岛:宝来石化(日)', 'PP:高熔共聚:2240S:出厂价:华南地区:国家能源宁煤(日)', 'PP:高熔共聚:M30RH:市场价:合肥:中安联合(日)', '现货价(中间价):均聚聚丙烯(PP-H):FOB中东', 'DCE:塑料:期货价格指数收盘价(日)', 'PP:透明:HT9025ZK:出厂价:华南地区:中科炼化(日)', 'PP:中熔共聚:K8009:出厂价:华南地区:广州石化(日)', 'PP:透明:PPR-MT75N:出厂价:华中地区:中原中石化(日)', 'PP:透明:PPR-MT25:出厂价:华中地区:中原中石化(日)', 'BOPP:12μ光膜:出厂价:华北地区:凯达包装(日)', 'PP:透明:PPR-B10:出厂价:华中地区:中原中石化(日)', 'PP:高熔共聚:EP548R:出厂价:华南地区:中海壳牌(日)', '热水管:YPR-503:出厂价:华东地区:扬子石化(日)', '热水管:T4401:出厂价:华南地区:茂名石化(日)', 'CPP:二元共聚膜:DY-W0723F:市场主流价:天津:独山子石化(日)', 'PP:高熔共聚:EP548R:市场价:广州:中科炼化(日)', 'PP:透明:HT9025NX:出厂价:华南地区:茂名石化(日)', '热水管:PA14D:出厂价:华东地区:大庆炼化(日)', '热水管:PPR-4220:出厂价:华南地区:广州石化(日)', '再生PP市场价/山东(日)', '现货价(中间价):聚丙烯PP(纤维/注塑):FAS休斯敦', '现货价(中间价):聚丙烯PP(纤维/注塑):FOB西北欧', 'CPP:二元共聚膜:F800EDF:出厂价:华东地区:上海石化(日)', '热水管:PA14D:市场价:青州:大庆炼化(日)', 'PP:透明:HT9025NX:市场主流价:广州:中石化茂名(日)', '西北欧:现货价:FOB低密度聚乙烯', 'PP:BOPP:F03BT:出厂价:华东地区:镇海炼化(日)', 'PP:高熔共聚:2240S:自提价:常州:国家能源宁煤(日)', '塑编:透明:30cm*45cm:市场价:山东(日)', 'BOPP:生产毛利:中国(日)', '塑编原材料库存天数', 'PP:透明:M26ET:出厂价:华东地区:镇海炼化(日)', 'PP:透明:M08ETN:出厂价:华东地区:镇海炼化(日)', 'PP无纺布开工率', '塑编产成品库存', 'PET瓶片:利润:中国(日)7DMA', '塑编产成品库存天数', '塑编订单天数', 'PP:低熔共聚:市场价:华南地区(日)', 'CPP薄膜成本(日)', '中国BOPP订单天数', '中国BOPP原料库存天数', 'PP多空情绪强弱指数', 'PP主力收盘价拟合残差/丙烷 CP M1', 'PE注塑开工率/周', 'PP:BOPP:L5D98:出厂价:华南地区:广东石化(日)', 'PP:看升比例:中国(周)', '美国-中国PS(GPPS)价差', 'PP无纺布:生产毛利:中国(周)', '塑编整体开工率', '华南聚丙烯基差(折盘面收盘价)', '中国PP下游平均开工率', '华东聚丙烯基差(折盘面收盘价)', 'PP看空情绪指数环差', 'PP:看平比例:中国(周)']\n",
|
||
"正在绘制第1个特征PP神华竞拍(临沂)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第2个特征PP:拉丝:S1003:市场主流价:常州:国能榆林化工(日)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第3个特征PP神华竞拍(华东)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第4个特征BOPP:成本:中国(日)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第5个特征PP:BOPP:1103K:出厂价:华北地区:国家能源宁煤(日)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"价格下负相关的特征值有: ['中国PP无纺布原料库存天数', '中国PP无纺布成品库存天数', '中国PP无纺布原料库存量', 'PP无纺布:厂内库存:中国(周)', '中国BOPP成品库存量', '中国BOPP成品库存天数', '印度粉矿:57%Fe:品牌价格:青岛港', 'PP:看跌比例:中国(周)', 'PP管材开工率', 'PP:低熔共聚:2500HY:市场价:临沂:国家能源宁煤(日)', '煤制聚丙烯利润', 'CPP:二元共聚膜:F08EC:出厂价:华东地区:镇海炼化(日)', 'PP:低熔共聚:K8003:出厂价:临沂:宝丰能源(日)', 'BOPP开工率', 'PP:低熔共聚:K8003:出厂价:常州:宝丰能源(日)', 'PP:低熔共聚:K8003:出厂价:河北、鲁北:大唐内蒙多伦(日)', '华北聚丙烯基差(折盘面收盘价)', 'DCE:工业产品:期货价格综合指数收盘价(日)']\n",
|
||
"正在绘制第1个特征中国PP无纺布原料库存天数与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第2个特征中国PP无纺布成品库存天数与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第3个特征中国PP无纺布原料库存量与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第4个特征PP无纺布:厂内库存:中国(周)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第5个特征中国BOPP成品库存量与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"价格类指标的相关性总和为:89.50783619014288\n",
|
||
"价格类指标的相关性总和为:89.50783619014288\n",
|
||
"开始绘制供应类指标的相关性直方图\n",
|
||
"开始绘制供应类指标的相关性直方图\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"供应下正相关的特征值有: ['PP开工率(1MMA)', 'PP周度开工率', 'PP开工率/7DMA', 'PP开工率/2WMA', 'PP日度开工率', 'PP/开工率/东北地区(日)', 'PP开工率/华中地区(日)', 'PP开工率/华南地区(日)', 'PP开工率/华北地区(日)', 'PP下游综合开工率(少注塑&CPP)', 'PP无纺布生产毛利', 'CPP:均聚:生产比例:中国(日)', 'PP:高熔纤维:生产比例:中国(日)', '中国再生PP周度开工负荷率同差', '冷水管:生产比例:中国(日)', 'PP粉料开工率(4WMA)', '中国再生PP周度开工负荷率', 'PP开工率/西北地区(日)', 'PP:拉丝:生产比例:中国(日)', 'BOPP开工率(隆众)同差', 'BOPP开工率同差', 'PP粉料开工率', 'PP:涂覆料:生产比例:中国(日)', 'PP:薄壁注塑:生产比例:中国(日)', 'PP开工率/西南地区(日)', 'PP下游综合开工率/2WMA', 'PP:低熔共聚:生产比例:中国(日)', 'PP开工率/华东地区(日)', 'PP:中熔共聚:生产比例:中国(日)', 'PP:均聚注塑:生产比例:中国(日)', 'PP日产/PE日产']\n",
|
||
"正在绘制第1个特征PP开工率(1MMA)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第2个特征PP周度开工率与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第3个特征PP开工率/7DMA与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第4个特征PP开工率/2WMA与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第5个特征PP日度开工率与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"供应下负相关的特征值有: ['PP粉检修减损量(周)', 'PP日度产量(粒料+粉料)', 'PP周度产量', 'PP日度产量7DMA', 'PP日度产量', 'PP周度产量变频', 'PP日度产量(1MMA)', 'PP周度产量/4WMA', 'PP管材开工率同差', 'PP周度产量同差', 'PP开工率同差', 'PP检修减损量', 'PP日度产量同差', 'PP周度产量同比', 'PP检修损失量(万吨/年)', 'PP检修减损量(日)', 'PP日度产量同比', 'PP下游综合开工率同差', 'PP粉料产量(钢联)7DMA', 'PP周度检修率', 'PP粉产量/中国(日)', 'CPP:三元共聚薄膜:生产比例:中国(日)', 'PP下游综合开工率/3年超季节性', 'CPP:二元共聚膜:生产比例:中国(日)', 'PP:透明:生产比例:中国(日)', 'BOPP开工率(4WMA)', 'PP周度产量周环差', 'PP:中熔纤维:生产比例:中国(日)', 'PP无纺布开工率同差', 'PP下游开工/PE下游开工', 'PP:无规共聚:生产比例:中国(日)', '热水管:生产比例:中国(日)', 'PP:高熔共聚:生产比例:中国(日)', 'PP日度产量1000天百分位', 'PP日度产量环差']\n",
|
||
"正在绘制第1个特征PP粉检修减损量(周)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第2个特征PP日度产量(粒料+粉料)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第3个特征PP周度产量与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第4个特征PP日度产量7DMA与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第5个特征PP日度产量与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"供应类指标的相关性总和为:19.68970163194788\n",
|
||
"供应类指标的相关性总和为:19.68970163194788\n",
|
||
"开始绘制其他类指标的相关性直方图\n",
|
||
"开始绘制其他类指标的相关性直方图\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"其他下正相关的特征值有: ['PP连续-1月', 'PP连续-9月', 'PP连续-5月', '山东丙烯主流价', 'FEI丙烷 M1', 'PVC期货主力', '丙烷(山东)', '甲醇鲁南价格', '甲醇太仓港口价格', 'PE期货收盘价', 'LME铜价']\n",
|
||
"正在绘制第1个特征PP连续-1月与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第2个特征PP连续-9月与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第3个特征PP连续-5月与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第4个特征山东丙烯主流价与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第5个特征FEI丙烷 M1与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"其他下负相关的特征值有: ['在岸人民币汇率', '黄金连1合约', '美元指数', 'Brent-WTI', '南华工业品指数']\n",
|
||
"正在绘制第1个特征在岸人民币汇率与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第2个特征黄金连1合约与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第3个特征美元指数与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第4个特征Brent-WTI与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第5个特征南华工业品指数与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"其他类指标的相关性总和为:12.062003637554202\n",
|
||
"其他类指标的相关性总和为:12.062003637554202\n",
|
||
"开始绘制库存类指标的相关性直方图\n",
|
||
"开始绘制库存类指标的相关性直方图\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"库存下正相关的特征值有: ['PP贸易商库存(钢联)同比', 'PP期末库存/天津港(周)', '塑编原材料库存', 'PP下游原料库存', 'BOPP订单天数-产成品库存天数(隆众)', 'PP期末库存/厦门港(周)', '中国BOPP原料库存量', 'PP粉料库存', 'PP库存 (地方炼厂)', '聚烯烃两油库存', 'PP:期末库存:青岛港(周)', 'PP库存(PDH)超季节性(3Y)', 'PP贸易商库存(钢联)', 'PP拉丝期末库存(周)', '聚烯烃两油库存同比', 'PP周度总库存', 'PP炼厂库存+PDH库存', 'PP期末库存/宁波港(周)', '中国BOPP周度原料库存天数(T)', 'PP粉料库存(吨)变化', 'PP上游库存(两油+煤+PDH+地方)']\n",
|
||
"正在绘制第1个特征PP贸易商库存(钢联)同比与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第2个特征PP期末库存/天津港(周)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第3个特征塑编原材料库存与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第4个特征PP下游原料库存与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第5个特征BOPP订单天数-产成品库存天数(隆众)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"库存下负相关的特征值有: ['中国BOPP周度产成品库存天数(T)', 'PP下游原料库存天数', '中国CPP成品库存天数', '中国再生PP样本企业周度库存', 'PP库存(PDH)', '聚烯烃两油库存1000天百分位', '中国CPP原料库存天数', '中国CPP成品库存量', 'PP期末库存/广州港(周)', 'BOPP原料库存+产成品库存天数', 'PP期末库存/上海港(周)', '中国PP港口期末库存', 'PP上游库存(两油+煤+PDH)', 'PP两油+煤制库存', 'PP两桶油/库存(周)', 'PP库存(煤制)', '中国BOPP原料库存天数同差']\n",
|
||
"正在绘制第1个特征中国BOPP周度产成品库存天数(T)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第2个特征PP下游原料库存天数与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第3个特征中国CPP成品库存天数与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第4个特征中国再生PP样本企业周度库存与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第5个特征PP库存(PDH)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"库存类指标的相关性总和为:11.266242723870176\n",
|
||
"库存类指标的相关性总和为:11.266242723870176\n",
|
||
"开始绘制进出口类指标的相关性直方图\n",
|
||
"开始绘制进出口类指标的相关性直方图\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"进出口下正相关的特征值有: ['聚丙烯出口利润']\n",
|
||
"正在绘制第1个特征聚丙烯出口利润与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"进出口下负相关的特征值有: ['聚丙烯进口利润']\n",
|
||
"正在绘制第1个特征聚丙烯进口利润与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"进出口类指标的相关性总和为:1.6205427630454334\n",
|
||
"进出口类指标的相关性总和为:1.6205427630454334\n",
|
||
"开始绘制需求类指标的相关性直方图\n",
|
||
"开始绘制需求类指标的相关性直方图\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"需求下正相关的特征值有: ['中国:华东地区:市场平均价:BOPP厚光膜', 'BOPP利润(华东地区)', '中国BOPP订单天数/4WMA', 'PP部分下游订单天数', 'BOPP 订单-成品天数', 'BOPP订单天数变频', 'BOPP完工订单工作量(周)', 'BOPP开工率超季节性/3年', 'BOPP新订单量(7DMA)', '中国再生PP周度样本成交量', 'BOPP日度新订单量(T)', '中国BOPP订单天数同差', '中国BOPP成品库存量同差']\n",
|
||
"正在绘制第1个特征中国:华东地区:市场平均价:BOPP厚光膜与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第2个特征BOPP利润(华东地区)与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第3个特征中国BOPP订单天数/4WMA与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第4个特征PP部分下游订单天数与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第5个特征BOPP 订单-成品天数与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"需求下负相关的特征值有: ['PP下游成品库存天数', '中国CPP订单天数']\n",
|
||
"正在绘制第1个特征PP下游成品库存天数与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"正在绘制第2个特征中国CPP订单天数与价格散点图...\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"d:\\ProgramData\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
||
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
||
"需求类指标的相关性总和为:6.761200339955732\n",
|
||
"需求类指标的相关性总和为:6.761200339955732\n",
|
||
"开始绘制相关性总和的气泡图\n",
|
||
"开始绘制相关性总和的气泡图\n",
|
||
"绘制相关性总和的气泡图结束\n",
|
||
"绘制相关性总和的气泡图结束\n",
|
||
"制作报告end\n",
|
||
"制作报告end\n",
|
||
"模型训练完成\n",
|
||
"模型训练完成\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# 模型报告\n",
|
||
"\n",
|
||
"logger.info('制作报告ing')\n",
|
||
"title = f'{settings}--{now}-预测报告' # 报告标题\n",
|
||
"\n",
|
||
"pp_export_pdf(dataset=dataset,num_models = 5 if is_fivemodels else 22,time=end_time,\n",
|
||
" reportname=reportname,sqlitedb=sqlitedb),\n",
|
||
"\n",
|
||
"logger.info('制作报告end')\n",
|
||
"logger.info('模型训练完成')"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 37,
|
||
"id": "d4129e71-ee2c-4af1-81ed-fadf14efa206",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# 发送邮件\n",
|
||
"m = SendMail(\n",
|
||
" username=username,\n",
|
||
" passwd=passwd,\n",
|
||
" recv=recv,\n",
|
||
" title=title,\n",
|
||
" content=content,\n",
|
||
" file=max(glob.glob(os.path.join(dataset,'*.pdf')), key=os.path.getctime),\n",
|
||
" ssl=ssl,\n",
|
||
")\n",
|
||
"# m.send_mail() \n"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "base",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.11.7"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|