{"id":20972859,"url":"https://github.com/ashishpatel26/predictive_maintenance_using_machine-learning_microsoft_casestudy","last_synced_at":"2025-05-14T11:34:20.632Z","repository":{"id":41805431,"uuid":"128189860","full_name":"ashishpatel26/Predictive_Maintenance_using_Machine-Learning_Microsoft_Casestudy","owner":"ashishpatel26","description":"Predictive_Maintenance_using_Machine-Learning_Microsoft_Casestudy","archived":false,"fork":false,"pushed_at":"2018-04-05T10:54:20.000Z","size":32091,"stargazers_count":121,"open_issues_count":3,"forks_count":92,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-07T03:38:22.083Z","etag":null,"topics":["case-study","cortana-intelligence-gallery","learning","machine","maintenance","microsoft-cortana","predictive","predictive-maintenance"],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ashishpatel26.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-05T10:15:35.000Z","updated_at":"2025-04-23T01:51:53.000Z","dependencies_parsed_at":"2022-07-08T03:01:35.415Z","dependency_job_id":null,"html_url":"https://github.com/ashishpatel26/Predictive_Maintenance_using_Machine-Learning_Microsoft_Casestudy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashishpatel26%2FPredictive_Maintenance_using_Machine-Learning_Microsoft_Casestudy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashishpatel26%2FPredictive_Maintenance_using_Machine-Learning_Microsoft_Casestudy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashishpatel26%2FPredictive_Maintenance_using_Machine-Learning_Microsoft_Casestudy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashishpatel26%2FPredictive_Maintenance_using_Machine-Learning_Microsoft_Casestudy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ashishpatel26","download_url":"https://codeload.github.com/ashishpatel26/Predictive_Maintenance_using_Machine-Learning_Microsoft_Casestudy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254132011,"owners_count":22020060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["case-study","cortana-intelligence-gallery","learning","machine","maintenance","microsoft-cortana","predictive","predictive-maintenance"],"created_at":"2024-11-19T04:10:20.659Z","updated_at":"2025-05-14T11:34:15.598Z","avatar_url":"https://github.com/ashishpatel26.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Problem Description\n\n\nA major problem faced by businesses in asset-heavy industries such as manufacturing is the significant costs that are associated with delays in the production process due to mechanical problems. Most of these businesses are interested in predicting these problems in advance so that they can proactively prevent the problems before they occur which will reduce the costly impact caused by downtime. Please refer to the playbook for predictive maintenance for a detailed explanation of common use cases in predictive maintenance and modelling approaches.\n\nIn this notebook, we follow the ideas from the playbook referenced above and aim to provide the steps of implementing a predictive model for a scenario which is based on a synthesis of multiple real-world business problems. This example brings together common data elements observed among many predictive maintenance use cases and the data itself is created by data simulation methods.\n\nThe business problem for this example is about predicting problems caused by component failures such that the question \"What is the probability that a machine will fail in the near future due to a failure of a certain component?\" can be answered. The problem is formatted as a multi-class classification problem and a machine learning algorithm is used to create the predictive model that learns from historical data collected from machines. In the following sections, we go through the steps of implementing such a model which are feature engineering, label construction, training and evaluation. First, we start by explaining the data sources in the next section.\n# Data Sources\n\nCommon data sources for predictive maintenance problems are :\n\n* **Failure history:** The failure history of a machine or component within the machine.\n* **Maintenance history:** The repair history of a machine, e.g. error codes, previous maintenance activities or component replacements.\n* **Machine conditions and usage:** The operating conditions of a machine e.g. data collected from sensors.\n* **Machine features:** The features of a machine, e.g. engine size, make and model, location.\n* **Operator features:** The features of the operator, e.g. gender, past experience\nThe data for this example comes from 4 different sources which are real-time telemetry data collected from machines, error messages, historical maintenance records that include failures and machine information such as type and age.\n\n\n```python\nimport pandas as pd\n\ntelemetry = pd.read_csv('PdM_telemetry.csv')\nerrors = pd.read_csv('PdM_errors.csv')\nmaint = pd.read_csv('PdM_maint.csv')\nfailures = pd.read_csv('PdM_failures.csv')\nmachines = pd.read_csv('PdM_machines.csv')\n```\n\n\n```python\n# format datetime field which comes in as string\ntelemetry['datetime'] = pd.to_datetime(telemetry['datetime'], format=\"%Y-%m-%d %H:%M:%S\")\n\nprint(\"Total number of telemetry records: %d\" % len(telemetry.index))\nprint(telemetry.head())\ntelemetry.describe()\n```\n\n    Total number of telemetry records: 876100\n                 datetime  machineID        volt      rotate    pressure  \\\n    0 2015-01-01 06:00:00          1  176.217853  418.504078  113.077935   \n    1 2015-01-01 07:00:00          1  162.879223  402.747490   95.460525   \n    2 2015-01-01 08:00:00          1  170.989902  527.349825   75.237905   \n    3 2015-01-01 09:00:00          1  162.462833  346.149335  109.248561   \n    4 2015-01-01 10:00:00          1  157.610021  435.376873  111.886648   \n    \n       vibration  \n    0  45.087686  \n    1  43.413973  \n    2  34.178847  \n    3  41.122144  \n    4  25.990511  \n    \n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003evolt\u003c/th\u003e\n      \u003cth\u003erotate\u003c/th\u003e\n      \u003cth\u003epressure\u003c/th\u003e\n      \u003cth\u003evibration\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003ecount\u003c/th\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emean\u003c/th\u003e\n      \u003ctd\u003e50.500000\u003c/td\u003e\n      \u003ctd\u003e170.777736\u003c/td\u003e\n      \u003ctd\u003e446.605119\u003c/td\u003e\n      \u003ctd\u003e100.858668\u003c/td\u003e\n      \u003ctd\u003e40.385007\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003estd\u003c/th\u003e\n      \u003ctd\u003e28.866087\u003c/td\u003e\n      \u003ctd\u003e15.509114\u003c/td\u003e\n      \u003ctd\u003e52.673886\u003c/td\u003e\n      \u003ctd\u003e11.048679\u003c/td\u003e\n      \u003ctd\u003e5.370361\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emin\u003c/th\u003e\n      \u003ctd\u003e1.000000\u003c/td\u003e\n      \u003ctd\u003e97.333604\u003c/td\u003e\n      \u003ctd\u003e138.432075\u003c/td\u003e\n      \u003ctd\u003e51.237106\u003c/td\u003e\n      \u003ctd\u003e14.877054\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e25%\u003c/th\u003e\n      \u003ctd\u003e25.750000\u003c/td\u003e\n      \u003ctd\u003e160.304927\u003c/td\u003e\n      \u003ctd\u003e412.305714\u003c/td\u003e\n      \u003ctd\u003e93.498181\u003c/td\u003e\n      \u003ctd\u003e36.777299\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e50%\u003c/th\u003e\n      \u003ctd\u003e50.500000\u003c/td\u003e\n      \u003ctd\u003e170.607338\u003c/td\u003e\n      \u003ctd\u003e447.558150\u003c/td\u003e\n      \u003ctd\u003e100.425559\u003c/td\u003e\n      \u003ctd\u003e40.237247\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e75%\u003c/th\u003e\n      \u003ctd\u003e75.250000\u003c/td\u003e\n      \u003ctd\u003e181.004493\u003c/td\u003e\n      \u003ctd\u003e482.176600\u003c/td\u003e\n      \u003ctd\u003e107.555231\u003c/td\u003e\n      \u003ctd\u003e43.784938\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emax\u003c/th\u003e\n      \u003ctd\u003e100.000000\u003c/td\u003e\n      \u003ctd\u003e255.124717\u003c/td\u003e\n      \u003ctd\u003e695.020984\u003c/td\u003e\n      \u003ctd\u003e185.951998\u003c/td\u003e\n      \u003ctd\u003e76.791072\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n#### **Telemetry**\nThe first data source is the telemetry time-series data which consists of **voltage, rotation, pressure, and vibration** measurements collected from 100 machines in **real time averaged over every hour collected during the year 2015**. Below, we display the first 10 records in the dataset. A summary of the whole dataset is also provided.\n\n\n```python\n%matplotlib inline\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\nplot_df = telemetry.loc[(telemetry['machineID'] == 1) \u0026 \n                        (telemetry['datetime'] \u003e pd.to_datetime('2015-01-01')) \u0026 \n                        (telemetry['datetime'] \u003cpd.to_datetime('2015-02-01')),\n                        ['datetime','volt']]\nsns.set_style(\"darkgrid\")\nplt.figure(figsize=(20, 8))\nplt.plot(plot_df['datetime'], plot_df['volt'])\nplt.ylabel('voltage')\n\n# make x-axis ticks legible\nadf = plt.gca().get_xaxis().get_major_formatter()\nadf.scaled[1.0] = '%m-%d-%Y'\nplt.xlabel('Date')\n```\n\n\n\n\n    \u003cmatplotlib.text.Text at 0x2564dac0780\u003e\n\n\n\n\n![png](output_4_1.png)\n\n\n#### **Errors**\nThe second major data source is the error logs. These are **non-breaking errors thrown while the machine is still operational and do not constitute as failures.** The **error date and times** are rounded to the closest hour since the telemetry data is collected at an hourly rate.\n\n\n```python\n# format of datetime field which comes in as string\nerrors['datetime'] = pd.to_datetime(errors['datetime'],format = '%Y-%m-%d %H:%M:%S')\nerrors['errorID'] = errors['errorID'].astype('category')\nprint(\"Total Number of error records: %d\" %len(errors.index))\nerrors.head()\n```\n\n    Total Number of error records: 3919\n    \n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003eerrorID\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e0\u003c/th\u003e\n      \u003ctd\u003e2015-01-03 07:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e1\u003c/th\u003e\n      \u003ctd\u003e2015-01-03 20:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e2\u003c/th\u003e\n      \u003ctd\u003e2015-01-04 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror5\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3\u003c/th\u003e\n      \u003ctd\u003e2015-01-10 15:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e4\u003c/th\u003e\n      \u003ctd\u003e2015-01-22 10:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror4\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\n```python\nsns.set_style(\"darkgrid\")\nplt.figure(figsize=(20, 8))\nerrors['errorID'].value_counts().plot(kind='bar')\nplt.ylabel('Count')\nerrors['errorID'].value_counts()\n```\n\n\n\n\n    error1    1010\n    error2     988\n    error3     838\n    error4     727\n    error5     356\n    Name: errorID, dtype: int64\n\n\n\n\n![png](output_7_1.png)\n\n\n#### **Maintenance**\nThese are the **scheduled and unscheduled** maintenance records which correspond to both **regular inspection of components as well as failures.** A **record is generated if a component is replaced during the scheduled inspection or replaced due to a breakdown.** The **records that are created due to breakdowns will be called failures** which is explained in the later sections. Maintenance data has both 2014 and 2015 records.\n\n\n```python\nmaint['datetime'] = pd.to_datetime(maint['datetime'], format='%Y-%m-%d %H:%M:%S')\nmaint['comp'] = maint['comp'].astype('category')\nprint(\"Total Number of maintenance Records: %d\" %len(maint.index))\nmaint.head()\n```\n\n    Total Number of maintenance Records: 3286\n    \n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003ecomp\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e0\u003c/th\u003e\n      \u003ctd\u003e2014-06-01 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003ecomp2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e1\u003c/th\u003e\n      \u003ctd\u003e2014-07-16 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003ecomp4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e2\u003c/th\u003e\n      \u003ctd\u003e2014-07-31 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003ecomp3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3\u003c/th\u003e\n      \u003ctd\u003e2014-12-13 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003ecomp1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e4\u003c/th\u003e\n      \u003ctd\u003e2015-01-05 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003ecomp4\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\n```python\nsns.set_style(\"darkgrid\")\nplt.figure(figsize=(10, 4))\nmaint['comp'].value_counts().plot(kind='bar')\nplt.ylabel('Count')\nmaint['comp'].value_counts()\n```\n\n\n\n\n    comp2    863\n    comp4    811\n    comp3    808\n    comp1    804\n    Name: comp, dtype: int64\n\n\n\n\n![png](output_10_1.png)\n\n\n#### **Machines**\nThis data set includes some information about the machines: model type and age (years in service).\n\n\n```python\nmachines['model'] = machines['model'].astype('category')\n\nprint(\"Total number of machines: %d\" % len(machines.index))\nmachines.head()\n```\n\n    Total number of machines: 100\n    \n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003emodel\u003c/th\u003e\n      \u003cth\u003eage\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e0\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003emodel3\u003c/td\u003e\n      \u003ctd\u003e18\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e1\u003c/th\u003e\n      \u003ctd\u003e2\u003c/td\u003e\n      \u003ctd\u003emodel4\u003c/td\u003e\n      \u003ctd\u003e7\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e2\u003c/th\u003e\n      \u003ctd\u003e3\u003c/td\u003e\n      \u003ctd\u003emodel3\u003c/td\u003e\n      \u003ctd\u003e8\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3\u003c/th\u003e\n      \u003ctd\u003e4\u003c/td\u003e\n      \u003ctd\u003emodel3\u003c/td\u003e\n      \u003ctd\u003e7\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e4\u003c/th\u003e\n      \u003ctd\u003e5\u003c/td\u003e\n      \u003ctd\u003emodel3\u003c/td\u003e\n      \u003ctd\u003e2\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\n```python\nsns.set_style(\"darkgrid\")\nplt.figure(figsize=(15, 6))\n_, bins, _ = plt.hist([machines.loc[machines['model'] == 'model1', 'age'],\n                       machines.loc[machines['model'] == 'model2', 'age'],\n                       machines.loc[machines['model'] == 'model3', 'age'],\n                       machines.loc[machines['model'] == 'model4', 'age']],\n                       20, stacked=True, label=['model1', 'model2', 'model3', 'model4'])\nplt.xlabel('Age (yrs)')\nplt.ylabel('Count')\nplt.legend()\n```\n\n\n\n\n    \u003cmatplotlib.legend.Legend at 0x2564dda9898\u003e\n\n\n\n\n![png](output_13_1.png)\n\n\n#### **Failures**\nThese are the records of component replacements **due to failures.** Each record has a **date and time, machine ID, and failed component type.**\n\n\n```python\n# format datetime field which comes in as string\nfailures['datetime'] = pd.to_datetime(failures['datetime'], format=\"%Y-%m-%d %H:%M:%S\")\nfailures['failure'] = failures['failure'].astype('category')\n\nprint(\"Total number of failures: %d\" % len(failures.index))\nfailures.head()\n```\n\n    Total number of failures: 761\n    \n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003efailure\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e0\u003c/th\u003e\n      \u003ctd\u003e2015-01-05 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003ecomp4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e1\u003c/th\u003e\n      \u003ctd\u003e2015-03-06 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003ecomp1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e2\u003c/th\u003e\n      \u003ctd\u003e2015-04-20 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003ecomp2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3\u003c/th\u003e\n      \u003ctd\u003e2015-06-19 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003ecomp4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e4\u003c/th\u003e\n      \u003ctd\u003e2015-09-02 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003ecomp4\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\n```python\nsns.set_style(\"darkgrid\")\nplt.figure(figsize=(15, 4))\nfailures['failure'].value_counts().plot(kind='bar')\nplt.ylabel('Count')\nfailures['failure'].value_counts()\n```\n\n\n\n\n    comp2    259\n    comp1    192\n    comp4    179\n    comp3    131\n    Name: failure, dtype: int64\n\n\n\n\n![png](output_16_1.png)\n\n\n## Feature Engineering\nThe first step in predictive maintenance applications is feature engineering which requires bringing the different data sources together to create features that best describe a machines's health condition at a given point in time. In the next sections, several feature engineering methods are used to create features based on the properties of each data source.\n\n### Lag Features from Telemetry\nTelemetry data almost always comes with time-stamps which makes it suitable for calculating lagging features. A common method is to pick a window size for the lag features to be created and compute rolling aggregate measures such as mean, standard deviation, minimum, maximum, etc. to represent the short term history of the telemetry over the lag window. In the following, rolling mean and standard deviation of the telemetry data over the last 3 hour lag window is calculated for every 3 hours.\n\n\n```python\n# Calculate mean values for telemetry features\ntemp = []\nfields = ['volt', 'rotate', 'pressure', 'vibration']\nfor col in fields:\n    temp.append(pd.pivot_table(telemetry,\n                               index='datetime',\n                               columns='machineID',\n                               values=col).resample('3H', closed='left', label='right', how='mean').unstack())\ntelemetry_mean_3h = pd.concat(temp, axis=1)\ntelemetry_mean_3h.columns = [i + 'mean_3h' for i in fields]\ntelemetry_mean_3h.reset_index(inplace=True)\n```\n\n    C:\\Program Files\\Microsoft\\ML Server\\PYTHON_SERVER\\lib\\site-packages\\ipykernel_launcher.py:8: FutureWarning: how in .resample() is deprecated\n    the new syntax is .resample(...).mean()\n      \n    \n\n\n```python\n# Calculate mean values for telemetry features\ntemp = []\nfields = ['volt', 'rotate', 'pressure', 'vibration']\nfor col in fields:\n    temp.append(pd.pivot_table(telemetry,\n                               index='datetime',\n                               columns='machineID',\n                               values=col).resample('3H', closed='left', label='right', how='mean').unstack())\ntelemetry_mean_3h = pd.concat(temp, axis=1)\ntelemetry_mean_3h.columns = [i + 'mean_3h' for i in fields]\ntelemetry_mean_3h.reset_index(inplace=True)\n\n# repeat for standard deviation\ntemp = []\nfor col in fields:\n    temp.append(pd.pivot_table(telemetry,\n                               index='datetime',\n                               columns='machineID',\n                               values=col).resample('3H', closed='left', label='right', how='std').unstack())\ntelemetry_sd_3h = pd.concat(temp, axis=1)\ntelemetry_sd_3h.columns = [i + 'sd_3h' for i in fields]\ntelemetry_sd_3h.reset_index(inplace=True)\n\ntelemetry_mean_3h.head()\n```\n\n    C:\\Program Files\\Microsoft\\ML Server\\PYTHON_SERVER\\lib\\site-packages\\ipykernel_launcher.py:8: FutureWarning: how in .resample() is deprecated\n    the new syntax is .resample(...).mean()\n      \n    C:\\Program Files\\Microsoft\\ML Server\\PYTHON_SERVER\\lib\\site-packages\\ipykernel_launcher.py:19: FutureWarning: how in .resample() is deprecated\n    the new syntax is .resample(...).std()\n    \n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003evoltmean_3h\u003c/th\u003e\n      \u003cth\u003erotatemean_3h\u003c/th\u003e\n      \u003cth\u003epressuremean_3h\u003c/th\u003e\n      \u003cth\u003evibrationmean_3h\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e0\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-01 09:00:00\u003c/td\u003e\n      \u003ctd\u003e170.028993\u003c/td\u003e\n      \u003ctd\u003e449.533798\u003c/td\u003e\n      \u003ctd\u003e94.592122\u003c/td\u003e\n      \u003ctd\u003e40.893502\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e1\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-01 12:00:00\u003c/td\u003e\n      \u003ctd\u003e164.192565\u003c/td\u003e\n      \u003ctd\u003e403.949857\u003c/td\u003e\n      \u003ctd\u003e105.687417\u003c/td\u003e\n      \u003ctd\u003e34.255891\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e2\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-01 15:00:00\u003c/td\u003e\n      \u003ctd\u003e168.134445\u003c/td\u003e\n      \u003ctd\u003e435.781707\u003c/td\u003e\n      \u003ctd\u003e107.793709\u003c/td\u003e\n      \u003ctd\u003e41.239405\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-01 18:00:00\u003c/td\u003e\n      \u003ctd\u003e165.514453\u003c/td\u003e\n      \u003ctd\u003e430.472823\u003c/td\u003e\n      \u003ctd\u003e101.703289\u003c/td\u003e\n      \u003ctd\u003e40.373739\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e4\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-01 21:00:00\u003c/td\u003e\n      \u003ctd\u003e168.809347\u003c/td\u003e\n      \u003ctd\u003e437.111120\u003c/td\u003e\n      \u003ctd\u003e90.911060\u003c/td\u003e\n      \u003ctd\u003e41.738542\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\nFor capturing a longer term effect, 24 hour lag features are also calculated as below.\n\n\n```python\ntemp = []\nfields = ['volt', 'rotate', 'pressure', 'vibration']\nfor col in fields:\n    temp.append(pd.rolling_mean(pd.pivot_table(telemetry,\n                                               index='datetime',\n                                               columns='machineID',\n                                               values=col), window=24).resample('3H',\n                                                                                closed='left',\n                                                                                label='right',\n                                                                                how='first').unstack())\ntelemetry_mean_24h = pd.concat(temp, axis=1)\ntelemetry_mean_24h.columns = [i + 'mean_24h' for i in fields]\ntelemetry_mean_24h.reset_index(inplace=True)\ntelemetry_mean_24h = telemetry_mean_24h.loc[-telemetry_mean_24h['voltmean_24h'].isnull()]\n\n# repeat for standard deviation\ntemp = []\nfields = ['volt', 'rotate', 'pressure', 'vibration']\nfor col in fields:\n    temp.append(pd.rolling_std(pd.pivot_table(telemetry,\n                                               index='datetime',\n                                               columns='machineID',\n                                               values=col), window=24).resample('3H',\n                                                                                closed='left',\n                                                                                label='right',\n                                                                                how='first').unstack())\ntelemetry_sd_24h = pd.concat(temp, axis=1)\ntelemetry_sd_24h.columns = [i + 'sd_24h' for i in fields]\ntelemetry_sd_24h = telemetry_sd_24h.loc[-telemetry_sd_24h['voltsd_24h'].isnull()]\ntelemetry_sd_24h.reset_index(inplace=True)\n\n# Notice that a 24h rolling average is not available at the earliest timepoints\ntelemetry_mean_24h.head(10)\n```\n\n    C:\\Program Files\\Microsoft\\ML Server\\PYTHON_SERVER\\lib\\site-packages\\ipykernel_launcher.py:7: FutureWarning: pd.rolling_mean is deprecated for DataFrame and will be removed in a future version, replace with \n    \tDataFrame.rolling(window=24,center=False).mean()\n      import sys\n    C:\\Program Files\\Microsoft\\ML Server\\PYTHON_SERVER\\lib\\site-packages\\ipykernel_launcher.py:10: FutureWarning: how in .resample() is deprecated\n    the new syntax is .resample(...).first()\n      # Remove the CWD from sys.path while we load stuff.\n    C:\\Program Files\\Microsoft\\ML Server\\PYTHON_SERVER\\lib\\site-packages\\ipykernel_launcher.py:23: FutureWarning: pd.rolling_std is deprecated for DataFrame and will be removed in a future version, replace with \n    \tDataFrame.rolling(window=24,center=False).std()\n    C:\\Program Files\\Microsoft\\ML Server\\PYTHON_SERVER\\lib\\site-packages\\ipykernel_launcher.py:26: FutureWarning: how in .resample() is deprecated\n    the new syntax is .resample(...).first()\n    \n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003evoltmean_24h\u003c/th\u003e\n      \u003cth\u003erotatemean_24h\u003c/th\u003e\n      \u003cth\u003epressuremean_24h\u003c/th\u003e\n      \u003cth\u003evibrationmean_24h\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e7\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 06:00:00\u003c/td\u003e\n      \u003ctd\u003e169.733809\u003c/td\u003e\n      \u003ctd\u003e445.179865\u003c/td\u003e\n      \u003ctd\u003e96.797113\u003c/td\u003e\n      \u003ctd\u003e40.385160\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e8\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 09:00:00\u003c/td\u003e\n      \u003ctd\u003e170.614862\u003c/td\u003e\n      \u003ctd\u003e446.364859\u003c/td\u003e\n      \u003ctd\u003e96.849785\u003c/td\u003e\n      \u003ctd\u003e39.736826\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e9\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 12:00:00\u003c/td\u003e\n      \u003ctd\u003e169.893965\u003c/td\u003e\n      \u003ctd\u003e447.009407\u003c/td\u003e\n      \u003ctd\u003e97.715600\u003c/td\u003e\n      \u003ctd\u003e39.498374\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e10\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 15:00:00\u003c/td\u003e\n      \u003ctd\u003e171.243444\u003c/td\u003e\n      \u003ctd\u003e444.233563\u003c/td\u003e\n      \u003ctd\u003e96.666060\u003c/td\u003e\n      \u003ctd\u003e40.229370\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e11\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 18:00:00\u003c/td\u003e\n      \u003ctd\u003e170.792486\u003c/td\u003e\n      \u003ctd\u003e448.440437\u003c/td\u003e\n      \u003ctd\u003e95.766838\u003c/td\u003e\n      \u003ctd\u003e40.055214\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e12\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 21:00:00\u003c/td\u003e\n      \u003ctd\u003e170.556674\u003c/td\u003e\n      \u003ctd\u003e452.267095\u003c/td\u003e\n      \u003ctd\u003e98.065860\u003c/td\u003e\n      \u003ctd\u003e40.033247\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e13\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 00:00:00\u003c/td\u003e\n      \u003ctd\u003e168.460525\u003c/td\u003e\n      \u003ctd\u003e451.031783\u003c/td\u003e\n      \u003ctd\u003e99.273286\u003c/td\u003e\n      \u003ctd\u003e38.903462\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e14\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 03:00:00\u003c/td\u003e\n      \u003ctd\u003e169.772951\u003c/td\u003e\n      \u003ctd\u003e447.502464\u003c/td\u003e\n      \u003ctd\u003e99.005946\u003c/td\u003e\n      \u003ctd\u003e39.389725\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e15\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 06:00:00\u003c/td\u003e\n      \u003ctd\u003e170.900562\u003c/td\u003e\n      \u003ctd\u003e453.864597\u003c/td\u003e\n      \u003ctd\u003e100.877342\u003c/td\u003e\n      \u003ctd\u003e38.696225\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e16\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 09:00:00\u003c/td\u003e\n      \u003ctd\u003e169.533156\u003c/td\u003e\n      \u003ctd\u003e454.785072\u003c/td\u003e\n      \u003ctd\u003e100.050567\u003c/td\u003e\n      \u003ctd\u003e39.449734\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\nNext, the columns of the feature datasets created earlier are merged to create the final feature set from telemetry.\n\n\n```python\n# merge columns of feature sets created earlier\ntelemetry_feat = pd.concat([telemetry_mean_3h,\n                            telemetry_sd_3h.ix[:, 2:6],\n                            telemetry_mean_24h.ix[:, 2:6],\n                            telemetry_sd_24h.ix[:, 2:6]], axis=1).dropna()\ntelemetry_feat.describe()\n```\n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003evoltmean_3h\u003c/th\u003e\n      \u003cth\u003erotatemean_3h\u003c/th\u003e\n      \u003cth\u003epressuremean_3h\u003c/th\u003e\n      \u003cth\u003evibrationmean_3h\u003c/th\u003e\n      \u003cth\u003evoltsd_3h\u003c/th\u003e\n      \u003cth\u003erotatesd_3h\u003c/th\u003e\n      \u003cth\u003epressuresd_3h\u003c/th\u003e\n      \u003cth\u003evibrationsd_3h\u003c/th\u003e\n      \u003cth\u003evoltmean_24h\u003c/th\u003e\n      \u003cth\u003erotatemean_24h\u003c/th\u003e\n      \u003cth\u003epressuremean_24h\u003c/th\u003e\n      \u003cth\u003evibrationmean_24h\u003c/th\u003e\n      \u003cth\u003evoltsd_24h\u003c/th\u003e\n      \u003cth\u003erotatesd_24h\u003c/th\u003e\n      \u003cth\u003epressuresd_24h\u003c/th\u003e\n      \u003cth\u003evibrationsd_24h\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003ecount\u003c/th\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emean\u003c/th\u003e\n      \u003ctd\u003e50.380935\u003c/td\u003e\n      \u003ctd\u003e170.774427\u003c/td\u003e\n      \u003ctd\u003e446.609386\u003c/td\u003e\n      \u003ctd\u003e100.858340\u003c/td\u003e\n      \u003ctd\u003e40.383609\u003c/td\u003e\n      \u003ctd\u003e13.300173\u003c/td\u003e\n      \u003ctd\u003e44.453951\u003c/td\u003e\n      \u003ctd\u003e8.885780\u003c/td\u003e\n      \u003ctd\u003e4.440575\u003c/td\u003e\n      \u003ctd\u003e170.775661\u003c/td\u003e\n      \u003ctd\u003e446.609874\u003c/td\u003e\n      \u003ctd\u003e100.857574\u003c/td\u003e\n      \u003ctd\u003e40.383881\u003c/td\u003e\n      \u003ctd\u003e14.919452\u003c/td\u003e\n      \u003ctd\u003e49.950788\u003c/td\u003e\n      \u003ctd\u003e10.046380\u003c/td\u003e\n      \u003ctd\u003e5.002089\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003estd\u003c/th\u003e\n      \u003ctd\u003e28.798424\u003c/td\u003e\n      \u003ctd\u003e9.498824\u003c/td\u003e\n      \u003ctd\u003e33.119738\u003c/td\u003e\n      \u003ctd\u003e7.411701\u003c/td\u003e\n      \u003ctd\u003e3.475512\u003c/td\u003e\n      \u003ctd\u003e6.966389\u003c/td\u003e\n      \u003ctd\u003e23.214291\u003c/td\u003e\n      \u003ctd\u003e4.656364\u003c/td\u003e\n      \u003ctd\u003e2.319989\u003c/td\u003e\n      \u003ctd\u003e4.720237\u003c/td\u003e\n      \u003ctd\u003e18.070458\u003c/td\u003e\n      \u003ctd\u003e4.737293\u003c/td\u003e\n      \u003ctd\u003e2.058059\u003c/td\u003e\n      \u003ctd\u003e2.261097\u003c/td\u003e\n      \u003ctd\u003e7.684305\u003c/td\u003e\n      \u003ctd\u003e1.713206\u003c/td\u003e\n      \u003ctd\u003e0.799599\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emin\u003c/th\u003e\n      \u003ctd\u003e1.000000\u003c/td\u003e\n      \u003ctd\u003e125.532506\u003c/td\u003e\n      \u003ctd\u003e211.811184\u003c/td\u003e\n      \u003ctd\u003e72.118639\u003c/td\u003e\n      \u003ctd\u003e26.569635\u003c/td\u003e\n      \u003ctd\u003e0.025509\u003c/td\u003e\n      \u003ctd\u003e0.078991\u003c/td\u003e\n      \u003ctd\u003e0.027417\u003c/td\u003e\n      \u003ctd\u003e0.015278\u003c/td\u003e\n      \u003ctd\u003e155.812721\u003c/td\u003e\n      \u003ctd\u003e266.010419\u003c/td\u003e\n      \u003ctd\u003e91.057429\u003c/td\u003e\n      \u003ctd\u003e35.060087\u003c/td\u003e\n      \u003ctd\u003e6.380619\u003c/td\u003e\n      \u003ctd\u003e18.385248\u003c/td\u003e\n      \u003ctd\u003e4.145308\u003c/td\u003e\n      \u003ctd\u003e2.144863\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e25%\u003c/th\u003e\n      \u003ctd\u003e25.000000\u003c/td\u003e\n      \u003ctd\u003e164.447794\u003c/td\u003e\n      \u003ctd\u003e427.564793\u003c/td\u003e\n      \u003ctd\u003e96.239534\u003c/td\u003e\n      \u003ctd\u003e38.147458\u003c/td\u003e\n      \u003ctd\u003e8.028675\u003c/td\u003e\n      \u003ctd\u003e26.906319\u003c/td\u003e\n      \u003ctd\u003e5.369959\u003c/td\u003e\n      \u003ctd\u003e2.684556\u003c/td\u003e\n      \u003ctd\u003e168.072275\u003c/td\u003e\n      \u003ctd\u003e441.542561\u003c/td\u003e\n      \u003ctd\u003e98.669734\u003c/td\u003e\n      \u003ctd\u003e39.354077\u003c/td\u003e\n      \u003ctd\u003e13.359069\u003c/td\u003e\n      \u003ctd\u003e44.669022\u003c/td\u003e\n      \u003ctd\u003e8.924165\u003c/td\u003e\n      \u003ctd\u003e4.460675\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e50%\u003c/th\u003e\n      \u003ctd\u003e50.000000\u003c/td\u003e\n      \u003ctd\u003e170.432407\u003c/td\u003e\n      \u003ctd\u003e448.380260\u003c/td\u003e\n      \u003ctd\u003e100.235357\u003c/td\u003e\n      \u003ctd\u003e40.145874\u003c/td\u003e\n      \u003ctd\u003e12.495542\u003c/td\u003e\n      \u003ctd\u003e41.793798\u003c/td\u003e\n      \u003ctd\u003e8.345801\u003c/td\u003e\n      \u003ctd\u003e4.173704\u003c/td\u003e\n      \u003ctd\u003e170.212704\u003c/td\u003e\n      \u003ctd\u003e449.206885\u003c/td\u003e\n      \u003ctd\u003e100.099533\u003c/td\u003e\n      \u003ctd\u003e40.072618\u003c/td\u003e\n      \u003ctd\u003e14.854186\u003c/td\u003e\n      \u003ctd\u003e49.617459\u003c/td\u003e\n      \u003ctd\u003e9.921332\u003c/td\u003e\n      \u003ctd\u003e4.958793\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e75%\u003c/th\u003e\n      \u003ctd\u003e75.000000\u003c/td\u003e\n      \u003ctd\u003e176.610017\u003c/td\u003e\n      \u003ctd\u003e468.443933\u003c/td\u003e\n      \u003ctd\u003e104.406534\u003c/td\u003e\n      \u003ctd\u003e42.226898\u003c/td\u003e\n      \u003ctd\u003e17.688520\u003c/td\u003e\n      \u003ctd\u003e59.092354\u003c/td\u003e\n      \u003ctd\u003e11.789358\u003c/td\u003e\n      \u003ctd\u003e5.898512\u003c/td\u003e\n      \u003ctd\u003e172.462228\u003c/td\u003e\n      \u003ctd\u003e456.366349\u003c/td\u003e\n      \u003ctd\u003e101.613047\u003c/td\u003e\n      \u003ctd\u003e40.833112\u003c/td\u003e\n      \u003ctd\u003e16.395372\u003c/td\u003e\n      \u003ctd\u003e54.826993\u003c/td\u003e\n      \u003ctd\u003e10.980250\u003c/td\u003e\n      \u003ctd\u003e5.484430\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emax\u003c/th\u003e\n      \u003ctd\u003e100.000000\u003c/td\u003e\n      \u003ctd\u003e241.420717\u003c/td\u003e\n      \u003ctd\u003e586.682904\u003c/td\u003e\n      \u003ctd\u003e162.309656\u003c/td\u003e\n      \u003ctd\u003e69.311324\u003c/td\u003e\n      \u003ctd\u003e58.444332\u003c/td\u003e\n      \u003ctd\u003e179.903039\u003c/td\u003e\n      \u003ctd\u003e35.659369\u003c/td\u003e\n      \u003ctd\u003e18.305595\u003c/td\u003e\n      \u003ctd\u003e220.782618\u003c/td\u003e\n      \u003ctd\u003e499.096975\u003c/td\u003e\n      \u003ctd\u003e152.310351\u003c/td\u003e\n      \u003ctd\u003e61.932124\u003c/td\u003e\n      \u003ctd\u003e27.664538\u003c/td\u003e\n      \u003ctd\u003e103.819404\u003c/td\u003e\n      \u003ctd\u003e28.654103\u003c/td\u003e\n      \u003ctd\u003e12.325783\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\n```python\ntelemetry_feat.head()\n```\n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003evoltmean_3h\u003c/th\u003e\n      \u003cth\u003erotatemean_3h\u003c/th\u003e\n      \u003cth\u003epressuremean_3h\u003c/th\u003e\n      \u003cth\u003evibrationmean_3h\u003c/th\u003e\n      \u003cth\u003evoltsd_3h\u003c/th\u003e\n      \u003cth\u003erotatesd_3h\u003c/th\u003e\n      \u003cth\u003epressuresd_3h\u003c/th\u003e\n      \u003cth\u003evibrationsd_3h\u003c/th\u003e\n      \u003cth\u003evoltmean_24h\u003c/th\u003e\n      \u003cth\u003erotatemean_24h\u003c/th\u003e\n      \u003cth\u003epressuremean_24h\u003c/th\u003e\n      \u003cth\u003evibrationmean_24h\u003c/th\u003e\n      \u003cth\u003evoltsd_24h\u003c/th\u003e\n      \u003cth\u003erotatesd_24h\u003c/th\u003e\n      \u003cth\u003epressuresd_24h\u003c/th\u003e\n      \u003cth\u003evibrationsd_24h\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e7\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 06:00:00\u003c/td\u003e\n      \u003ctd\u003e180.133784\u003c/td\u003e\n      \u003ctd\u003e440.608320\u003c/td\u003e\n      \u003ctd\u003e94.137969\u003c/td\u003e\n      \u003ctd\u003e41.551544\u003c/td\u003e\n      \u003ctd\u003e21.322735\u003c/td\u003e\n      \u003ctd\u003e48.770512\u003c/td\u003e\n      \u003ctd\u003e2.135684\u003c/td\u003e\n      \u003ctd\u003e10.037208\u003c/td\u003e\n      \u003ctd\u003e169.733809\u003c/td\u003e\n      \u003ctd\u003e445.179865\u003c/td\u003e\n      \u003ctd\u003e96.797113\u003c/td\u003e\n      \u003ctd\u003e40.385160\u003c/td\u003e\n      \u003ctd\u003e15.726970\u003c/td\u003e\n      \u003ctd\u003e39.648116\u003c/td\u003e\n      \u003ctd\u003e11.904700\u003c/td\u003e\n      \u003ctd\u003e5.601191\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e8\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 09:00:00\u003c/td\u003e\n      \u003ctd\u003e176.364293\u003c/td\u003e\n      \u003ctd\u003e439.349655\u003c/td\u003e\n      \u003ctd\u003e101.553209\u003c/td\u003e\n      \u003ctd\u003e36.105580\u003c/td\u003e\n      \u003ctd\u003e18.952210\u003c/td\u003e\n      \u003ctd\u003e51.329636\u003c/td\u003e\n      \u003ctd\u003e13.789279\u003c/td\u003e\n      \u003ctd\u003e6.737739\u003c/td\u003e\n      \u003ctd\u003e170.614862\u003c/td\u003e\n      \u003ctd\u003e446.364859\u003c/td\u003e\n      \u003ctd\u003e96.849785\u003c/td\u003e\n      \u003ctd\u003e39.736826\u003c/td\u003e\n      \u003ctd\u003e15.635083\u003c/td\u003e\n      \u003ctd\u003e41.828592\u003c/td\u003e\n      \u003ctd\u003e11.326412\u003c/td\u003e\n      \u003ctd\u003e5.583521\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e9\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 12:00:00\u003c/td\u003e\n      \u003ctd\u003e160.384568\u003c/td\u003e\n      \u003ctd\u003e424.385316\u003c/td\u003e\n      \u003ctd\u003e99.598722\u003c/td\u003e\n      \u003ctd\u003e36.094637\u003c/td\u003e\n      \u003ctd\u003e13.047080\u003c/td\u003e\n      \u003ctd\u003e13.702496\u003c/td\u003e\n      \u003ctd\u003e9.988609\u003c/td\u003e\n      \u003ctd\u003e1.639962\u003c/td\u003e\n      \u003ctd\u003e169.893965\u003c/td\u003e\n      \u003ctd\u003e447.009407\u003c/td\u003e\n      \u003ctd\u003e97.715600\u003c/td\u003e\n      \u003ctd\u003e39.498374\u003c/td\u003e\n      \u003ctd\u003e13.995465\u003c/td\u003e\n      \u003ctd\u003e40.843882\u003c/td\u003e\n      \u003ctd\u003e11.036546\u003c/td\u003e\n      \u003ctd\u003e5.561553\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e10\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 15:00:00\u003c/td\u003e\n      \u003ctd\u003e170.472461\u003c/td\u003e\n      \u003ctd\u003e442.933997\u003c/td\u003e\n      \u003ctd\u003e102.380586\u003c/td\u003e\n      \u003ctd\u003e40.483002\u003c/td\u003e\n      \u003ctd\u003e16.642354\u003c/td\u003e\n      \u003ctd\u003e56.290447\u003c/td\u003e\n      \u003ctd\u003e3.305739\u003c/td\u003e\n      \u003ctd\u003e8.854145\u003c/td\u003e\n      \u003ctd\u003e171.243444\u003c/td\u003e\n      \u003ctd\u003e444.233563\u003c/td\u003e\n      \u003ctd\u003e96.666060\u003c/td\u003e\n      \u003ctd\u003e40.229370\u003c/td\u003e\n      \u003ctd\u003e13.100364\u003c/td\u003e\n      \u003ctd\u003e43.409841\u003c/td\u003e\n      \u003ctd\u003e10.972862\u003c/td\u003e\n      \u003ctd\u003e6.068674\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e11\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 18:00:00\u003c/td\u003e\n      \u003ctd\u003e163.263806\u003c/td\u003e\n      \u003ctd\u003e468.937558\u003c/td\u003e\n      \u003ctd\u003e102.726648\u003c/td\u003e\n      \u003ctd\u003e40.921802\u003c/td\u003e\n      \u003ctd\u003e17.424688\u003c/td\u003e\n      \u003ctd\u003e38.680380\u003c/td\u003e\n      \u003ctd\u003e9.105775\u003c/td\u003e\n      \u003ctd\u003e3.060781\u003c/td\u003e\n      \u003ctd\u003e170.792486\u003c/td\u003e\n      \u003ctd\u003e448.440437\u003c/td\u003e\n      \u003ctd\u003e95.766838\u003c/td\u003e\n      \u003ctd\u003e40.055214\u003c/td\u003e\n      \u003ctd\u003e13.808489\u003c/td\u003e\n      \u003ctd\u003e43.742304\u003c/td\u003e\n      \u003ctd\u003e10.988704\u003c/td\u003e\n      \u003ctd\u003e7.286129\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n### Lag Features from Errors\nLike telemetry data, errors come with timestamps. An important difference is that the **error IDs are categorical values** and **should not be averaged over time intervals like the telemetry measurements.** Instead, we count the number of errors of each type in a **lagging window. We begin by reformatting the error data** to have one entry per machine per time at which at least one error occurred:\n\n\n```python\nerrors\n```\n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003eerrorID\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e0\u003c/th\u003e\n      \u003ctd\u003e2015-01-03 07:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e1\u003c/th\u003e\n      \u003ctd\u003e2015-01-03 20:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e2\u003c/th\u003e\n      \u003ctd\u003e2015-01-04 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror5\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3\u003c/th\u003e\n      \u003ctd\u003e2015-01-10 15:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e4\u003c/th\u003e\n      \u003ctd\u003e2015-01-22 10:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e5\u003c/th\u003e\n      \u003ctd\u003e2015-01-25 15:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e6\u003c/th\u003e\n      \u003ctd\u003e2015-01-27 04:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e7\u003c/th\u003e\n      \u003ctd\u003e2015-03-03 22:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e8\u003c/th\u003e\n      \u003ctd\u003e2015-03-05 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e9\u003c/th\u003e\n      \u003ctd\u003e2015-03-20 18:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e10\u003c/th\u003e\n      \u003ctd\u003e2015-03-26 01:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e11\u003c/th\u003e\n      \u003ctd\u003e2015-03-31 23:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e12\u003c/th\u003e\n      \u003ctd\u003e2015-04-19 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e13\u003c/th\u003e\n      \u003ctd\u003e2015-04-19 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e14\u003c/th\u003e\n      \u003ctd\u003e2015-04-29 19:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e15\u003c/th\u003e\n      \u003ctd\u003e2015-05-04 23:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e16\u003c/th\u003e\n      \u003ctd\u003e2015-05-12 09:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e17\u003c/th\u003e\n      \u003ctd\u003e2015-05-21 07:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e18\u003c/th\u003e\n      \u003ctd\u003e2015-05-24 02:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e19\u003c/th\u003e\n      \u003ctd\u003e2015-05-25 05:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e20\u003c/th\u003e\n      \u003ctd\u003e2015-06-09 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e21\u003c/th\u003e\n      \u003ctd\u003e2015-06-18 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror5\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e22\u003c/th\u003e\n      \u003ctd\u003e2015-06-23 10:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e23\u003c/th\u003e\n      \u003ctd\u003e2015-08-23 19:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e24\u003c/th\u003e\n      \u003ctd\u003e2015-08-30 01:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e25\u003c/th\u003e\n      \u003ctd\u003e2015-09-01 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror5\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e26\u003c/th\u003e\n      \u003ctd\u003e2015-09-13 17:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e27\u003c/th\u003e\n      \u003ctd\u003e2015-09-15 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e28\u003c/th\u003e\n      \u003ctd\u003e2015-10-01 23:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e29\u003c/th\u003e\n      \u003ctd\u003e2015-10-15 05:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e...\u003c/th\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3889\u003c/th\u003e\n      \u003ctd\u003e2015-01-16 00:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3890\u003c/th\u003e\n      \u003ctd\u003e2015-02-01 10:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3891\u003c/th\u003e\n      \u003ctd\u003e2015-02-11 06:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3892\u003c/th\u003e\n      \u003ctd\u003e2015-02-12 21:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3893\u003c/th\u003e\n      \u003ctd\u003e2015-03-08 15:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3894\u003c/th\u003e\n      \u003ctd\u003e2015-04-27 04:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3895\u003c/th\u003e\n      \u003ctd\u003e2015-04-27 22:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror5\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3896\u003c/th\u003e\n      \u003ctd\u003e2015-05-16 23:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3897\u003c/th\u003e\n      \u003ctd\u003e2015-05-17 13:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3898\u003c/th\u003e\n      \u003ctd\u003e2015-05-22 02:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3899\u003c/th\u003e\n      \u003ctd\u003e2015-07-05 16:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3900\u003c/th\u003e\n      \u003ctd\u003e2015-07-19 01:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3901\u003c/th\u003e\n      \u003ctd\u003e2015-08-14 16:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3902\u003c/th\u003e\n      \u003ctd\u003e2015-08-30 15:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror4\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3903\u003c/th\u003e\n      \u003ctd\u003e2015-09-09 06:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3904\u003c/th\u003e\n      \u003ctd\u003e2015-09-14 23:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3905\u003c/th\u003e\n      \u003ctd\u003e2015-10-03 05:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3906\u003c/th\u003e\n      \u003ctd\u003e2015-10-09 07:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3907\u003c/th\u003e\n      \u003ctd\u003e2015-10-17 02:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3908\u003c/th\u003e\n      \u003ctd\u003e2015-10-17 12:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3909\u003c/th\u003e\n      \u003ctd\u003e2015-10-24 23:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3910\u003c/th\u003e\n      \u003ctd\u003e2015-10-27 21:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3911\u003c/th\u003e\n      \u003ctd\u003e2015-11-05 02:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3912\u003c/th\u003e\n      \u003ctd\u003e2015-11-07 17:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3913\u003c/th\u003e\n      \u003ctd\u003e2015-11-12 01:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3914\u003c/th\u003e\n      \u003ctd\u003e2015-11-21 08:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3915\u003c/th\u003e\n      \u003ctd\u003e2015-12-04 02:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3916\u003c/th\u003e\n      \u003ctd\u003e2015-12-08 06:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3917\u003c/th\u003e\n      \u003ctd\u003e2015-12-08 06:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3918\u003c/th\u003e\n      \u003ctd\u003e2015-12-22 03:00:00\u003c/td\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003eerror3\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e3919 rows × 3 columns\u003c/p\u003e\n\u003c/div\u003e\n\n\n\n\n```python\n# create a column for each error type\nerror_count = pd.get_dummies(errors.set_index('datetime')).reset_index()\nerror_count\nerror_count.columns = ['datetime', 'machineID', 'error1', 'error2', 'error3', 'error4', 'error5']\nerror_count.head(13)\n```\n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003eerror1\u003c/th\u003e\n      \u003cth\u003eerror2\u003c/th\u003e\n      \u003cth\u003eerror3\u003c/th\u003e\n      \u003cth\u003eerror4\u003c/th\u003e\n      \u003cth\u003eerror5\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e0\u003c/th\u003e\n      \u003ctd\u003e2015-01-03 07:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e1\u003c/th\u003e\n      \u003ctd\u003e2015-01-03 20:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e2\u003c/th\u003e\n      \u003ctd\u003e2015-01-04 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3\u003c/th\u003e\n      \u003ctd\u003e2015-01-10 15:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e4\u003c/th\u003e\n      \u003ctd\u003e2015-01-22 10:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e5\u003c/th\u003e\n      \u003ctd\u003e2015-01-25 15:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e6\u003c/th\u003e\n      \u003ctd\u003e2015-01-27 04:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e7\u003c/th\u003e\n      \u003ctd\u003e2015-03-03 22:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e8\u003c/th\u003e\n      \u003ctd\u003e2015-03-05 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e9\u003c/th\u003e\n      \u003ctd\u003e2015-03-20 18:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e10\u003c/th\u003e\n      \u003ctd\u003e2015-03-26 01:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e11\u003c/th\u003e\n      \u003ctd\u003e2015-03-31 23:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e12\u003c/th\u003e\n      \u003ctd\u003e2015-04-19 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\n```python\n# combine errors for a given machine in a given hour\nerror_count = error_count.groupby(['machineID','datetime']).sum().reset_index()\nerror_count.head(13)\n```\n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003eerror1\u003c/th\u003e\n      \u003cth\u003eerror2\u003c/th\u003e\n      \u003cth\u003eerror3\u003c/th\u003e\n      \u003cth\u003eerror4\u003c/th\u003e\n      \u003cth\u003eerror5\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e0\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 07:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e1\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 20:00:00\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e2\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-04 06:00:00\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-10 15:00:00\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e4\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-22 10:00:00\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e5\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-25 15:00:00\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e6\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-27 04:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e7\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-03-03 22:00:00\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e8\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-03-05 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e9\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-03-20 18:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e10\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-03-26 01:00:00\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e11\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-03-31 23:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e12\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-04-19 06:00:00\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n      \u003ctd\u003e0\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\n```python\nerror_count = telemetry[['datetime', 'machineID']].merge(error_count, on=['machineID', 'datetime'], how='left').fillna(0.0)\nerror_count.describe()\n```\n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003eerror1\u003c/th\u003e\n      \u003cth\u003eerror2\u003c/th\u003e\n      \u003cth\u003eerror3\u003c/th\u003e\n      \u003cth\u003eerror4\u003c/th\u003e\n      \u003cth\u003eerror5\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003ecount\u003c/th\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emean\u003c/th\u003e\n      \u003ctd\u003e50.500000\u003c/td\u003e\n      \u003ctd\u003e0.001153\u003c/td\u003e\n      \u003ctd\u003e0.001128\u003c/td\u003e\n      \u003ctd\u003e0.000957\u003c/td\u003e\n      \u003ctd\u003e0.000830\u003c/td\u003e\n      \u003ctd\u003e0.000406\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003estd\u003c/th\u003e\n      \u003ctd\u003e28.866087\u003c/td\u003e\n      \u003ctd\u003e0.033934\u003c/td\u003e\n      \u003ctd\u003e0.033563\u003c/td\u003e\n      \u003ctd\u003e0.030913\u003c/td\u003e\n      \u003ctd\u003e0.028795\u003c/td\u003e\n      \u003ctd\u003e0.020154\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emin\u003c/th\u003e\n      \u003ctd\u003e1.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e25%\u003c/th\u003e\n      \u003ctd\u003e25.750000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e50%\u003c/th\u003e\n      \u003ctd\u003e50.500000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e75%\u003c/th\u003e\n      \u003ctd\u003e75.250000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emax\u003c/th\u003e\n      \u003ctd\u003e100.000000\u003c/td\u003e\n      \u003ctd\u003e1.000000\u003c/td\u003e\n      \u003ctd\u003e1.000000\u003c/td\u003e\n      \u003ctd\u003e1.000000\u003c/td\u003e\n      \u003ctd\u003e1.000000\u003c/td\u003e\n      \u003ctd\u003e1.000000\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\nFinally, we can compute the total number of errors of each type over the last 24 hours, for timepoints taken every three hours:\n\n\n```python\ntemp = []\nfields = ['error%d' % i for i in range(1,6)]\nfor col in fields:\n    temp.append(pd.rolling_sum(pd.pivot_table(error_count,\n                                               index='datetime',\n                                               columns='machineID',\n                                               values=col), window=24).resample('3H',\n                                                                             closed='left',\n                                                                             label='right',\n                                                                             how='first').unstack())\nerror_count = pd.concat(temp, axis=1)\nerror_count.columns = [i + 'count' for i in fields]\nerror_count.reset_index(inplace=True)\nerror_count = error_count.dropna()\nerror_count.describe()\n```\n\n    C:\\Program Files\\Microsoft\\ML Server\\PYTHON_SERVER\\lib\\site-packages\\ipykernel_launcher.py:7: FutureWarning: pd.rolling_sum is deprecated for DataFrame and will be removed in a future version, replace with \n    \tDataFrame.rolling(window=24,center=False).sum()\n      import sys\n    C:\\Program Files\\Microsoft\\ML Server\\PYTHON_SERVER\\lib\\site-packages\\ipykernel_launcher.py:10: FutureWarning: how in .resample() is deprecated\n    the new syntax is .resample(...).first()\n      # Remove the CWD from sys.path while we load stuff.\n    \n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003eerror1count\u003c/th\u003e\n      \u003cth\u003eerror2count\u003c/th\u003e\n      \u003cth\u003eerror3count\u003c/th\u003e\n      \u003cth\u003eerror4count\u003c/th\u003e\n      \u003cth\u003eerror5count\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003ecount\u003c/th\u003e\n      \u003ctd\u003e291400.00000\u003c/td\u003e\n      \u003ctd\u003e291400.000000\u003c/td\u003e\n      \u003ctd\u003e291400.000000\u003c/td\u003e\n      \u003ctd\u003e291400.000000\u003c/td\u003e\n      \u003ctd\u003e291400.000000\u003c/td\u003e\n      \u003ctd\u003e291400.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emean\u003c/th\u003e\n      \u003ctd\u003e50.50000\u003c/td\u003e\n      \u003ctd\u003e0.027649\u003c/td\u003e\n      \u003ctd\u003e0.027069\u003c/td\u003e\n      \u003ctd\u003e0.022907\u003c/td\u003e\n      \u003ctd\u003e0.019904\u003c/td\u003e\n      \u003ctd\u003e0.009753\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003estd\u003c/th\u003e\n      \u003ctd\u003e28.86612\u003c/td\u003e\n      \u003ctd\u003e0.166273\u003c/td\u003e\n      \u003ctd\u003e0.164429\u003c/td\u003e\n      \u003ctd\u003e0.151453\u003c/td\u003e\n      \u003ctd\u003e0.140820\u003c/td\u003e\n      \u003ctd\u003e0.098797\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emin\u003c/th\u003e\n      \u003ctd\u003e1.00000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e25%\u003c/th\u003e\n      \u003ctd\u003e25.75000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e50%\u003c/th\u003e\n      \u003ctd\u003e50.50000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e75%\u003c/th\u003e\n      \u003ctd\u003e75.25000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emax\u003c/th\u003e\n      \u003ctd\u003e100.00000\u003c/td\u003e\n      \u003ctd\u003e2.000000\u003c/td\u003e\n      \u003ctd\u003e2.000000\u003c/td\u003e\n      \u003ctd\u003e2.000000\u003c/td\u003e\n      \u003ctd\u003e2.000000\u003c/td\u003e\n      \u003ctd\u003e2.000000\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\n```python\nerror_count.head()\n```\n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003eerror1count\u003c/th\u003e\n      \u003cth\u003eerror2count\u003c/th\u003e\n      \u003cth\u003eerror3count\u003c/th\u003e\n      \u003cth\u003eerror4count\u003c/th\u003e\n      \u003cth\u003eerror5count\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e7\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 06:00:00\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e8\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 09:00:00\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e9\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 12:00:00\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e10\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 15:00:00\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e11\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 18:00:00\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n### Days Since Last Replacement from Maintenance\nA crucial data set in this example is the maintenance records which contain the information of component replacement records. Possible features from this data set can be, for example, the number of replacements of each component in the last 3 months to incorporate the frequency of replacements. However, more relevent information would be to calculate how long it has been since a component is last replaced as that would be expected to correlate better with component failures since the longer a component is used, the more degradation should be expected.\n\nAs a side note, creating lagging features from maintenance data is not as straightforward as for telemetry and errors, so the features from this data are generated in a more custom way. This type of ad-hoc feature engineering is very common in predictive maintenance since domain knowledge plays a big role in understanding the predictors of a problem. In the following, the days since last component replacement are calculated for each component type as features from the maintenance data.\n\n\n```python\nimport numpy as np\n\n# create a column for each error type\ncomp_rep = pd.get_dummies(maint.set_index('datetime')).reset_index()\ncomp_rep.columns = ['datetime', 'machineID', 'comp1', 'comp2', 'comp3', 'comp4']\n\n# combine repairs for a given machine in a given hour\ncomp_rep = comp_rep.groupby(['machineID', 'datetime']).sum().reset_index()\n\n# add timepoints where no components were replaced\ncomp_rep = telemetry[['datetime', 'machineID']].merge(comp_rep,\n                                                      on=['datetime', 'machineID'],\n                                                      how='outer').fillna(0).sort_values(by=['machineID', 'datetime'])\n\ncomponents = ['comp1', 'comp2', 'comp3', 'comp4']\nfor comp in components:\n    # convert indicator to most recent date of component change\n    comp_rep.loc[comp_rep[comp] \u003c 1, comp] = None\n    comp_rep.loc[-comp_rep[comp].isnull(), comp] = comp_rep.loc[-comp_rep[comp].isnull(), 'datetime']\n    \n    # forward-fill the most-recent date of component change\n    comp_rep[comp] = comp_rep[comp].fillna(method='ffill')\n\n# remove dates in 2014 (may have NaN or future component change dates)    \ncomp_rep = comp_rep.loc[comp_rep['datetime'] \u003e pd.to_datetime('2015-01-01')]\n\n# replace dates of most recent component change with days since most recent component change\nfor comp in components:\n    comp_rep[comp] = (comp_rep['datetime'] - comp_rep[comp]) / np.timedelta64(1, 'D')\n    \ncomp_rep.describe()\n```\n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003ecomp1\u003c/th\u003e\n      \u003cth\u003ecomp2\u003c/th\u003e\n      \u003cth\u003ecomp3\u003c/th\u003e\n      \u003cth\u003ecomp4\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003ecount\u003c/th\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n      \u003ctd\u003e876100.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emean\u003c/th\u003e\n      \u003ctd\u003e50.500000\u003c/td\u003e\n      \u003ctd\u003e53.525185\u003c/td\u003e\n      \u003ctd\u003e51.540806\u003c/td\u003e\n      \u003ctd\u003e52.725962\u003c/td\u003e\n      \u003ctd\u003e53.834191\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003estd\u003c/th\u003e\n      \u003ctd\u003e28.866087\u003c/td\u003e\n      \u003ctd\u003e62.491679\u003c/td\u003e\n      \u003ctd\u003e59.269254\u003c/td\u003e\n      \u003ctd\u003e58.873114\u003c/td\u003e\n      \u003ctd\u003e59.707978\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emin\u003c/th\u003e\n      \u003ctd\u003e1.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e25%\u003c/th\u003e\n      \u003ctd\u003e25.750000\u003c/td\u003e\n      \u003ctd\u003e13.291667\u003c/td\u003e\n      \u003ctd\u003e12.125000\u003c/td\u003e\n      \u003ctd\u003e13.125000\u003c/td\u003e\n      \u003ctd\u003e13.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e50%\u003c/th\u003e\n      \u003ctd\u003e50.500000\u003c/td\u003e\n      \u003ctd\u003e32.791667\u003c/td\u003e\n      \u003ctd\u003e29.666667\u003c/td\u003e\n      \u003ctd\u003e32.291667\u003c/td\u003e\n      \u003ctd\u003e32.500000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e75%\u003c/th\u003e\n      \u003ctd\u003e75.250000\u003c/td\u003e\n      \u003ctd\u003e68.708333\u003c/td\u003e\n      \u003ctd\u003e66.541667\u003c/td\u003e\n      \u003ctd\u003e67.333333\u003c/td\u003e\n      \u003ctd\u003e70.458333\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emax\u003c/th\u003e\n      \u003ctd\u003e100.000000\u003c/td\u003e\n      \u003ctd\u003e491.958333\u003c/td\u003e\n      \u003ctd\u003e348.958333\u003c/td\u003e\n      \u003ctd\u003e370.958333\u003c/td\u003e\n      \u003ctd\u003e394.958333\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n\n```python\ncomp_rep.head()\n```\n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003ecomp1\u003c/th\u003e\n      \u003cth\u003ecomp2\u003c/th\u003e\n      \u003cth\u003ecomp3\u003c/th\u003e\n      \u003cth\u003ecomp4\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e0\u003c/th\u003e\n      \u003ctd\u003e2015-01-01 06:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e19.000000\u003c/td\u003e\n      \u003ctd\u003e214.000000\u003c/td\u003e\n      \u003ctd\u003e154.000000\u003c/td\u003e\n      \u003ctd\u003e169.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e1\u003c/th\u003e\n      \u003ctd\u003e2015-01-01 07:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e19.041667\u003c/td\u003e\n      \u003ctd\u003e214.041667\u003c/td\u003e\n      \u003ctd\u003e154.041667\u003c/td\u003e\n      \u003ctd\u003e169.041667\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e2\u003c/th\u003e\n      \u003ctd\u003e2015-01-01 08:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e19.083333\u003c/td\u003e\n      \u003ctd\u003e214.083333\u003c/td\u003e\n      \u003ctd\u003e154.083333\u003c/td\u003e\n      \u003ctd\u003e169.083333\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3\u003c/th\u003e\n      \u003ctd\u003e2015-01-01 09:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e19.125000\u003c/td\u003e\n      \u003ctd\u003e214.125000\u003c/td\u003e\n      \u003ctd\u003e154.125000\u003c/td\u003e\n      \u003ctd\u003e169.125000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e4\u003c/th\u003e\n      \u003ctd\u003e2015-01-01 10:00:00\u003c/td\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e19.166667\u003c/td\u003e\n      \u003ctd\u003e214.166667\u003c/td\u003e\n      \u003ctd\u003e154.166667\u003c/td\u003e\n      \u003ctd\u003e169.166667\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n## Machine Features\nThe machine features can be used without further modification. These include descriptive information about the type of each machine and its age (number of years in service). If the age information had been recorded as a \"first use date\" for each machine, a transformation would have been necessary to turn those into a numeric values indicating the years in service.\n\nLastly, we merge all the feature data sets we created earlier to get the final feature matrix.\n\n\n```python\n\n```\n\n\n```python\ntelemetry_feat\n```\n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003evoltmean_3h\u003c/th\u003e\n      \u003cth\u003erotatemean_3h\u003c/th\u003e\n      \u003cth\u003epressuremean_3h\u003c/th\u003e\n      \u003cth\u003evibrationmean_3h\u003c/th\u003e\n      \u003cth\u003evoltsd_3h\u003c/th\u003e\n      \u003cth\u003erotatesd_3h\u003c/th\u003e\n      \u003cth\u003epressuresd_3h\u003c/th\u003e\n      \u003cth\u003evibrationsd_3h\u003c/th\u003e\n      \u003cth\u003evoltmean_24h\u003c/th\u003e\n      \u003cth\u003erotatemean_24h\u003c/th\u003e\n      \u003cth\u003epressuremean_24h\u003c/th\u003e\n      \u003cth\u003evibrationmean_24h\u003c/th\u003e\n      \u003cth\u003evoltsd_24h\u003c/th\u003e\n      \u003cth\u003erotatesd_24h\u003c/th\u003e\n      \u003cth\u003epressuresd_24h\u003c/th\u003e\n      \u003cth\u003evibrationsd_24h\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e7\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 06:00:00\u003c/td\u003e\n      \u003ctd\u003e180.133784\u003c/td\u003e\n      \u003ctd\u003e440.608320\u003c/td\u003e\n      \u003ctd\u003e94.137969\u003c/td\u003e\n      \u003ctd\u003e41.551544\u003c/td\u003e\n      \u003ctd\u003e21.322735\u003c/td\u003e\n      \u003ctd\u003e48.770512\u003c/td\u003e\n      \u003ctd\u003e2.135684\u003c/td\u003e\n      \u003ctd\u003e10.037208\u003c/td\u003e\n      \u003ctd\u003e169.733809\u003c/td\u003e\n      \u003ctd\u003e445.179865\u003c/td\u003e\n      \u003ctd\u003e96.797113\u003c/td\u003e\n      \u003ctd\u003e40.385160\u003c/td\u003e\n      \u003ctd\u003e15.726970\u003c/td\u003e\n      \u003ctd\u003e39.648116\u003c/td\u003e\n      \u003ctd\u003e11.904700\u003c/td\u003e\n      \u003ctd\u003e5.601191\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e8\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 09:00:00\u003c/td\u003e\n      \u003ctd\u003e176.364293\u003c/td\u003e\n      \u003ctd\u003e439.349655\u003c/td\u003e\n      \u003ctd\u003e101.553209\u003c/td\u003e\n      \u003ctd\u003e36.105580\u003c/td\u003e\n      \u003ctd\u003e18.952210\u003c/td\u003e\n      \u003ctd\u003e51.329636\u003c/td\u003e\n      \u003ctd\u003e13.789279\u003c/td\u003e\n      \u003ctd\u003e6.737739\u003c/td\u003e\n      \u003ctd\u003e170.614862\u003c/td\u003e\n      \u003ctd\u003e446.364859\u003c/td\u003e\n      \u003ctd\u003e96.849785\u003c/td\u003e\n      \u003ctd\u003e39.736826\u003c/td\u003e\n      \u003ctd\u003e15.635083\u003c/td\u003e\n      \u003ctd\u003e41.828592\u003c/td\u003e\n      \u003ctd\u003e11.326412\u003c/td\u003e\n      \u003ctd\u003e5.583521\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e9\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 12:00:00\u003c/td\u003e\n      \u003ctd\u003e160.384568\u003c/td\u003e\n      \u003ctd\u003e424.385316\u003c/td\u003e\n      \u003ctd\u003e99.598722\u003c/td\u003e\n      \u003ctd\u003e36.094637\u003c/td\u003e\n      \u003ctd\u003e13.047080\u003c/td\u003e\n      \u003ctd\u003e13.702496\u003c/td\u003e\n      \u003ctd\u003e9.988609\u003c/td\u003e\n      \u003ctd\u003e1.639962\u003c/td\u003e\n      \u003ctd\u003e169.893965\u003c/td\u003e\n      \u003ctd\u003e447.009407\u003c/td\u003e\n      \u003ctd\u003e97.715600\u003c/td\u003e\n      \u003ctd\u003e39.498374\u003c/td\u003e\n      \u003ctd\u003e13.995465\u003c/td\u003e\n      \u003ctd\u003e40.843882\u003c/td\u003e\n      \u003ctd\u003e11.036546\u003c/td\u003e\n      \u003ctd\u003e5.561553\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e10\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 15:00:00\u003c/td\u003e\n      \u003ctd\u003e170.472461\u003c/td\u003e\n      \u003ctd\u003e442.933997\u003c/td\u003e\n      \u003ctd\u003e102.380586\u003c/td\u003e\n      \u003ctd\u003e40.483002\u003c/td\u003e\n      \u003ctd\u003e16.642354\u003c/td\u003e\n      \u003ctd\u003e56.290447\u003c/td\u003e\n      \u003ctd\u003e3.305739\u003c/td\u003e\n      \u003ctd\u003e8.854145\u003c/td\u003e\n      \u003ctd\u003e171.243444\u003c/td\u003e\n      \u003ctd\u003e444.233563\u003c/td\u003e\n      \u003ctd\u003e96.666060\u003c/td\u003e\n      \u003ctd\u003e40.229370\u003c/td\u003e\n      \u003ctd\u003e13.100364\u003c/td\u003e\n      \u003ctd\u003e43.409841\u003c/td\u003e\n      \u003ctd\u003e10.972862\u003c/td\u003e\n      \u003ctd\u003e6.068674\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e11\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 18:00:00\u003c/td\u003e\n      \u003ctd\u003e163.263806\u003c/td\u003e\n      \u003ctd\u003e468.937558\u003c/td\u003e\n      \u003ctd\u003e102.726648\u003c/td\u003e\n      \u003ctd\u003e40.921802\u003c/td\u003e\n      \u003ctd\u003e17.424688\u003c/td\u003e\n      \u003ctd\u003e38.680380\u003c/td\u003e\n      \u003ctd\u003e9.105775\u003c/td\u003e\n      \u003ctd\u003e3.060781\u003c/td\u003e\n      \u003ctd\u003e170.792486\u003c/td\u003e\n      \u003ctd\u003e448.440437\u003c/td\u003e\n      \u003ctd\u003e95.766838\u003c/td\u003e\n      \u003ctd\u003e40.055214\u003c/td\u003e\n      \u003ctd\u003e13.808489\u003c/td\u003e\n      \u003ctd\u003e43.742304\u003c/td\u003e\n      \u003ctd\u003e10.988704\u003c/td\u003e\n      \u003ctd\u003e7.286129\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e12\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 21:00:00\u003c/td\u003e\n      \u003ctd\u003e163.278466\u003c/td\u003e\n      \u003ctd\u003e446.493166\u003c/td\u003e\n      \u003ctd\u003e104.387585\u003c/td\u003e\n      \u003ctd\u003e38.068116\u003c/td\u003e\n      \u003ctd\u003e21.580492\u003c/td\u003e\n      \u003ctd\u003e41.380958\u003c/td\u003e\n      \u003ctd\u003e20.725597\u003c/td\u003e\n      \u003ctd\u003e6.932127\u003c/td\u003e\n      \u003ctd\u003e170.556674\u003c/td\u003e\n      \u003ctd\u003e452.267095\u003c/td\u003e\n      \u003ctd\u003e98.065860\u003c/td\u003e\n      \u003ctd\u003e40.033247\u003c/td\u003e\n      \u003ctd\u003e14.187985\u003c/td\u003e\n      \u003ctd\u003e40.676672\u003c/td\u003e\n      \u003ctd\u003e11.942227\u003c/td\u003e\n      \u003ctd\u003e8.723238\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e13\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 00:00:00\u003c/td\u003e\n      \u003ctd\u003e172.191198\u003c/td\u003e\n      \u003ctd\u003e434.214692\u003c/td\u003e\n      \u003ctd\u003e93.747282\u003c/td\u003e\n      \u003ctd\u003e39.716482\u003c/td\u003e\n      \u003ctd\u003e16.369836\u003c/td\u003e\n      \u003ctd\u003e14.636041\u003c/td\u003e\n      \u003ctd\u003e18.817326\u003c/td\u003e\n      \u003ctd\u003e3.426997\u003c/td\u003e\n      \u003ctd\u003e168.460525\u003c/td\u003e\n      \u003ctd\u003e451.031783\u003c/td\u003e\n      \u003ctd\u003e99.273286\u003c/td\u003e\n      \u003ctd\u003e38.903462\u003c/td\u003e\n      \u003ctd\u003e13.707794\u003c/td\u003e\n      \u003ctd\u003e40.509184\u003c/td\u003e\n      \u003ctd\u003e10.141026\u003c/td\u003e\n      \u003ctd\u003e8.634082\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e14\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 03:00:00\u003c/td\u003e\n      \u003ctd\u003e175.210027\u003c/td\u003e\n      \u003ctd\u003e504.845430\u003c/td\u003e\n      \u003ctd\u003e108.512153\u003c/td\u003e\n      \u003ctd\u003e37.763933\u003c/td\u003e\n      \u003ctd\u003e5.991921\u003c/td\u003e\n      \u003ctd\u003e16.062702\u003c/td\u003e\n      \u003ctd\u003e6.382608\u003c/td\u003e\n      \u003ctd\u003e3.449468\u003c/td\u003e\n      \u003ctd\u003e169.772951\u003c/td\u003e\n      \u003ctd\u003e447.502464\u003c/td\u003e\n      \u003ctd\u003e99.005946\u003c/td\u003e\n      \u003ctd\u003e39.389725\u003c/td\u003e\n      \u003ctd\u003e11.818603\u003c/td\u003e\n      \u003ctd\u003e44.468516\u003c/td\u003e\n      \u003ctd\u003e9.444955\u003c/td\u003e\n      \u003ctd\u003e8.332673\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e15\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 06:00:00\u003c/td\u003e\n      \u003ctd\u003e181.690108\u003c/td\u003e\n      \u003ctd\u003e472.783187\u003c/td\u003e\n      \u003ctd\u003e93.395164\u003c/td\u003e\n      \u003ctd\u003e38.621099\u003c/td\u003e\n      \u003ctd\u003e11.514450\u003c/td\u003e\n      \u003ctd\u003e47.880443\u003c/td\u003e\n      \u003ctd\u003e2.177029\u003c/td\u003e\n      \u003ctd\u003e7.670520\u003c/td\u003e\n      \u003ctd\u003e170.900562\u003c/td\u003e\n      \u003ctd\u003e453.864597\u003c/td\u003e\n      \u003ctd\u003e100.877342\u003c/td\u003e\n      \u003ctd\u003e38.696225\u003c/td\u003e\n      \u003ctd\u003e12.069391\u003c/td\u003e\n      \u003ctd\u003e46.669661\u003c/td\u003e\n      \u003ctd\u003e8.609526\u003c/td\u003e\n      \u003ctd\u003e8.089348\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e16\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 09:00:00\u003c/td\u003e\n      \u003ctd\u003e172.382935\u003c/td\u003e\n      \u003ctd\u003e505.141261\u003c/td\u003e\n      \u003ctd\u003e98.524373\u003c/td\u003e\n      \u003ctd\u003e49.965572\u003c/td\u003e\n      \u003ctd\u003e7.065150\u003c/td\u003e\n      \u003ctd\u003e56.849540\u003c/td\u003e\n      \u003ctd\u003e5.230039\u003c/td\u003e\n      \u003ctd\u003e2.687565\u003c/td\u003e\n      \u003ctd\u003e169.533156\u003c/td\u003e\n      \u003ctd\u003e454.785072\u003c/td\u003e\n      \u003ctd\u003e100.050567\u003c/td\u003e\n      \u003ctd\u003e39.449734\u003c/td\u003e\n      \u003ctd\u003e12.755234\u003c/td\u003e\n      \u003ctd\u003e44.016114\u003c/td\u003e\n      \u003ctd\u003e9.893704\u003c/td\u003e\n      \u003ctd\u003e7.013132\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e17\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 12:00:00\u003c/td\u003e\n      \u003ctd\u003e174.303858\u003c/td\u003e\n      \u003ctd\u003e436.182686\u003c/td\u003e\n      \u003ctd\u003e94.092681\u003c/td\u003e\n      \u003ctd\u003e50.999589\u003c/td\u003e\n      \u003ctd\u003e19.017196\u003c/td\u003e\n      \u003ctd\u003e26.420163\u003c/td\u003e\n      \u003ctd\u003e7.661944\u003c/td\u003e\n      \u003ctd\u003e3.516734\u003c/td\u003e\n      \u003ctd\u003e170.866013\u003c/td\u003e\n      \u003ctd\u003e463.871291\u003c/td\u003e\n      \u003ctd\u003e99.360632\u003c/td\u003e\n      \u003ctd\u003e40.766639\u003c/td\u003e\n      \u003ctd\u003e12.848646\u003c/td\u003e\n      \u003ctd\u003e45.090576\u003c/td\u003e\n      \u003ctd\u003e9.846662\u003c/td\u003e\n      \u003ctd\u003e5.888262\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e18\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 15:00:00\u003c/td\u003e\n      \u003ctd\u003e176.246348\u003c/td\u003e\n      \u003ctd\u003e451.646684\u003c/td\u003e\n      \u003ctd\u003e98.102389\u003c/td\u003e\n      \u003ctd\u003e59.198241\u003c/td\u003e\n      \u003ctd\u003e12.572504\u003c/td\u003e\n      \u003ctd\u003e31.574383\u003c/td\u003e\n      \u003ctd\u003e15.559351\u003c/td\u003e\n      \u003ctd\u003e6.562087\u003c/td\u003e\n      \u003ctd\u003e171.041651\u003c/td\u003e\n      \u003ctd\u003e463.701291\u003c/td\u003e\n      \u003ctd\u003e98.965877\u003c/td\u003e\n      \u003ctd\u003e42.396850\u003c/td\u003e\n      \u003ctd\u003e14.968351\u003c/td\u003e\n      \u003ctd\u003e37.088898\u003c/td\u003e\n      \u003ctd\u003e10.133452\u003c/td\u003e\n      \u003ctd\u003e5.702356\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e19\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 18:00:00\u003c/td\u003e\n      \u003ctd\u003e158.433533\u003c/td\u003e\n      \u003ctd\u003e453.900213\u003c/td\u003e\n      \u003ctd\u003e98.878129\u003c/td\u003e\n      \u003ctd\u003e46.851925\u003c/td\u003e\n      \u003ctd\u003e5.136952\u003c/td\u003e\n      \u003ctd\u003e21.216569\u003c/td\u003e\n      \u003ctd\u003e11.400650\u003c/td\u003e\n      \u003ctd\u003e2.688559\u003c/td\u003e\n      \u003ctd\u003e171.244533\u003c/td\u003e\n      \u003ctd\u003e464.320613\u003c/td\u003e\n      \u003ctd\u003e98.853189\u003c/td\u003e\n      \u003ctd\u003e44.608814\u003c/td\u003e\n      \u003ctd\u003e17.058217\u003c/td\u003e\n      \u003ctd\u003e36.617908\u003c/td\u003e\n      \u003ctd\u003e9.867174\u003c/td\u003e\n      \u003ctd\u003e5.743753\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e20\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-03 21:00:00\u003c/td\u003e\n      \u003ctd\u003e162.387954\u003c/td\u003e\n      \u003ctd\u003e454.140377\u003c/td\u003e\n      \u003ctd\u003e92.651129\u003c/td\u003e\n      \u003ctd\u003e54.261635\u003c/td\u003e\n      \u003ctd\u003e4.563331\u003c/td\u003e\n      \u003ctd\u003e57.747656\u003c/td\u003e\n      \u003ctd\u003e4.754203\u003c/td\u003e\n      \u003ctd\u003e5.118076\u003c/td\u003e\n      \u003ctd\u003e171.385039\u003c/td\u003e\n      \u003ctd\u003e459.937314\u003c/td\u003e\n      \u003ctd\u003e97.292157\u003c/td\u003e\n      \u003ctd\u003e45.284751\u003c/td\u003e\n      \u003ctd\u003e18.405763\u003c/td\u003e\n      \u003ctd\u003e35.819938\u003c/td\u003e\n      \u003ctd\u003e9.743769\u003c/td\u003e\n      \u003ctd\u003e5.246435\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e21\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-04 00:00:00\u003c/td\u003e\n      \u003ctd\u003e174.243192\u003c/td\u003e\n      \u003ctd\u003e394.998095\u003c/td\u003e\n      \u003ctd\u003e99.829845\u003c/td\u003e\n      \u003ctd\u003e46.930738\u003c/td\u003e\n      \u003ctd\u003e6.268730\u003c/td\u003e\n      \u003ctd\u003e29.167663\u003c/td\u003e\n      \u003ctd\u003e10.564287\u003c/td\u003e\n      \u003ctd\u003e6.822855\u003c/td\u003e\n      \u003ctd\u003e171.880633\u003c/td\u003e\n      \u003ctd\u003e461.437128\u003c/td\u003e\n      \u003ctd\u003e96.786742\u003c/td\u003e\n      \u003ctd\u003e47.311018\u003c/td\u003e\n      \u003ctd\u003e18.249831\u003c/td\u003e\n      \u003ctd\u003e42.055638\u003c/td\u003e\n      \u003ctd\u003e10.961128\u003c/td\u003e\n      \u003ctd\u003e5.093464\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e22\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-04 03:00:00\u003c/td\u003e\n      \u003ctd\u003e176.443361\u003c/td\u003e\n      \u003ctd\u003e459.528820\u003c/td\u003e\n      \u003ctd\u003e111.855296\u003c/td\u003e\n      \u003ctd\u003e55.296056\u003c/td\u003e\n      \u003ctd\u003e16.330285\u003c/td\u003e\n      \u003ctd\u003e20.602657\u003c/td\u003e\n      \u003ctd\u003e7.064583\u003c/td\u003e\n      \u003ctd\u003e4.651468\u003c/td\u003e\n      \u003ctd\u003e172.513202\u003c/td\u003e\n      \u003ctd\u003e456.429165\u003c/td\u003e\n      \u003ctd\u003e97.742700\u003c/td\u003e\n      \u003ctd\u003e48.416442\u003c/td\u003e\n      \u003ctd\u003e19.141287\u003c/td\u003e\n      \u003ctd\u003e37.018824\u003c/td\u003e\n      \u003ctd\u003e10.642956\u003c/td\u003e\n      \u003ctd\u003e4.618287\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e23\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-04 06:00:00\u003c/td\u003e\n      \u003ctd\u003e186.092896\u003c/td\u003e\n      \u003ctd\u003e451.641253\u003c/td\u003e\n      \u003ctd\u003e107.989359\u003c/td\u003e\n      \u003ctd\u003e55.308074\u003c/td\u003e\n      \u003ctd\u003e13.489090\u003c/td\u003e\n      \u003ctd\u003e62.185045\u003c/td\u003e\n      \u003ctd\u003e5.118176\u003c/td\u003e\n      \u003ctd\u003e4.904365\u003c/td\u003e\n      \u003ctd\u003e172.686245\u003c/td\u003e\n      \u003ctd\u003e453.387589\u003c/td\u003e\n      \u003ctd\u003e99.304019\u003c/td\u003e\n      \u003ctd\u003e51.158654\u003c/td\u003e\n      \u003ctd\u003e18.887033\u003c/td\u003e\n      \u003ctd\u003e36.997459\u003c/td\u003e\n      \u003ctd\u003e11.042775\u003c/td\u003e\n      \u003ctd\u003e5.195423\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e24\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-04 09:00:00\u003c/td\u003e\n      \u003ctd\u003e166.281848\u003c/td\u003e\n      \u003ctd\u003e453.787824\u003c/td\u003e\n      \u003ctd\u003e106.187582\u003c/td\u003e\n      \u003ctd\u003e51.990080\u003c/td\u003e\n      \u003ctd\u003e24.276228\u003c/td\u003e\n      \u003ctd\u003e23.621315\u003c/td\u003e\n      \u003ctd\u003e11.176731\u003c/td\u003e\n      \u003ctd\u003e3.394073\u003c/td\u003e\n      \u003ctd\u003e172.042428\u003c/td\u003e\n      \u003ctd\u003e450.418764\u003c/td\u003e\n      \u003ctd\u003e100.284484\u003c/td\u003e\n      \u003ctd\u003e52.153213\u003c/td\u003e\n      \u003ctd\u003e20.837993\u003c/td\u003e\n      \u003ctd\u003e34.051825\u003c/td\u003e\n      \u003ctd\u003e9.654971\u003c/td\u003e\n      \u003ctd\u003e5.066388\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e25\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-04 12:00:00\u003c/td\u003e\n      \u003ctd\u003e175.412103\u003c/td\u003e\n      \u003ctd\u003e445.450581\u003c/td\u003e\n      \u003ctd\u003e100.887363\u003c/td\u003e\n      \u003ctd\u003e54.251534\u003c/td\u003e\n      \u003ctd\u003e34.918687\u003c/td\u003e\n      \u003ctd\u003e11.001625\u003c/td\u003e\n      \u003ctd\u003e10.580336\u003c/td\u003e\n      \u003ctd\u003e2.921501\u003c/td\u003e\n      \u003ctd\u003e171.219623\u003c/td\u003e\n      \u003ctd\u003e443.802134\u003c/td\u003e\n      \u003ctd\u003e102.358897\u003c/td\u003e\n      \u003ctd\u003e52.854420\u003c/td\u003e\n      \u003ctd\u003e21.298322\u003c/td\u003e\n      \u003ctd\u003e36.054002\u003c/td\u003e\n      \u003ctd\u003e9.885781\u003c/td\u003e\n      \u003ctd\u003e5.246894\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e26\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-04 15:00:00\u003c/td\u003e\n      \u003ctd\u003e157.347716\u003c/td\u003e\n      \u003ctd\u003e451.882075\u003c/td\u003e\n      \u003ctd\u003e101.289380\u003c/td\u003e\n      \u003ctd\u003e48.602686\u003c/td\u003e\n      \u003ctd\u003e24.617739\u003c/td\u003e\n      \u003ctd\u003e28.950883\u003c/td\u003e\n      \u003ctd\u003e9.966729\u003c/td\u003e\n      \u003ctd\u003e2.356486\u003c/td\u003e\n      \u003ctd\u003e172.013443\u003c/td\u003e\n      \u003ctd\u003e444.882018\u003c/td\u003e\n      \u003ctd\u003e102.578580\u003c/td\u003e\n      \u003ctd\u003e52.789794\u003c/td\u003e\n      \u003ctd\u003e21.200183\u003c/td\u003e\n      \u003ctd\u003e38.544116\u003c/td\u003e\n      \u003ctd\u003e10.429692\u003c/td\u003e\n      \u003ctd\u003e7.192434\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e27\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-04 18:00:00\u003c/td\u003e\n      \u003ctd\u003e176.450550\u003c/td\u003e\n      \u003ctd\u003e446.033068\u003c/td\u003e\n      \u003ctd\u003e84.521555\u003c/td\u003e\n      \u003ctd\u003e47.638836\u003c/td\u003e\n      \u003ctd\u003e8.071400\u003c/td\u003e\n      \u003ctd\u003e76.511343\u003c/td\u003e\n      \u003ctd\u003e2.636879\u003c/td\u003e\n      \u003ctd\u003e4.108621\u003c/td\u003e\n      \u003ctd\u003e170.176321\u003c/td\u003e\n      \u003ctd\u003e445.069594\u003c/td\u003e\n      \u003ctd\u003e102.359939\u003c/td\u003e\n      \u003ctd\u003e51.518719\u003c/td\u003e\n      \u003ctd\u003e18.814679\u003c/td\u003e\n      \u003ctd\u003e40.547527\u003c/td\u003e\n      \u003ctd\u003e11.133170\u003c/td\u003e\n      \u003ctd\u003e7.556313\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e28\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-04 21:00:00\u003c/td\u003e\n      \u003ctd\u003e190.325814\u003c/td\u003e\n      \u003ctd\u003e422.692565\u003c/td\u003e\n      \u003ctd\u003e107.393234\u003c/td\u003e\n      \u003ctd\u003e49.552856\u003c/td\u003e\n      \u003ctd\u003e8.390777\u003c/td\u003e\n      \u003ctd\u003e7.176553\u003c/td\u003e\n      \u003ctd\u003e4.262645\u003c/td\u003e\n      \u003ctd\u003e7.598552\u003c/td\u003e\n      \u003ctd\u003e172.932248\u003c/td\u003e\n      \u003ctd\u003e444.618018\u003c/td\u003e\n      \u003ctd\u003e101.425508\u003c/td\u003e\n      \u003ctd\u003e52.135905\u003c/td\u003e\n      \u003ctd\u003e16.762469\u003c/td\u003e\n      \u003ctd\u003e49.373445\u003c/td\u003e\n      \u003ctd\u003e10.443534\u003c/td\u003e\n      \u003ctd\u003e8.545739\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e29\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-05 00:00:00\u003c/td\u003e\n      \u003ctd\u003e169.985134\u003c/td\u003e\n      \u003ctd\u003e458.929418\u003c/td\u003e\n      \u003ctd\u003e91.494362\u003c/td\u003e\n      \u003ctd\u003e54.882021\u003c/td\u003e\n      \u003ctd\u003e9.451483\u003c/td\u003e\n      \u003ctd\u003e12.052752\u003c/td\u003e\n      \u003ctd\u003e3.685906\u003c/td\u003e\n      \u003ctd\u003e6.621183\u003c/td\u003e\n      \u003ctd\u003e175.121131\u003c/td\u003e\n      \u003ctd\u003e443.916392\u003c/td\u003e\n      \u003ctd\u003e102.130179\u003c/td\u003e\n      \u003ctd\u003e51.653294\u003c/td\u003e\n      \u003ctd\u003e17.435946\u003c/td\u003e\n      \u003ctd\u003e43.819375\u003c/td\u003e\n      \u003ctd\u003e10.830449\u003c/td\u003e\n      \u003ctd\u003e8.809530\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e30\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-05 03:00:00\u003c/td\u003e\n      \u003ctd\u003e149.082619\u003c/td\u003e\n      \u003ctd\u003e412.180336\u003c/td\u003e\n      \u003ctd\u003e93.509785\u003c/td\u003e\n      \u003ctd\u003e54.386079\u003c/td\u003e\n      \u003ctd\u003e19.075952\u003c/td\u003e\n      \u003ctd\u003e30.715081\u003c/td\u003e\n      \u003ctd\u003e3.090266\u003c/td\u003e\n      \u003ctd\u003e6.530610\u003c/td\u003e\n      \u003ctd\u003e173.407255\u003c/td\u003e\n      \u003ctd\u003e446.265950\u003c/td\u003e\n      \u003ctd\u003e100.874614\u003c/td\u003e\n      \u003ctd\u003e52.529450\u003c/td\u003e\n      \u003ctd\u003e16.661364\u003c/td\u003e\n      \u003ctd\u003e47.266846\u003c/td\u003e\n      \u003ctd\u003e11.225440\u003c/td\u003e\n      \u003ctd\u003e9.068824\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e31\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-05 06:00:00\u003c/td\u003e\n      \u003ctd\u003e185.782709\u003c/td\u003e\n      \u003ctd\u003e439.531288\u003c/td\u003e\n      \u003ctd\u003e99.413660\u003c/td\u003e\n      \u003ctd\u003e51.558082\u003c/td\u003e\n      \u003ctd\u003e14.495664\u003c/td\u003e\n      \u003ctd\u003e45.663743\u003c/td\u003e\n      \u003ctd\u003e4.289212\u003c/td\u003e\n      \u003ctd\u003e7.330397\u003c/td\u003e\n      \u003ctd\u003e170.757841\u003c/td\u003e\n      \u003ctd\u003e440.958228\u003c/td\u003e\n      \u003ctd\u003e98.716746\u003c/td\u003e\n      \u003ctd\u003e51.746749\u003c/td\u003e\n      \u003ctd\u003e17.863934\u003c/td\u003e\n      \u003ctd\u003e44.895080\u003c/td\u003e\n      \u003ctd\u003e10.675981\u003c/td\u003e\n      \u003ctd\u003e7.475304\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e32\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-05 09:00:00\u003c/td\u003e\n      \u003ctd\u003e169.084809\u003c/td\u003e\n      \u003ctd\u003e463.433785\u003c/td\u003e\n      \u003ctd\u003e107.678774\u003c/td\u003e\n      \u003ctd\u003e41.710336\u003c/td\u003e\n      \u003ctd\u003e12.245544\u003c/td\u003e\n      \u003ctd\u003e61.759107\u003c/td\u003e\n      \u003ctd\u003e4.400233\u003c/td\u003e\n      \u003ctd\u003e9.750017\u003c/td\u003e\n      \u003ctd\u003e171.929104\u003c/td\u003e\n      \u003ctd\u003e443.448775\u003c/td\u003e\n      \u003ctd\u003e98.675590\u003c/td\u003e\n      \u003ctd\u003e51.780445\u003c/td\u003e\n      \u003ctd\u003e15.139300\u003c/td\u003e\n      \u003ctd\u003e45.766081\u003c/td\u003e\n      \u003ctd\u003e10.959268\u003c/td\u003e\n      \u003ctd\u003e6.855778\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e33\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-05 12:00:00\u003c/td\u003e\n      \u003ctd\u003e165.518790\u003c/td\u003e\n      \u003ctd\u003e449.743255\u003c/td\u003e\n      \u003ctd\u003e110.377851\u003c/td\u003e\n      \u003ctd\u003e38.952082\u003c/td\u003e\n      \u003ctd\u003e23.170638\u003c/td\u003e\n      \u003ctd\u003e45.762142\u003c/td\u003e\n      \u003ctd\u003e14.009473\u003c/td\u003e\n      \u003ctd\u003e0.797364\u003c/td\u003e\n      \u003ctd\u003e170.908522\u003c/td\u003e\n      \u003ctd\u003e443.069042\u003c/td\u003e\n      \u003ctd\u003e98.830333\u003c/td\u003e\n      \u003ctd\u003e49.679550\u003c/td\u003e\n      \u003ctd\u003e13.985517\u003c/td\u003e\n      \u003ctd\u003e42.542001\u003c/td\u003e\n      \u003ctd\u003e11.050133\u003c/td\u003e\n      \u003ctd\u003e4.842842\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e34\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-05 15:00:00\u003c/td\u003e\n      \u003ctd\u003e175.989642\u003c/td\u003e\n      \u003ctd\u003e419.863490\u003c/td\u003e\n      \u003ctd\u003e112.571146\u003c/td\u003e\n      \u003ctd\u003e41.514254\u003c/td\u003e\n      \u003ctd\u003e4.028327\u003c/td\u003e\n      \u003ctd\u003e20.148499\u003c/td\u003e\n      \u003ctd\u003e5.862629\u003c/td\u003e\n      \u003ctd\u003e9.702498\u003c/td\u003e\n      \u003ctd\u003e170.416326\u003c/td\u003e\n      \u003ctd\u003e443.555122\u003c/td\u003e\n      \u003ctd\u003e100.221328\u003c/td\u003e\n      \u003ctd\u003e48.481038\u003c/td\u003e\n      \u003ctd\u003e13.344630\u003c/td\u003e\n      \u003ctd\u003e39.327146\u003c/td\u003e\n      \u003ctd\u003e10.268539\u003c/td\u003e\n      \u003ctd\u003e4.884344\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e35\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-05 18:00:00\u003c/td\u003e\n      \u003ctd\u003e188.576444\u003c/td\u003e\n      \u003ctd\u003e487.336742\u003c/td\u003e\n      \u003ctd\u003e88.967297\u003c/td\u003e\n      \u003ctd\u003e36.571052\u003c/td\u003e\n      \u003ctd\u003e8.278605\u003c/td\u003e\n      \u003ctd\u003e76.534023\u003c/td\u003e\n      \u003ctd\u003e11.892088\u003c/td\u003e\n      \u003ctd\u003e1.945849\u003c/td\u003e\n      \u003ctd\u003e173.315167\u003c/td\u003e\n      \u003ctd\u003e444.049581\u003c/td\u003e\n      \u003ctd\u003e101.633306\u003c/td\u003e\n      \u003ctd\u003e47.279992\u003c/td\u003e\n      \u003ctd\u003e15.793146\u003c/td\u003e\n      \u003ctd\u003e42.984028\u003c/td\u003e\n      \u003ctd\u003e10.006300\u003c/td\u003e\n      \u003ctd\u003e4.637101\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e36\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-05 21:00:00\u003c/td\u003e\n      \u003ctd\u003e166.681364\u003c/td\u003e\n      \u003ctd\u003e481.685320\u003c/td\u003e\n      \u003ctd\u003e104.154110\u003c/td\u003e\n      \u003ctd\u003e38.662638\u003c/td\u003e\n      \u003ctd\u003e11.957697\u003c/td\u003e\n      \u003ctd\u003e25.052743\u003c/td\u003e\n      \u003ctd\u003e11.999161\u003c/td\u003e\n      \u003ctd\u003e4.804263\u003c/td\u003e\n      \u003ctd\u003e173.743459\u003c/td\u003e\n      \u003ctd\u003e446.505202\u003c/td\u003e\n      \u003ctd\u003e100.540356\u003c/td\u003e\n      \u003ctd\u003e45.527290\u003c/td\u003e\n      \u003ctd\u003e16.132288\u003c/td\u003e\n      \u003ctd\u003e40.754154\u003c/td\u003e\n      \u003ctd\u003e9.744855\u003c/td\u003e\n      \u003ctd\u003e4.591048\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e...\u003c/th\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291370\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-02 06:00:00\u003c/td\u003e\n      \u003ctd\u003e165.259415\u003c/td\u003e\n      \u003ctd\u003e432.364050\u003c/td\u003e\n      \u003ctd\u003e96.793097\u003c/td\u003e\n      \u003ctd\u003e38.697882\u003c/td\u003e\n      \u003ctd\u003e16.715588\u003c/td\u003e\n      \u003ctd\u003e9.197585\u003c/td\u003e\n      \u003ctd\u003e11.016730\u003c/td\u003e\n      \u003ctd\u003e9.167743\u003c/td\u003e\n      \u003ctd\u003e169.115085\u003c/td\u003e\n      \u003ctd\u003e459.202414\u003c/td\u003e\n      \u003ctd\u003e99.099044\u003c/td\u003e\n      \u003ctd\u003e39.342719\u003c/td\u003e\n      \u003ctd\u003e12.889019\u003c/td\u003e\n      \u003ctd\u003e60.409151\u003c/td\u003e\n      \u003ctd\u003e11.549081\u003c/td\u003e\n      \u003ctd\u003e5.671215\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291371\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-02 09:00:00\u003c/td\u003e\n      \u003ctd\u003e185.907346\u003c/td\u003e\n      \u003ctd\u003e465.062411\u003c/td\u003e\n      \u003ctd\u003e94.161434\u003c/td\u003e\n      \u003ctd\u003e36.156060\u003c/td\u003e\n      \u003ctd\u003e22.822289\u003c/td\u003e\n      \u003ctd\u003e64.351154\u003c/td\u003e\n      \u003ctd\u003e6.469484\u003c/td\u003e\n      \u003ctd\u003e1.656610\u003c/td\u003e\n      \u003ctd\u003e168.838507\u003c/td\u003e\n      \u003ctd\u003e455.101759\u003c/td\u003e\n      \u003ctd\u003e98.960206\u003c/td\u003e\n      \u003ctd\u003e38.277576\u003c/td\u003e\n      \u003ctd\u003e13.917591\u003c/td\u003e\n      \u003ctd\u003e56.810848\u003c/td\u003e\n      \u003ctd\u003e11.118412\u003c/td\u003e\n      \u003ctd\u003e6.061118\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291372\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-02 12:00:00\u003c/td\u003e\n      \u003ctd\u003e167.546991\u003c/td\u003e\n      \u003ctd\u003e448.203119\u003c/td\u003e\n      \u003ctd\u003e99.383591\u003c/td\u003e\n      \u003ctd\u003e39.659572\u003c/td\u003e\n      \u003ctd\u003e2.573507\u003c/td\u003e\n      \u003ctd\u003e84.299208\u003c/td\u003e\n      \u003ctd\u003e2.490792\u003c/td\u003e\n      \u003ctd\u003e2.252574\u003c/td\u003e\n      \u003ctd\u003e169.223690\u003c/td\u003e\n      \u003ctd\u003e463.630715\u003c/td\u003e\n      \u003ctd\u003e99.296474\u003c/td\u003e\n      \u003ctd\u003e38.406915\u003c/td\u003e\n      \u003ctd\u003e14.611939\u003c/td\u003e\n      \u003ctd\u003e56.534099\u003c/td\u003e\n      \u003ctd\u003e8.553177\u003c/td\u003e\n      \u003ctd\u003e5.893650\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291373\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-02 15:00:00\u003c/td\u003e\n      \u003ctd\u003e175.468904\u003c/td\u003e\n      \u003ctd\u003e441.861941\u003c/td\u003e\n      \u003ctd\u003e105.814802\u003c/td\u003e\n      \u003ctd\u003e38.788653\u003c/td\u003e\n      \u003ctd\u003e9.104554\u003c/td\u003e\n      \u003ctd\u003e48.615069\u003c/td\u003e\n      \u003ctd\u003e6.004070\u003c/td\u003e\n      \u003ctd\u003e3.244295\u003c/td\u003e\n      \u003ctd\u003e172.163049\u003c/td\u003e\n      \u003ctd\u003e458.787617\u003c/td\u003e\n      \u003ctd\u003e100.063674\u003c/td\u003e\n      \u003ctd\u003e38.458947\u003c/td\u003e\n      \u003ctd\u003e15.232866\u003c/td\u003e\n      \u003ctd\u003e49.321412\u003c/td\u003e\n      \u003ctd\u003e8.345687\u003c/td\u003e\n      \u003ctd\u003e5.292801\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291374\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-02 18:00:00\u003c/td\u003e\n      \u003ctd\u003e157.401371\u003c/td\u003e\n      \u003ctd\u003e459.332121\u003c/td\u003e\n      \u003ctd\u003e93.247465\u003c/td\u003e\n      \u003ctd\u003e42.236723\u003c/td\u003e\n      \u003ctd\u003e14.711827\u003c/td\u003e\n      \u003ctd\u003e45.268580\u003c/td\u003e\n      \u003ctd\u003e5.590642\u003c/td\u003e\n      \u003ctd\u003e2.204472\u003c/td\u003e\n      \u003ctd\u003e173.119397\u003c/td\u003e\n      \u003ctd\u003e456.196849\u003c/td\u003e\n      \u003ctd\u003e100.114215\u003c/td\u003e\n      \u003ctd\u003e39.063775\u003c/td\u003e\n      \u003ctd\u003e15.920072\u003c/td\u003e\n      \u003ctd\u003e48.742610\u003c/td\u003e\n      \u003ctd\u003e7.909495\u003c/td\u003e\n      \u003ctd\u003e5.249418\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291375\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-02 21:00:00\u003c/td\u003e\n      \u003ctd\u003e168.651510\u003c/td\u003e\n      \u003ctd\u003e430.056138\u003c/td\u003e\n      \u003ctd\u003e104.487324\u003c/td\u003e\n      \u003ctd\u003e35.735005\u003c/td\u003e\n      \u003ctd\u003e16.328969\u003c/td\u003e\n      \u003ctd\u003e45.108180\u003c/td\u003e\n      \u003ctd\u003e9.103806\u003c/td\u003e\n      \u003ctd\u003e6.093867\u003c/td\u003e\n      \u003ctd\u003e168.410263\u003c/td\u003e\n      \u003ctd\u003e448.519301\u003c/td\u003e\n      \u003ctd\u003e100.049480\u003c/td\u003e\n      \u003ctd\u003e39.083797\u003c/td\u003e\n      \u003ctd\u003e14.635941\u003c/td\u003e\n      \u003ctd\u003e50.313046\u003c/td\u003e\n      \u003ctd\u003e7.582133\u003c/td\u003e\n      \u003ctd\u003e5.108806\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291376\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-03 00:00:00\u003c/td\u003e\n      \u003ctd\u003e168.623762\u003c/td\u003e\n      \u003ctd\u003e497.504580\u003c/td\u003e\n      \u003ctd\u003e100.682235\u003c/td\u003e\n      \u003ctd\u003e40.610939\u003c/td\u003e\n      \u003ctd\u003e12.914771\u003c/td\u003e\n      \u003ctd\u003e25.775781\u003c/td\u003e\n      \u003ctd\u003e11.444951\u003c/td\u003e\n      \u003ctd\u003e3.359673\u003c/td\u003e\n      \u003ctd\u003e168.849711\u003c/td\u003e\n      \u003ctd\u003e450.330382\u003c/td\u003e\n      \u003ctd\u003e100.243957\u003c/td\u003e\n      \u003ctd\u003e38.469840\u003c/td\u003e\n      \u003ctd\u003e14.915283\u003c/td\u003e\n      \u003ctd\u003e50.148100\u003c/td\u003e\n      \u003ctd\u003e7.928488\u003c/td\u003e\n      \u003ctd\u003e5.518228\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291377\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-03 03:00:00\u003c/td\u003e\n      \u003ctd\u003e168.537058\u003c/td\u003e\n      \u003ctd\u003e441.837105\u003c/td\u003e\n      \u003ctd\u003e87.893111\u003c/td\u003e\n      \u003ctd\u003e40.076219\u003c/td\u003e\n      \u003ctd\u003e23.866338\u003c/td\u003e\n      \u003ctd\u003e36.817201\u003c/td\u003e\n      \u003ctd\u003e16.820180\u003c/td\u003e\n      \u003ctd\u003e0.482728\u003c/td\u003e\n      \u003ctd\u003e171.513651\u003c/td\u003e\n      \u003ctd\u003e452.462106\u003c/td\u003e\n      \u003ctd\u003e98.514174\u003c/td\u003e\n      \u003ctd\u003e38.626944\u003c/td\u003e\n      \u003ctd\u003e14.750503\u003c/td\u003e\n      \u003ctd\u003e44.620373\u003c/td\u003e\n      \u003ctd\u003e8.348839\u003c/td\u003e\n      \u003ctd\u003e5.182752\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291378\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-03 06:00:00\u003c/td\u003e\n      \u003ctd\u003e161.436752\u003c/td\u003e\n      \u003ctd\u003e401.579802\u003c/td\u003e\n      \u003ctd\u003e90.792431\u003c/td\u003e\n      \u003ctd\u003e35.624101\u003c/td\u003e\n      \u003ctd\u003e14.429283\u003c/td\u003e\n      \u003ctd\u003e85.801834\u003c/td\u003e\n      \u003ctd\u003e16.225371\u003c/td\u003e\n      \u003ctd\u003e1.396074\u003c/td\u003e\n      \u003ctd\u003e169.625319\u003c/td\u003e\n      \u003ctd\u003e451.508453\u003c/td\u003e\n      \u003ctd\u003e97.368816\u003c/td\u003e\n      \u003ctd\u003e38.762103\u003c/td\u003e\n      \u003ctd\u003e16.055332\u003c/td\u003e\n      \u003ctd\u003e49.218444\u003c/td\u003e\n      \u003ctd\u003e9.546008\u003c/td\u003e\n      \u003ctd\u003e5.020598\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291379\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-03 09:00:00\u003c/td\u003e\n      \u003ctd\u003e188.559785\u003c/td\u003e\n      \u003ctd\u003e491.929571\u003c/td\u003e\n      \u003ctd\u003e102.821662\u003c/td\u003e\n      \u003ctd\u003e40.034460\u003c/td\u003e\n      \u003ctd\u003e12.668164\u003c/td\u003e\n      \u003ctd\u003e41.768856\u003c/td\u003e\n      \u003ctd\u003e9.448383\u003c/td\u003e\n      \u003ctd\u003e8.454640\u003c/td\u003e\n      \u003ctd\u003e167.950194\u003c/td\u003e\n      \u003ctd\u003e453.659486\u003c/td\u003e\n      \u003ctd\u003e97.292065\u003c/td\u003e\n      \u003ctd\u003e38.635159\u003c/td\u003e\n      \u003ctd\u003e15.942467\u003c/td\u003e\n      \u003ctd\u003e59.763569\u003c/td\u003e\n      \u003ctd\u003e9.431896\u003c/td\u003e\n      \u003ctd\u003e4.476863\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291380\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-03 12:00:00\u003c/td\u003e\n      \u003ctd\u003e164.149847\u003c/td\u003e\n      \u003ctd\u003e466.463280\u003c/td\u003e\n      \u003ctd\u003e100.447025\u003c/td\u003e\n      \u003ctd\u003e40.694147\u003c/td\u003e\n      \u003ctd\u003e16.460088\u003c/td\u003e\n      \u003ctd\u003e31.589198\u003c/td\u003e\n      \u003ctd\u003e10.188202\u003c/td\u003e\n      \u003ctd\u003e5.086589\u003c/td\u003e\n      \u003ctd\u003e168.530246\u003c/td\u003e\n      \u003ctd\u003e448.103742\u003c/td\u003e\n      \u003ctd\u003e97.730594\u003c/td\u003e\n      \u003ctd\u003e39.228047\u003c/td\u003e\n      \u003ctd\u003e16.122100\u003c/td\u003e\n      \u003ctd\u003e57.394487\u003c/td\u003e\n      \u003ctd\u003e9.171658\u003c/td\u003e\n      \u003ctd\u003e4.866485\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291381\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-03 15:00:00\u003c/td\u003e\n      \u003ctd\u003e184.727094\u003c/td\u003e\n      \u003ctd\u003e487.140570\u003c/td\u003e\n      \u003ctd\u003e100.860907\u003c/td\u003e\n      \u003ctd\u003e36.430834\u003c/td\u003e\n      \u003ctd\u003e12.401664\u003c/td\u003e\n      \u003ctd\u003e57.508894\u003c/td\u003e\n      \u003ctd\u003e18.394116\u003c/td\u003e\n      \u003ctd\u003e7.153156\u003c/td\u003e\n      \u003ctd\u003e169.765458\u003c/td\u003e\n      \u003ctd\u003e458.759394\u003c/td\u003e\n      \u003ctd\u003e98.775532\u003c/td\u003e\n      \u003ctd\u003e38.935773\u003c/td\u003e\n      \u003ctd\u003e16.994700\u003c/td\u003e\n      \u003ctd\u003e55.665652\u003c/td\u003e\n      \u003ctd\u003e9.630112\u003c/td\u003e\n      \u003ctd\u003e4.896106\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291382\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-03 18:00:00\u003c/td\u003e\n      \u003ctd\u003e171.585447\u003c/td\u003e\n      \u003ctd\u003e479.021432\u003c/td\u003e\n      \u003ctd\u003e101.846824\u003c/td\u003e\n      \u003ctd\u003e49.115340\u003c/td\u003e\n      \u003ctd\u003e13.318878\u003c/td\u003e\n      \u003ctd\u003e40.471453\u003c/td\u003e\n      \u003ctd\u003e10.951704\u003c/td\u003e\n      \u003ctd\u003e0.649491\u003c/td\u003e\n      \u003ctd\u003e169.818254\u003c/td\u003e\n      \u003ctd\u003e460.880691\u003c/td\u003e\n      \u003ctd\u003e97.926823\u003c/td\u003e\n      \u003ctd\u003e39.295892\u003c/td\u003e\n      \u003ctd\u003e15.077105\u003c/td\u003e\n      \u003ctd\u003e56.097762\u003c/td\u003e\n      \u003ctd\u003e9.818266\u003c/td\u003e\n      \u003ctd\u003e4.919802\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291383\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-03 21:00:00\u003c/td\u003e\n      \u003ctd\u003e162.144446\u003c/td\u003e\n      \u003ctd\u003e404.865418\u003c/td\u003e\n      \u003ctd\u003e98.384468\u003c/td\u003e\n      \u003ctd\u003e35.389856\u003c/td\u003e\n      \u003ctd\u003e22.516178\u003c/td\u003e\n      \u003ctd\u003e36.216388\u003c/td\u003e\n      \u003ctd\u003e11.492089\u003c/td\u003e\n      \u003ctd\u003e7.269283\u003c/td\u003e\n      \u003ctd\u003e172.199254\u003c/td\u003e\n      \u003ctd\u003e459.599763\u003c/td\u003e\n      \u003ctd\u003e98.365107\u003c/td\u003e\n      \u003ctd\u003e39.964091\u003c/td\u003e\n      \u003ctd\u003e14.414241\u003c/td\u003e\n      \u003ctd\u003e59.222526\u003c/td\u003e\n      \u003ctd\u003e10.569736\u003c/td\u003e\n      \u003ctd\u003e4.693342\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291384\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-04 00:00:00\u003c/td\u003e\n      \u003ctd\u003e166.584930\u003c/td\u003e\n      \u003ctd\u003e437.980304\u003c/td\u003e\n      \u003ctd\u003e104.019479\u003c/td\u003e\n      \u003ctd\u003e43.766793\u003c/td\u003e\n      \u003ctd\u003e22.109109\u003c/td\u003e\n      \u003ctd\u003e65.256390\u003c/td\u003e\n      \u003ctd\u003e12.621841\u003c/td\u003e\n      \u003ctd\u003e1.793100\u003c/td\u003e\n      \u003ctd\u003e170.812061\u003c/td\u003e\n      \u003ctd\u003e453.681180\u003c/td\u003e\n      \u003ctd\u003e98.994157\u003c/td\u003e\n      \u003ctd\u003e40.013985\u003c/td\u003e\n      \u003ctd\u003e13.522301\u003c/td\u003e\n      \u003ctd\u003e61.197614\u003c/td\u003e\n      \u003ctd\u003e10.103349\u003c/td\u003e\n      \u003ctd\u003e4.286568\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291385\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-04 03:00:00\u003c/td\u003e\n      \u003ctd\u003e173.182209\u003c/td\u003e\n      \u003ctd\u003e452.585928\u003c/td\u003e\n      \u003ctd\u003e106.572235\u003c/td\u003e\n      \u003ctd\u003e40.534601\u003c/td\u003e\n      \u003ctd\u003e16.930726\u003c/td\u003e\n      \u003ctd\u003e38.788180\u003c/td\u003e\n      \u003ctd\u003e10.747137\u003c/td\u003e\n      \u003ctd\u003e6.510290\u003c/td\u003e\n      \u003ctd\u003e170.439828\u003c/td\u003e\n      \u003ctd\u003e455.036021\u003c/td\u003e\n      \u003ctd\u003e99.830401\u003c/td\u003e\n      \u003ctd\u003e40.129183\u003c/td\u003e\n      \u003ctd\u003e14.551122\u003c/td\u003e\n      \u003ctd\u003e65.430315\u003c/td\u003e\n      \u003ctd\u003e9.389132\u003c/td\u003e\n      \u003ctd\u003e4.484563\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291386\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-04 06:00:00\u003c/td\u003e\n      \u003ctd\u003e155.554082\u003c/td\u003e\n      \u003ctd\u003e464.175866\u003c/td\u003e\n      \u003ctd\u003e102.615428\u003c/td\u003e\n      \u003ctd\u003e36.003311\u003c/td\u003e\n      \u003ctd\u003e7.678204\u003c/td\u003e\n      \u003ctd\u003e24.248612\u003c/td\u003e\n      \u003ctd\u003e6.064152\u003c/td\u003e\n      \u003ctd\u003e5.007039\u003c/td\u003e\n      \u003ctd\u003e172.264492\u003c/td\u003e\n      \u003ctd\u003e453.800429\u003c/td\u003e\n      \u003ctd\u003e102.163329\u003c/td\u003e\n      \u003ctd\u003e40.050108\u003c/td\u003e\n      \u003ctd\u003e13.103400\u003c/td\u003e\n      \u003ctd\u003e62.190761\u003c/td\u003e\n      \u003ctd\u003e9.128160\u003c/td\u003e\n      \u003ctd\u003e4.502950\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291387\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-04 09:00:00\u003c/td\u003e\n      \u003ctd\u003e163.814555\u003c/td\u003e\n      \u003ctd\u003e433.614467\u003c/td\u003e\n      \u003ctd\u003e114.798438\u003c/td\u003e\n      \u003ctd\u003e36.454615\u003c/td\u003e\n      \u003ctd\u003e5.259901\u003c/td\u003e\n      \u003ctd\u003e40.947023\u003c/td\u003e\n      \u003ctd\u003e10.677648\u003c/td\u003e\n      \u003ctd\u003e8.252193\u003c/td\u003e\n      \u003ctd\u003e170.243198\u003c/td\u003e\n      \u003ctd\u003e455.333806\u003c/td\u003e\n      \u003ctd\u003e102.290708\u003c/td\u003e\n      \u003ctd\u003e40.197103\u003c/td\u003e\n      \u003ctd\u003e13.120654\u003c/td\u003e\n      \u003ctd\u003e57.910021\u003c/td\u003e\n      \u003ctd\u003e9.238228\u003c/td\u003e\n      \u003ctd\u003e4.803393\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291388\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-04 12:00:00\u003c/td\u003e\n      \u003ctd\u003e169.196188\u003c/td\u003e\n      \u003ctd\u003e403.488184\u003c/td\u003e\n      \u003ctd\u003e94.199431\u003c/td\u003e\n      \u003ctd\u003e39.189491\u003c/td\u003e\n      \u003ctd\u003e22.977467\u003c/td\u003e\n      \u003ctd\u003e27.176467\u003c/td\u003e\n      \u003ctd\u003e9.430194\u003c/td\u003e\n      \u003ctd\u003e13.841831\u003c/td\u003e\n      \u003ctd\u003e167.765844\u003c/td\u003e\n      \u003ctd\u003e451.355029\u003c/td\u003e\n      \u003ctd\u003e103.465520\u003c/td\u003e\n      \u003ctd\u003e40.252524\u003c/td\u003e\n      \u003ctd\u003e13.315211\u003c/td\u003e\n      \u003ctd\u003e59.466979\u003c/td\u003e\n      \u003ctd\u003e9.471171\u003c/td\u003e\n      \u003ctd\u003e4.442337\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291389\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-04 15:00:00\u003c/td\u003e\n      \u003ctd\u003e165.814250\u003c/td\u003e\n      \u003ctd\u003e446.765824\u003c/td\u003e\n      \u003ctd\u003e99.334107\u003c/td\u003e\n      \u003ctd\u003e44.464271\u003c/td\u003e\n      \u003ctd\u003e1.457549\u003c/td\u003e\n      \u003ctd\u003e58.086715\u003c/td\u003e\n      \u003ctd\u003e1.622380\u003c/td\u003e\n      \u003ctd\u003e3.173978\u003c/td\u003e\n      \u003ctd\u003e167.312650\u003c/td\u003e\n      \u003ctd\u003e439.435929\u003c/td\u003e\n      \u003ctd\u003e102.009695\u003c/td\u003e\n      \u003ctd\u003e40.435349\u003c/td\u003e\n      \u003ctd\u003e11.768963\u003c/td\u003e\n      \u003ctd\u003e60.646198\u003c/td\u003e\n      \u003ctd\u003e9.136786\u003c/td\u003e\n      \u003ctd\u003e5.149517\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291390\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-04 18:00:00\u003c/td\u003e\n      \u003ctd\u003e167.848340\u003c/td\u003e\n      \u003ctd\u003e438.393471\u003c/td\u003e\n      \u003ctd\u003e90.054937\u003c/td\u003e\n      \u003ctd\u003e40.301288\u003c/td\u003e\n      \u003ctd\u003e15.958412\u003c/td\u003e\n      \u003ctd\u003e40.168662\u003c/td\u003e\n      \u003ctd\u003e11.238292\u003c/td\u003e\n      \u003ctd\u003e3.633503\u003c/td\u003e\n      \u003ctd\u003e166.963446\u003c/td\u003e\n      \u003ctd\u003e438.276090\u003c/td\u003e\n      \u003ctd\u003e101.637723\u003c/td\u003e\n      \u003ctd\u003e40.172602\u003c/td\u003e\n      \u003ctd\u003e14.141910\u003c/td\u003e\n      \u003ctd\u003e58.372646\u003c/td\u003e\n      \u003ctd\u003e8.463179\u003c/td\u003e\n      \u003ctd\u003e5.221115\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291391\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-04 21:00:00\u003c/td\u003e\n      \u003ctd\u003e173.508300\u003c/td\u003e\n      \u003ctd\u003e439.917848\u003c/td\u003e\n      \u003ctd\u003e93.063793\u003c/td\u003e\n      \u003ctd\u003e38.750136\u003c/td\u003e\n      \u003ctd\u003e7.633479\u003c/td\u003e\n      \u003ctd\u003e44.399657\u003c/td\u003e\n      \u003ctd\u003e11.019912\u003c/td\u003e\n      \u003ctd\u003e4.952713\u003c/td\u003e\n      \u003ctd\u003e165.979125\u003c/td\u003e\n      \u003ctd\u003e435.138421\u003c/td\u003e\n      \u003ctd\u003e102.005617\u003c/td\u003e\n      \u003ctd\u003e39.497908\u003c/td\u003e\n      \u003ctd\u003e14.000620\u003c/td\u003e\n      \u003ctd\u003e59.820047\u003c/td\u003e\n      \u003ctd\u003e6.856021\u003c/td\u003e\n      \u003ctd\u003e5.392136\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291392\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-05 00:00:00\u003c/td\u003e\n      \u003ctd\u003e182.432617\u003c/td\u003e\n      \u003ctd\u003e497.264899\u003c/td\u003e\n      \u003ctd\u003e95.443869\u003c/td\u003e\n      \u003ctd\u003e40.594815\u003c/td\u003e\n      \u003ctd\u003e9.940475\u003c/td\u003e\n      \u003ctd\u003e77.558997\u003c/td\u003e\n      \u003ctd\u003e4.707020\u003c/td\u003e\n      \u003ctd\u003e3.106529\u003c/td\u003e\n      \u003ctd\u003e168.142646\u003c/td\u003e\n      \u003ctd\u003e447.915202\u003c/td\u003e\n      \u003ctd\u003e99.620102\u003c/td\u003e\n      \u003ctd\u003e39.635003\u003c/td\u003e\n      \u003ctd\u003e14.372707\u003c/td\u003e\n      \u003ctd\u003e59.563942\u003c/td\u003e\n      \u003ctd\u003e7.988174\u003c/td\u003e\n      \u003ctd\u003e5.256284\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291393\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-05 03:00:00\u003c/td\u003e\n      \u003ctd\u003e158.783988\u003c/td\u003e\n      \u003ctd\u003e438.405164\u003c/td\u003e\n      \u003ctd\u003e100.420803\u003c/td\u003e\n      \u003ctd\u003e40.153025\u003c/td\u003e\n      \u003ctd\u003e10.849108\u003c/td\u003e\n      \u003ctd\u003e72.556330\u003c/td\u003e\n      \u003ctd\u003e2.576581\u003c/td\u003e\n      \u003ctd\u003e4.504970\u003c/td\u003e\n      \u003ctd\u003e168.398872\u003c/td\u003e\n      \u003ctd\u003e448.148851\u003c/td\u003e\n      \u003ctd\u003e99.351099\u003c/td\u003e\n      \u003ctd\u003e39.518646\u003c/td\u003e\n      \u003ctd\u003e15.763140\u003c/td\u003e\n      \u003ctd\u003e57.682117\u003c/td\u003e\n      \u003ctd\u003e8.088214\u003c/td\u003e\n      \u003ctd\u003e5.301986\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291394\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-05 06:00:00\u003c/td\u003e\n      \u003ctd\u003e183.150826\u003c/td\u003e\n      \u003ctd\u003e426.209117\u003c/td\u003e\n      \u003ctd\u003e98.880399\u003c/td\u003e\n      \u003ctd\u003e34.418557\u003c/td\u003e\n      \u003ctd\u003e20.539063\u003c/td\u003e\n      \u003ctd\u003e29.605169\u003c/td\u003e\n      \u003ctd\u003e13.588936\u003c/td\u003e\n      \u003ctd\u003e7.168643\u003c/td\u003e\n      \u003ctd\u003e168.651040\u003c/td\u003e\n      \u003ctd\u003e446.075986\u003c/td\u003e\n      \u003ctd\u003e98.741443\u003c/td\u003e\n      \u003ctd\u003e39.840623\u003c/td\u003e\n      \u003ctd\u003e15.331755\u003c/td\u003e\n      \u003ctd\u003e60.839923\u003c/td\u003e\n      \u003ctd\u003e7.891711\u003c/td\u003e\n      \u003ctd\u003e5.269038\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291395\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-05 09:00:00\u003c/td\u003e\n      \u003ctd\u003e188.267556\u003c/td\u003e\n      \u003ctd\u003e407.256175\u003c/td\u003e\n      \u003ctd\u003e108.931184\u003c/td\u003e\n      \u003ctd\u003e36.553233\u003c/td\u003e\n      \u003ctd\u003e9.599915\u003c/td\u003e\n      \u003ctd\u003e40.722980\u003c/td\u003e\n      \u003ctd\u003e1.639521\u003c/td\u003e\n      \u003ctd\u003e5.724500\u003c/td\u003e\n      \u003ctd\u003e171.826650\u003c/td\u003e\n      \u003ctd\u003e441.278667\u003c/td\u003e\n      \u003ctd\u003e98.311919\u003c/td\u003e\n      \u003ctd\u003e39.196175\u003c/td\u003e\n      \u003ctd\u003e16.429023\u003c/td\u003e\n      \u003ctd\u003e62.147934\u003c/td\u003e\n      \u003ctd\u003e7.475540\u003c/td\u003e\n      \u003ctd\u003e5.448962\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291396\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-05 12:00:00\u003c/td\u003e\n      \u003ctd\u003e167.859576\u003c/td\u003e\n      \u003ctd\u003e465.992407\u003c/td\u003e\n      \u003ctd\u003e107.953155\u003c/td\u003e\n      \u003ctd\u003e42.708899\u003c/td\u003e\n      \u003ctd\u003e14.190347\u003c/td\u003e\n      \u003ctd\u003e92.277799\u003c/td\u003e\n      \u003ctd\u003e9.577243\u003c/td\u003e\n      \u003ctd\u003e0.735339\u003c/td\u003e\n      \u003ctd\u003e174.657123\u003c/td\u003e\n      \u003ctd\u003e444.147310\u003c/td\u003e\n      \u003ctd\u003e98.520388\u003c/td\u003e\n      \u003ctd\u003e38.820190\u003c/td\u003e\n      \u003ctd\u003e17.019808\u003c/td\u003e\n      \u003ctd\u003e64.730136\u003c/td\u003e\n      \u003ctd\u003e8.961444\u003c/td\u003e\n      \u003ctd\u003e5.833191\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291397\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-05 15:00:00\u003c/td\u003e\n      \u003ctd\u003e170.348099\u003c/td\u003e\n      \u003ctd\u003e434.234744\u003c/td\u003e\n      \u003ctd\u003e104.514343\u003c/td\u003e\n      \u003ctd\u003e38.607950\u003c/td\u003e\n      \u003ctd\u003e10.232598\u003c/td\u003e\n      \u003ctd\u003e49.524471\u003c/td\u003e\n      \u003ctd\u003e12.445345\u003c/td\u003e\n      \u003ctd\u003e2.596743\u003c/td\u003e\n      \u003ctd\u003e173.787879\u003c/td\u003e\n      \u003ctd\u003e448.842085\u003c/td\u003e\n      \u003ctd\u003e100.028549\u003c/td\u003e\n      \u003ctd\u003e39.375067\u003c/td\u003e\n      \u003ctd\u003e17.096392\u003c/td\u003e\n      \u003ctd\u003e64.718132\u003c/td\u003e\n      \u003ctd\u003e9.420879\u003c/td\u003e\n      \u003ctd\u003e5.738756\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291398\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-05 18:00:00\u003c/td\u003e\n      \u003ctd\u003e152.265370\u003c/td\u003e\n      \u003ctd\u003e459.557611\u003c/td\u003e\n      \u003ctd\u003e103.536524\u003c/td\u003e\n      \u003ctd\u003e40.718426\u003c/td\u003e\n      \u003ctd\u003e6.758667\u003c/td\u003e\n      \u003ctd\u003e27.051145\u003c/td\u003e\n      \u003ctd\u003e12.824247\u003c/td\u003e\n      \u003ctd\u003e2.752883\u003c/td\u003e\n      \u003ctd\u003e172.496791\u003c/td\u003e\n      \u003ctd\u003e442.086577\u003c/td\u003e\n      \u003ctd\u003e100.361794\u003c/td\u003e\n      \u003ctd\u003e38.943434\u003c/td\u003e\n      \u003ctd\u003e15.119775\u003c/td\u003e\n      \u003ctd\u003e65.929509\u003c/td\u003e\n      \u003ctd\u003e8.836617\u003c/td\u003e\n      \u003ctd\u003e6.139142\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e291399\u003c/th\u003e\n      \u003ctd\u003e100\u003c/td\u003e\n      \u003ctd\u003e2015-10-05 21:00:00\u003c/td\u003e\n      \u003ctd\u003e162.887965\u003c/td\u003e\n      \u003ctd\u003e481.415205\u003c/td\u003e\n      \u003ctd\u003e96.687092\u003c/td\u003e\n      \u003ctd\u003e37.162591\u003c/td\u003e\n      \u003ctd\u003e20.541773\u003c/td\u003e\n      \u003ctd\u003e55.057460\u003c/td\u003e\n      \u003ctd\u003e11.713728\u003c/td\u003e\n      \u003ctd\u003e3.539798\u003c/td\u003e\n      \u003ctd\u003e170.782713\u003c/td\u003e\n      \u003ctd\u003e448.188498\u003c/td\u003e\n      \u003ctd\u003e100.794970\u003c/td\u003e\n      \u003ctd\u003e38.980896\u003c/td\u003e\n      \u003ctd\u003e15.573014\u003c/td\u003e\n      \u003ctd\u003e61.859239\u003c/td\u003e\n      \u003ctd\u003e9.942610\u003c/td\u003e\n      \u003ctd\u003e6.191276\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e290601 rows × 18 columns\u003c/p\u003e\n\u003c/div\u003e\n\n\n\n\n```python\nfinal_feat = telemetry_feat.merge(error_count, on=['datetime', 'machineID'], how='left')\nfinal_feat = final_feat.merge(comp_rep, on=['datetime', 'machineID'], how='left')\nfinal_feat = final_feat.merge(machines, on=['machineID'], how='left')\n\nprint(final_feat.head())\nfinal_feat.describe()\n```\n\n       machineID            datetime  voltmean_3h  rotatemean_3h  pressuremean_3h  \\\n    0          1 2015-01-02 06:00:00   180.133784     440.608320        94.137969   \n    1          1 2015-01-02 09:00:00   176.364293     439.349655       101.553209   \n    2          1 2015-01-02 12:00:00   160.384568     424.385316        99.598722   \n    3          1 2015-01-02 15:00:00   170.472461     442.933997       102.380586   \n    4          1 2015-01-02 18:00:00   163.263806     468.937558       102.726648   \n    \n       vibrationmean_3h  voltsd_3h  rotatesd_3h  pressuresd_3h  vibrationsd_3h  \\\n    0         41.551544  21.322735    48.770512       2.135684       10.037208   \n    1         36.105580  18.952210    51.329636      13.789279        6.737739   \n    2         36.094637  13.047080    13.702496       9.988609        1.639962   \n    3         40.483002  16.642354    56.290447       3.305739        8.854145   \n    4         40.921802  17.424688    38.680380       9.105775        3.060781   \n    \n      ...   error2count  error3count  error4count  error5count   comp1    comp2  \\\n    0 ...           0.0          0.0          0.0          0.0  20.000  215.000   \n    1 ...           0.0          0.0          0.0          0.0  20.125  215.125   \n    2 ...           0.0          0.0          0.0          0.0  20.250  215.250   \n    3 ...           0.0          0.0          0.0          0.0  20.375  215.375   \n    4 ...           0.0          0.0          0.0          0.0  20.500  215.500   \n    \n         comp3    comp4   model  age  \n    0  155.000  170.000  model3   18  \n    1  155.125  170.125  model3   18  \n    2  155.250  170.250  model3   18  \n    3  155.375  170.375  model3   18  \n    4  155.500  170.500  model3   18  \n    \n    [5 rows x 29 columns]\n    \n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003evoltmean_3h\u003c/th\u003e\n      \u003cth\u003erotatemean_3h\u003c/th\u003e\n      \u003cth\u003epressuremean_3h\u003c/th\u003e\n      \u003cth\u003evibrationmean_3h\u003c/th\u003e\n      \u003cth\u003evoltsd_3h\u003c/th\u003e\n      \u003cth\u003erotatesd_3h\u003c/th\u003e\n      \u003cth\u003epressuresd_3h\u003c/th\u003e\n      \u003cth\u003evibrationsd_3h\u003c/th\u003e\n      \u003cth\u003evoltmean_24h\u003c/th\u003e\n      \u003cth\u003e...\u003c/th\u003e\n      \u003cth\u003eerror1count\u003c/th\u003e\n      \u003cth\u003eerror2count\u003c/th\u003e\n      \u003cth\u003eerror3count\u003c/th\u003e\n      \u003cth\u003eerror4count\u003c/th\u003e\n      \u003cth\u003eerror5count\u003c/th\u003e\n      \u003cth\u003ecomp1\u003c/th\u003e\n      \u003cth\u003ecomp2\u003c/th\u003e\n      \u003cth\u003ecomp3\u003c/th\u003e\n      \u003cth\u003ecomp4\u003c/th\u003e\n      \u003cth\u003eage\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003ecount\u003c/th\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n      \u003ctd\u003e290601.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emean\u003c/th\u003e\n      \u003ctd\u003e50.380935\u003c/td\u003e\n      \u003ctd\u003e170.774427\u003c/td\u003e\n      \u003ctd\u003e446.609386\u003c/td\u003e\n      \u003ctd\u003e100.858340\u003c/td\u003e\n      \u003ctd\u003e40.383609\u003c/td\u003e\n      \u003ctd\u003e13.300173\u003c/td\u003e\n      \u003ctd\u003e44.453951\u003c/td\u003e\n      \u003ctd\u003e8.885780\u003c/td\u003e\n      \u003ctd\u003e4.440575\u003c/td\u003e\n      \u003ctd\u003e170.775661\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e0.027560\u003c/td\u003e\n      \u003ctd\u003e0.027058\u003c/td\u003e\n      \u003ctd\u003e0.022846\u003c/td\u003e\n      \u003ctd\u003e0.019955\u003c/td\u003e\n      \u003ctd\u003e0.009780\u003c/td\u003e\n      \u003ctd\u003e53.382610\u003c/td\u003e\n      \u003ctd\u003e51.256589\u003c/td\u003e\n      \u003ctd\u003e52.536687\u003c/td\u003e\n      \u003ctd\u003e53.679601\u003c/td\u003e\n      \u003ctd\u003e11.345226\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003estd\u003c/th\u003e\n      \u003ctd\u003e28.798424\u003c/td\u003e\n      \u003ctd\u003e9.498824\u003c/td\u003e\n      \u003ctd\u003e33.119738\u003c/td\u003e\n      \u003ctd\u003e7.411701\u003c/td\u003e\n      \u003ctd\u003e3.475512\u003c/td\u003e\n      \u003ctd\u003e6.966389\u003c/td\u003e\n      \u003ctd\u003e23.214291\u003c/td\u003e\n      \u003ctd\u003e4.656364\u003c/td\u003e\n      \u003ctd\u003e2.319989\u003c/td\u003e\n      \u003ctd\u003e4.720237\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e0.166026\u003c/td\u003e\n      \u003ctd\u003e0.164401\u003c/td\u003e\n      \u003ctd\u003e0.151266\u003c/td\u003e\n      \u003ctd\u003e0.140998\u003c/td\u003e\n      \u003ctd\u003e0.098931\u003c/td\u003e\n      \u003ctd\u003e62.478424\u003c/td\u003e\n      \u003ctd\u003e59.156008\u003c/td\u003e\n      \u003ctd\u003e58.822946\u003c/td\u003e\n      \u003ctd\u003e59.658975\u003c/td\u003e\n      \u003ctd\u003e5.826345\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emin\u003c/th\u003e\n      \u003ctd\u003e1.000000\u003c/td\u003e\n      \u003ctd\u003e125.532506\u003c/td\u003e\n      \u003ctd\u003e211.811184\u003c/td\u003e\n      \u003ctd\u003e72.118639\u003c/td\u003e\n      \u003ctd\u003e26.569635\u003c/td\u003e\n      \u003ctd\u003e0.025509\u003c/td\u003e\n      \u003ctd\u003e0.078991\u003c/td\u003e\n      \u003ctd\u003e0.027417\u003c/td\u003e\n      \u003ctd\u003e0.015278\u003c/td\u003e\n      \u003ctd\u003e155.812721\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e25%\u003c/th\u003e\n      \u003ctd\u003e25.000000\u003c/td\u003e\n      \u003ctd\u003e164.447794\u003c/td\u003e\n      \u003ctd\u003e427.564793\u003c/td\u003e\n      \u003ctd\u003e96.239534\u003c/td\u003e\n      \u003ctd\u003e38.147458\u003c/td\u003e\n      \u003ctd\u003e8.028675\u003c/td\u003e\n      \u003ctd\u003e26.906319\u003c/td\u003e\n      \u003ctd\u003e5.369959\u003c/td\u003e\n      \u003ctd\u003e2.684556\u003c/td\u003e\n      \u003ctd\u003e168.072275\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e13.250000\u003c/td\u003e\n      \u003ctd\u003e12.000000\u003c/td\u003e\n      \u003ctd\u003e13.000000\u003c/td\u003e\n      \u003ctd\u003e12.875000\u003c/td\u003e\n      \u003ctd\u003e7.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e50%\u003c/th\u003e\n      \u003ctd\u003e50.000000\u003c/td\u003e\n      \u003ctd\u003e170.432407\u003c/td\u003e\n      \u003ctd\u003e448.380260\u003c/td\u003e\n      \u003ctd\u003e100.235357\u003c/td\u003e\n      \u003ctd\u003e40.145874\u003c/td\u003e\n      \u003ctd\u003e12.495542\u003c/td\u003e\n      \u003ctd\u003e41.793798\u003c/td\u003e\n      \u003ctd\u003e8.345801\u003c/td\u003e\n      \u003ctd\u003e4.173704\u003c/td\u003e\n      \u003ctd\u003e170.212704\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e32.625000\u003c/td\u003e\n      \u003ctd\u003e29.500000\u003c/td\u003e\n      \u003ctd\u003e32.125000\u003c/td\u003e\n      \u003ctd\u003e32.375000\u003c/td\u003e\n      \u003ctd\u003e12.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e75%\u003c/th\u003e\n      \u003ctd\u003e75.000000\u003c/td\u003e\n      \u003ctd\u003e176.610017\u003c/td\u003e\n      \u003ctd\u003e468.443933\u003c/td\u003e\n      \u003ctd\u003e104.406534\u003c/td\u003e\n      \u003ctd\u003e42.226898\u003c/td\u003e\n      \u003ctd\u003e17.688520\u003c/td\u003e\n      \u003ctd\u003e59.092354\u003c/td\u003e\n      \u003ctd\u003e11.789358\u003c/td\u003e\n      \u003ctd\u003e5.898512\u003c/td\u003e\n      \u003ctd\u003e172.462228\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e0.000000\u003c/td\u003e\n      \u003ctd\u003e68.500000\u003c/td\u003e\n      \u003ctd\u003e65.875000\u003c/td\u003e\n      \u003ctd\u003e67.125000\u003c/td\u003e\n      \u003ctd\u003e70.250000\u003c/td\u003e\n      \u003ctd\u003e16.000000\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003emax\u003c/th\u003e\n      \u003ctd\u003e100.000000\u003c/td\u003e\n      \u003ctd\u003e241.420717\u003c/td\u003e\n      \u003ctd\u003e586.682904\u003c/td\u003e\n      \u003ctd\u003e162.309656\u003c/td\u003e\n      \u003ctd\u003e69.311324\u003c/td\u003e\n      \u003ctd\u003e58.444332\u003c/td\u003e\n      \u003ctd\u003e179.903039\u003c/td\u003e\n      \u003ctd\u003e35.659369\u003c/td\u003e\n      \u003ctd\u003e18.305595\u003c/td\u003e\n      \u003ctd\u003e220.782618\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e2.000000\u003c/td\u003e\n      \u003ctd\u003e2.000000\u003c/td\u003e\n      \u003ctd\u003e2.000000\u003c/td\u003e\n      \u003ctd\u003e2.000000\u003c/td\u003e\n      \u003ctd\u003e2.000000\u003c/td\u003e\n      \u003ctd\u003e491.875000\u003c/td\u003e\n      \u003ctd\u003e348.875000\u003c/td\u003e\n      \u003ctd\u003e370.875000\u003c/td\u003e\n      \u003ctd\u003e394.875000\u003c/td\u003e\n      \u003ctd\u003e20.000000\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e8 rows × 27 columns\u003c/p\u003e\n\u003c/div\u003e\n\n\n\n# Label Construction\nWhen using multi-class classification for predicting failure due to a problem, labelling is done by taking a time window prior to the failure of an asset and labelling the feature records that fall into that window as \"about to fail due to a problem\" while labelling all other records as \"Â€Âœnormal.\" This time window should be picked according to the business case: in some situations it may be enough to predict failures hours in advance, while in others days or weeks may be needed to allow e.g. for arrival of replacement parts.\n\nThe prediction problem for this example scenerio is to estimate the probability that a machine will fail in the near future due to a failure of a certain component. More specifically, the goal is to compute the probability that a machine will fail in the next 24 hours due to a certain component failure (component 1, 2, 3, or 4). Below, a categorical failure feature is created to serve as the label. All records within a 24 hour window before a failure of component 1 have failure=comp1, and so on for components 2, 3, and 4; all records not within 24 hours of a component failure have failure=none.\n\n\n```python\nlabeled_features = final_feat.merge(failures, on=['datetime', 'machineID'], how='left')\nlabeled_features = labeled_features.fillna(method='bfill', limit=7) # fill backward up to 24h\nlabeled_features = labeled_features.fillna('none')\nlabeled_features.head()\n```\n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003evoltmean_3h\u003c/th\u003e\n      \u003cth\u003erotatemean_3h\u003c/th\u003e\n      \u003cth\u003epressuremean_3h\u003c/th\u003e\n      \u003cth\u003evibrationmean_3h\u003c/th\u003e\n      \u003cth\u003evoltsd_3h\u003c/th\u003e\n      \u003cth\u003erotatesd_3h\u003c/th\u003e\n      \u003cth\u003epressuresd_3h\u003c/th\u003e\n      \u003cth\u003evibrationsd_3h\u003c/th\u003e\n      \u003cth\u003e...\u003c/th\u003e\n      \u003cth\u003eerror3count\u003c/th\u003e\n      \u003cth\u003eerror4count\u003c/th\u003e\n      \u003cth\u003eerror5count\u003c/th\u003e\n      \u003cth\u003ecomp1\u003c/th\u003e\n      \u003cth\u003ecomp2\u003c/th\u003e\n      \u003cth\u003ecomp3\u003c/th\u003e\n      \u003cth\u003ecomp4\u003c/th\u003e\n      \u003cth\u003emodel\u003c/th\u003e\n      \u003cth\u003eage\u003c/th\u003e\n      \u003cth\u003efailure\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e0\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 06:00:00\u003c/td\u003e\n      \u003ctd\u003e180.133784\u003c/td\u003e\n      \u003ctd\u003e440.608320\u003c/td\u003e\n      \u003ctd\u003e94.137969\u003c/td\u003e\n      \u003ctd\u003e41.551544\u003c/td\u003e\n      \u003ctd\u003e21.322735\u003c/td\u003e\n      \u003ctd\u003e48.770512\u003c/td\u003e\n      \u003ctd\u003e2.135684\u003c/td\u003e\n      \u003ctd\u003e10.037208\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e20.000\u003c/td\u003e\n      \u003ctd\u003e215.000\u003c/td\u003e\n      \u003ctd\u003e155.000\u003c/td\u003e\n      \u003ctd\u003e170.000\u003c/td\u003e\n      \u003ctd\u003emodel3\u003c/td\u003e\n      \u003ctd\u003e18\u003c/td\u003e\n      \u003ctd\u003enone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e1\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 09:00:00\u003c/td\u003e\n      \u003ctd\u003e176.364293\u003c/td\u003e\n      \u003ctd\u003e439.349655\u003c/td\u003e\n      \u003ctd\u003e101.553209\u003c/td\u003e\n      \u003ctd\u003e36.105580\u003c/td\u003e\n      \u003ctd\u003e18.952210\u003c/td\u003e\n      \u003ctd\u003e51.329636\u003c/td\u003e\n      \u003ctd\u003e13.789279\u003c/td\u003e\n      \u003ctd\u003e6.737739\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e20.125\u003c/td\u003e\n      \u003ctd\u003e215.125\u003c/td\u003e\n      \u003ctd\u003e155.125\u003c/td\u003e\n      \u003ctd\u003e170.125\u003c/td\u003e\n      \u003ctd\u003emodel3\u003c/td\u003e\n      \u003ctd\u003e18\u003c/td\u003e\n      \u003ctd\u003enone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e2\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 12:00:00\u003c/td\u003e\n      \u003ctd\u003e160.384568\u003c/td\u003e\n      \u003ctd\u003e424.385316\u003c/td\u003e\n      \u003ctd\u003e99.598722\u003c/td\u003e\n      \u003ctd\u003e36.094637\u003c/td\u003e\n      \u003ctd\u003e13.047080\u003c/td\u003e\n      \u003ctd\u003e13.702496\u003c/td\u003e\n      \u003ctd\u003e9.988609\u003c/td\u003e\n      \u003ctd\u003e1.639962\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e20.250\u003c/td\u003e\n      \u003ctd\u003e215.250\u003c/td\u003e\n      \u003ctd\u003e155.250\u003c/td\u003e\n      \u003ctd\u003e170.250\u003c/td\u003e\n      \u003ctd\u003emodel3\u003c/td\u003e\n      \u003ctd\u003e18\u003c/td\u003e\n      \u003ctd\u003enone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 15:00:00\u003c/td\u003e\n      \u003ctd\u003e170.472461\u003c/td\u003e\n      \u003ctd\u003e442.933997\u003c/td\u003e\n      \u003ctd\u003e102.380586\u003c/td\u003e\n      \u003ctd\u003e40.483002\u003c/td\u003e\n      \u003ctd\u003e16.642354\u003c/td\u003e\n      \u003ctd\u003e56.290447\u003c/td\u003e\n      \u003ctd\u003e3.305739\u003c/td\u003e\n      \u003ctd\u003e8.854145\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e20.375\u003c/td\u003e\n      \u003ctd\u003e215.375\u003c/td\u003e\n      \u003ctd\u003e155.375\u003c/td\u003e\n      \u003ctd\u003e170.375\u003c/td\u003e\n      \u003ctd\u003emodel3\u003c/td\u003e\n      \u003ctd\u003e18\u003c/td\u003e\n      \u003ctd\u003enone\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e4\u003c/th\u003e\n      \u003ctd\u003e1\u003c/td\u003e\n      \u003ctd\u003e2015-01-02 18:00:00\u003c/td\u003e\n      \u003ctd\u003e163.263806\u003c/td\u003e\n      \u003ctd\u003e468.937558\u003c/td\u003e\n      \u003ctd\u003e102.726648\u003c/td\u003e\n      \u003ctd\u003e40.921802\u003c/td\u003e\n      \u003ctd\u003e17.424688\u003c/td\u003e\n      \u003ctd\u003e38.680380\u003c/td\u003e\n      \u003ctd\u003e9.105775\u003c/td\u003e\n      \u003ctd\u003e3.060781\u003c/td\u003e\n      \u003ctd\u003e...\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e0.0\u003c/td\u003e\n      \u003ctd\u003e20.500\u003c/td\u003e\n      \u003ctd\u003e215.500\u003c/td\u003e\n      \u003ctd\u003e155.500\u003c/td\u003e\n      \u003ctd\u003e170.500\u003c/td\u003e\n      \u003ctd\u003emodel3\u003c/td\u003e\n      \u003ctd\u003e18\u003c/td\u003e\n      \u003ctd\u003enone\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003e5 rows × 30 columns\u003c/p\u003e\n\u003c/div\u003e\n\n\n\nBelow is an example of records that are labeled as failure=comp4 in the failure column. Notice that the first 8 records all occur in the 24-hour window before the first recorded failure of component 4. The next 8 records are within the 24 hour window before another failure of component 4.\n\n\n```python\nlabeled_features.loc[labeled_features['failure'] == 'comp4'][:16]\n```\n\n\n\n\n\u003cdiv\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003emachineID\u003c/th\u003e\n      \u003cth\u003edatetime\u003c/th\u003e\n      \u003cth\u003evoltmean_3h\u003c/th\u003e\n      \u003cth\u003erotatemean_3h\u003c/th\u003e\n      \u003cth\u003epressuremean_3h\u003c/th\u003e\n      \u003cth\u003evibrationmean_3h\u003c/th\u003e\n      \u003cth\u003evoltsd_3h\u003c/th\u003e\n      \u003cth\u003erotatesd_3h\u003c/th\u003e\n      \u003cth\u003epressuresd_3h\u003c/th\u003e\n      \u003c","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashishpatel26%2Fpredictive_maintenance_using_machine-learning_microsoft_casestudy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fashishpatel26%2Fpredictive_maintenance_using_machine-learning_microsoft_casestudy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashishpatel26%2Fpredictive_maintenance_using_machine-learning_microsoft_casestudy/lists"}