{ "cells": [ { "cell_type": "markdown", "id": "500c7d67", "metadata": {}, "source": [ "## Prepare: Handling Missing Values\n", "### ChemML implements 4 strategies to handle missing values and interpolate, replace or remove them." ] }, { "cell_type": "code", "execution_count": 1, "id": "756c0668", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "from chemml.preprocessing import MissingValues" ] }, { "cell_type": "code", "execution_count": 2, "id": "c0a79423", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
col1col2col3
0111
12nan2
23inf3
3nan24
4missing35
5446
6557
7NaN68
\n", "
" ], "text/plain": [ " col1 col2 col3\n", "0 1 1 1\n", "1 2 nan 2\n", "2 3 inf 3\n", "3 nan 2 4\n", "4 missing 3 5\n", "5 4 4 6\n", "6 5 5 7\n", "7 NaN 6 8" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame()\n", "df['col1'] = [1,2,3,'nan','missing',4,5,np.nan]\n", "df['col2'] = [1,'nan',np.inf,2,3,4,5,6]\n", "df['col3'] = [1,2,3,4,5,6,7,8]\n", "df" ] }, { "cell_type": "markdown", "id": "8c6e2867", "metadata": {}, "source": [ "### Strategy 1: Ignoring Rows" ] }, { "cell_type": "code", "execution_count": 3, "id": "1e226f63", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
col1col2col3
01.01.01
54.04.06
65.05.07
\n", "
" ], "text/plain": [ " col1 col2 col3\n", "0 1.0 1.0 1\n", "5 4.0 4.0 6\n", "6 5.0 5.0 7" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = MissingValues(df, strategy='ignore_row',string_as_null=True,inf_as_null=True,missing_values=None)\n", "df2" ] }, { "cell_type": "code", "execution_count": 4, "id": "1feaa3e9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
col1col2col3
0111
12nan2
23inf3
3nan24
4missing35
5446
6557
7NaN68
\n", "
" ], "text/plain": [ " col1 col2 col3\n", "0 1 1 1\n", "1 2 nan 2\n", "2 3 inf 3\n", "3 nan 2 4\n", "4 missing 3 5\n", "5 4 4 6\n", "6 5 5 7\n", "7 NaN 6 8" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame()\n", "df['col1'] = [1,2,3,'nan','missing',4,5,np.nan]\n", "df['col2'] = [1,'nan',np.inf,2,3,4,5,6]\n", "df['col3'] = [1,2,3,4,5,6,7,8]\n", "df" ] }, { "cell_type": "markdown", "id": "1cf77747", "metadata": {}, "source": [ "### Strategy 2: Replacing With Zeros" ] }, { "cell_type": "code", "execution_count": 5, "id": "c288e5dc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
col1col2col3
01.01.01
12.00.02
23.00.03
30.02.04
40.03.05
54.04.06
65.05.07
70.06.08
\n", "
" ], "text/plain": [ " col1 col2 col3\n", "0 1.0 1.0 1\n", "1 2.0 0.0 2\n", "2 3.0 0.0 3\n", "3 0.0 2.0 4\n", "4 0.0 3.0 5\n", "5 4.0 4.0 6\n", "6 5.0 5.0 7\n", "7 0.0 6.0 8" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = MissingValues(df, strategy='zero',string_as_null=True,inf_as_null=True,missing_values=None)\n", "df2" ] }, { "cell_type": "code", "execution_count": 6, "id": "4b198c6c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
col1col2
011
12nan
23inf
3nan2
4missing3
544
655
7NaN6
\n", "
" ], "text/plain": [ " col1 col2\n", "0 1 1\n", "1 2 nan\n", "2 3 inf\n", "3 nan 2\n", "4 missing 3\n", "5 4 4\n", "6 5 5\n", "7 NaN 6" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame()\n", "df['col1'] = [1,2,3,'nan','missing',4,5,np.nan]\n", "df['col2'] = [1,'nan',np.inf,2,3,4,5,6]\n", "df" ] }, { "cell_type": "markdown", "id": "0d8e4701", "metadata": {}, "source": [ "### Strategy 3: Interpolate" ] }, { "cell_type": "code", "execution_count": 7, "id": "61136d0a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
col1col2
01.0000001.000000
12.0000001.333333
23.0000001.666667
33.3333332.000000
43.6666673.000000
54.0000004.000000
65.0000005.000000
75.0000006.000000
\n", "
" ], "text/plain": [ " col1 col2\n", "0 1.000000 1.000000\n", "1 2.000000 1.333333\n", "2 3.000000 1.666667\n", "3 3.333333 2.000000\n", "4 3.666667 3.000000\n", "5 4.000000 4.000000\n", "6 5.000000 5.000000\n", "7 5.000000 6.000000" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = MissingValues(df,strategy='interpolate',string_as_null=True,inf_as_null=True,missing_values=None)\n", "df2" ] }, { "cell_type": "code", "execution_count": 8, "id": "9e2aa9d1", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
col1col2col3
0111
12nan2
23inf3
3nan24
4missing35
5446
6557
7NaN68
\n", "
" ], "text/plain": [ " col1 col2 col3\n", "0 1 1 1\n", "1 2 nan 2\n", "2 3 inf 3\n", "3 nan 2 4\n", "4 missing 3 5\n", "5 4 4 6\n", "6 5 5 7\n", "7 NaN 6 8" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame()\n", "df['col1'] = [1,2,3,'nan','missing',4,5,np.nan]\n", "df['col2'] = [1,'nan',np.inf,2,3,4,5,6]\n", "df['col3'] = [1,2,3,4,5,6,7,8]\n", "df" ] }, { "cell_type": "markdown", "id": "03457de6", "metadata": {}, "source": [ "### Strategy 3: Ignore Columns" ] }, { "cell_type": "code", "execution_count": 9, "id": "5242f679", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
col3
01
12
23
34
45
56
67
78
\n", "
" ], "text/plain": [ " col3\n", "0 1\n", "1 2\n", "2 3\n", "3 4\n", "4 5\n", "5 6\n", "6 7\n", "7 8" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = MissingValues(df, strategy='ignore_column',string_as_null=True,inf_as_null=True,missing_values=None)\n", "df2" ] }, { "cell_type": "code", "execution_count": null, "id": "ae618f2b", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "interpreter": { "hash": "449e066aefa9e8d62513c10717355272508479920eef85d560c0383291a2cfea" }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.12" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }