refactoring

This commit is contained in:
frankknoll
2022-02-01 10:31:14 +01:00
parent 87ce4ac013
commit a97068a0ae

View File

@@ -129,43 +129,72 @@
" \n",
" @staticmethod\n",
" def createBatchCodeTable(df : pd.DataFrame):\n",
" batchCodeTableDict = {\n",
" 'ADRs': df['VAX_LOT'].value_counts(),\n",
" 'DEATHS': BatchCodeTableFactory._filterDataFrame(df, 'DIED').value_counts(),\n",
" 'DISABILITIES': BatchCodeTableFactory._filterDataFrame(df, 'DISABLE').value_counts(),\n",
" 'LIFE THREATENING ILLNESSES': BatchCodeTableFactory._filterDataFrame(df, 'L_THREAT').value_counts()\n",
" }\n",
" batchCodeTable = pd.concat(batchCodeTableDict, axis = 'columns')\n",
" batchCodeTable.index.name = 'VAX_LOT'\n",
" return batchCodeTable.replace(to_replace = np.nan, value = 0)\n",
" return BatchCodeTableFactory._asDataFrame(\n",
" {\n",
" 'ADRs': BatchCodeTableFactory._getADRs(df),\n",
" 'DEATHS': BatchCodeTableFactory._getDEATHS(df),\n",
" 'DISABILITIES': BatchCodeTableFactory._getDISABILITIES(df),\n",
" 'LIFE THREATENING ILLNESSES': BatchCodeTableFactory._getLIFE_THREATENING_ILLNESSES(df)\n",
" })\n",
"\n",
" # create table from https://www.howbadismybatch.com/combined.html\n",
" # FK-TODO: DRY with createBatchCodeTable()\n",
" @staticmethod\n",
" def createSevereEffectsBatchCodeTable(df : pd.DataFrame):\n",
" batchCodeTableDict = {\n",
" 'ADRs': df['VAX_LOT'].value_counts(),\n",
" 'DEATHS': BatchCodeTableFactory._filterDataFrame(df, 'DIED').value_counts(),\n",
" 'DISABILITIES': BatchCodeTableFactory._filterDataFrame(df, 'DISABLE').value_counts(),\n",
" 'LIFE THREATENING ILLNESSES': BatchCodeTableFactory._filterDataFrame(df, 'L_THREAT').value_counts(),\n",
" 'HOSPITALISATIONS': BatchCodeTableFactory._filterDataFrame(df, 'HOSPITAL').value_counts(),\n",
" 'EMERGENCY ROOM OR DOCTOR VISITS': BatchCodeTableFactory._filterDataFrame(df, 'ER_VISIT').value_counts()\n",
" }\n",
" batchCodeTable = pd.concat(batchCodeTableDict, axis = 'columns')\n",
" batchCodeTable.index.name = 'VAX_LOT'\n",
" # add Company column:\n",
" batchCodeTable = pd.merge(\n",
" batchCodeTable,\n",
" BatchCodeTableFactory._createCompanyByBatchCodeTable(df),\n",
" how = 'left',\n",
" left_index = True,\n",
" right_index = True,\n",
" validate = 'one_to_one')\n",
" return batchCodeTable.replace(to_replace = np.nan, value = 0)\n",
" return BatchCodeTableFactory._addCompanyColumn(\n",
" BatchCodeTableFactory._asDataFrame(\n",
" {\n",
" 'ADRs': BatchCodeTableFactory._getADRs(df),\n",
" 'DEATHS': BatchCodeTableFactory._getDEATHS(df),\n",
" 'DISABILITIES': BatchCodeTableFactory._getDISABILITIES(df),\n",
" 'LIFE THREATENING ILLNESSES': BatchCodeTableFactory._getLIFE_THREATENING_ILLNESSES(df),\n",
" 'HOSPITALISATIONS': BatchCodeTableFactory._getHOSPITALISATIONS(df),\n",
" 'EMERGENCY ROOM OR DOCTOR VISITS': BatchCodeTableFactory._getER_VISITs(df)\n",
" }),\n",
" BatchCodeTableFactory._createCompanyByBatchCodeTable(df))\n",
"\n",
" @staticmethod\n",
" def _filterDataFrame(df, col):\n",
" return df[df[col] == 'Y']['VAX_LOT']\n",
" def _getADRs(df):\n",
" return df['VAX_LOT'].value_counts()\n",
"\n",
" @staticmethod\n",
" def _getDEATHS(df):\n",
" return BatchCodeTableFactory._countValues(df, 'DIED')\n",
"\n",
" @staticmethod\n",
" def _getDISABILITIES(df):\n",
" return BatchCodeTableFactory._countValues(df, 'DISABLE')\n",
"\n",
" @staticmethod\n",
" def _getLIFE_THREATENING_ILLNESSES(df):\n",
" return BatchCodeTableFactory._countValues(df, 'L_THREAT')\n",
"\n",
" @staticmethod\n",
" def _getHOSPITALISATIONS(df):\n",
" return BatchCodeTableFactory._countValues(df, 'HOSPITAL')\n",
"\n",
" @staticmethod\n",
" def _getER_VISITs(df):\n",
" return BatchCodeTableFactory._countValues(df, 'ER_VISIT')\n",
"\n",
" @staticmethod\n",
" def _countValues(df, column):\n",
" return df[df[column] == 'Y']['VAX_LOT'].value_counts()\n",
"\n",
" @staticmethod\n",
" def _asDataFrame(dict):\n",
" dataFrame = pd.concat(dict, axis = 'columns')\n",
" dataFrame.index.name = 'VAX_LOT'\n",
" return dataFrame.replace(to_replace = np.nan, value = 0)\n",
"\n",
" @staticmethod\n",
" def _addCompanyColumn(batchCodeTable, companyByBatchCodeTable):\n",
" return pd.merge(\n",
" batchCodeTable,\n",
" companyByBatchCodeTable,\n",
" how = 'left',\n",
" left_index = True,\n",
" right_index = True,\n",
" validate = 'one_to_one')\n",
"\n",
" @staticmethod\n",
" def _createManufacturerByBatchCodeTable(df):\n",