refactoring
This commit is contained in:
@@ -131,6 +131,26 @@
|
|||||||
" return self.dataFrame[\"VAX_DOSE_SERIES\"].str.contains(dose) if dose is not None else True\n"
|
" return self.dataFrame[\"VAX_DOSE_SERIES\"].str.contains(dose) if dose is not None else True\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"id": "c62cfaff",
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"class AggregationHelper:\n",
|
||||||
|
"\n",
|
||||||
|
" @staticmethod\n",
|
||||||
|
" def aggregateFlattenColumnsRenameColumns(dataFrame, aggFunctionsByColumn, columnNameMappingsDict):\n",
|
||||||
|
" aggregatedDataFrame = dataFrame.agg(aggFunctionsByColumn)\n",
|
||||||
|
" AggregationHelper._flattenColumns(aggregatedDataFrame)\n",
|
||||||
|
" return aggregatedDataFrame.rename(columns = columnNameMappingsDict)\n",
|
||||||
|
"\n",
|
||||||
|
" @staticmethod\n",
|
||||||
|
" def _flattenColumns(dataFrame):\n",
|
||||||
|
" dataFrame.columns = [\"_\".join(a) for a in dataFrame.columns.to_flat_index()]\n"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": null,
|
"execution_count": null,
|
||||||
@@ -146,16 +166,14 @@
|
|||||||
" self.dataFrame = dataFrame \n",
|
" self.dataFrame = dataFrame \n",
|
||||||
"\n",
|
"\n",
|
||||||
" def createBatchCodeTable(self):\n",
|
" def createBatchCodeTable(self):\n",
|
||||||
" batchCodeTable = self.dataFrame.groupby('VAX_LOT').agg(\n",
|
" batchCodeTable = AggregationHelper.aggregateFlattenColumnsRenameColumns(\n",
|
||||||
" {\n",
|
" dataFrame = self.dataFrame.groupby('VAX_LOT'),\n",
|
||||||
|
" aggFunctionsByColumn = {\n",
|
||||||
" 'DIED': ['sum', 'size'],\n",
|
" 'DIED': ['sum', 'size'],\n",
|
||||||
" 'L_THREAT': 'sum',\n",
|
" 'L_THREAT': 'sum',\n",
|
||||||
" 'DISABLE': 'sum'\n",
|
" 'DISABLE': 'sum'\n",
|
||||||
" })\n",
|
" },\n",
|
||||||
" self._flattenColumns(batchCodeTable)\n",
|
" columnNameMappingsDict = {\n",
|
||||||
" batchCodeTable = batchCodeTable.rename(\n",
|
|
||||||
" columns =\n",
|
|
||||||
" {\n",
|
|
||||||
" \"DIED_size\": \"ADRs\",\n",
|
" \"DIED_size\": \"ADRs\",\n",
|
||||||
" \"DIED_sum\": \"DEATHS\",\n",
|
" \"DIED_sum\": \"DEATHS\",\n",
|
||||||
" \"L_THREAT_sum\": \"LIFE THREATENING ILLNESSES\",\n",
|
" \"L_THREAT_sum\": \"LIFE THREATENING ILLNESSES\",\n",
|
||||||
@@ -165,18 +183,16 @@
|
|||||||
"\n",
|
"\n",
|
||||||
" # create table from https://www.howbadismybatch.com/combined.html\n",
|
" # create table from https://www.howbadismybatch.com/combined.html\n",
|
||||||
" def createSevereEffectsBatchCodeTable(self):\n",
|
" def createSevereEffectsBatchCodeTable(self):\n",
|
||||||
" batchCodeTable = self.dataFrame.groupby('VAX_LOT').agg(\n",
|
" batchCodeTable = AggregationHelper.aggregateFlattenColumnsRenameColumns(\n",
|
||||||
" {\n",
|
" dataFrame = self.dataFrame.groupby('VAX_LOT'),\n",
|
||||||
|
" aggFunctionsByColumn = {\n",
|
||||||
" 'DIED': ['sum', 'size'],\n",
|
" 'DIED': ['sum', 'size'],\n",
|
||||||
" 'L_THREAT': 'sum',\n",
|
" 'L_THREAT': 'sum',\n",
|
||||||
" 'DISABLE': 'sum',\n",
|
" 'DISABLE': 'sum',\n",
|
||||||
" 'HOSPITAL': 'sum',\n",
|
" 'HOSPITAL': 'sum',\n",
|
||||||
" 'ER_VISIT': 'sum'\n",
|
" 'ER_VISIT': 'sum'\n",
|
||||||
" })\n",
|
" },\n",
|
||||||
" self._flattenColumns(batchCodeTable)\n",
|
" columnNameMappingsDict = {\n",
|
||||||
" batchCodeTable = batchCodeTable.rename(\n",
|
|
||||||
" columns =\n",
|
|
||||||
" {\n",
|
|
||||||
" \"DIED_size\": \"ADRs\",\n",
|
" \"DIED_size\": \"ADRs\",\n",
|
||||||
" \"DIED_sum\": \"DEATHS\",\n",
|
" \"DIED_sum\": \"DEATHS\",\n",
|
||||||
" \"L_THREAT_sum\": \"LIFE THREATENING ILLNESSES\",\n",
|
" \"L_THREAT_sum\": \"LIFE THREATENING ILLNESSES\",\n",
|
||||||
@@ -204,9 +220,6 @@
|
|||||||
" manufacturerByBatchCodeTable = manufacturerByBatchCodeTable.drop_duplicates(subset = ['VAX_LOT'])\n",
|
" manufacturerByBatchCodeTable = manufacturerByBatchCodeTable.drop_duplicates(subset = ['VAX_LOT'])\n",
|
||||||
" return manufacturerByBatchCodeTable.set_index('VAX_LOT')\n",
|
" return manufacturerByBatchCodeTable.set_index('VAX_LOT')\n",
|
||||||
"\n",
|
"\n",
|
||||||
" def _flattenColumns(self, batchCodeTable):\n",
|
|
||||||
" batchCodeTable.columns = [\"_\".join(a) for a in batchCodeTable.columns.to_flat_index()]\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
"\n",
|
||||||
"class BatchCodeTableFactory:\n",
|
"class BatchCodeTableFactory:\n",
|
||||||
"\n",
|
"\n",
|
||||||
@@ -233,28 +246,21 @@
|
|||||||
" \n",
|
" \n",
|
||||||
" @staticmethod\n",
|
" @staticmethod\n",
|
||||||
" def getDoseTable(dataFrame):\n",
|
" def getDoseTable(dataFrame):\n",
|
||||||
" doseTable = dataFrame.groupby('VAX_DOSE_SERIES').agg(\n",
|
" doseTable = AggregationHelper.aggregateFlattenColumnsRenameColumns(\n",
|
||||||
" {\n",
|
" dataFrame = dataFrame.groupby('VAX_DOSE_SERIES'),\n",
|
||||||
|
" aggFunctionsByColumn = {\n",
|
||||||
" 'DIED': ['sum', 'size'],\n",
|
" 'DIED': ['sum', 'size'],\n",
|
||||||
" 'L_THREAT': 'sum',\n",
|
" 'L_THREAT': 'sum',\n",
|
||||||
" 'DISABLE': 'sum'\n",
|
" 'DISABLE': 'sum'\n",
|
||||||
" })\n",
|
" },\n",
|
||||||
" DoseAnalysis._flattenColumns(doseTable)\n",
|
" columnNameMappingsDict = {\n",
|
||||||
" doseTable = doseTable.rename(\n",
|
|
||||||
" columns =\n",
|
|
||||||
" {\n",
|
|
||||||
" \"DIED_size\": \"Total reports\",\n",
|
" \"DIED_size\": \"Total reports\",\n",
|
||||||
" \"DIED_sum\": \"Deaths\",\n",
|
" \"DIED_sum\": \"Deaths\",\n",
|
||||||
" \"L_THREAT_sum\": \"Life Threatening Illnesses\",\n",
|
" \"L_THREAT_sum\": \"Life Threatening Illnesses\",\n",
|
||||||
" \"DISABLE_sum\": \"Disabilities\"\n",
|
" \"DISABLE_sum\": \"Disabilities\"\n",
|
||||||
" })[['Total reports', 'Deaths', 'Disabilities', 'Life Threatening Illnesses']]\n",
|
" })[['Total reports', 'Deaths', 'Disabilities', 'Life Threatening Illnesses']]\n",
|
||||||
" doseTable['Severe reports (%)'] = (doseTable['Deaths'] + doseTable['Disabilities'] + doseTable['Life Threatening Illnesses']) / doseTable['Total reports'] * 100\n",
|
" doseTable['Severe reports (%)'] = (doseTable['Deaths'] + doseTable['Disabilities'] + doseTable['Life Threatening Illnesses']) / doseTable['Total reports'] * 100\n",
|
||||||
" return doseTable\n",
|
" return doseTable\n"
|
||||||
"\n",
|
|
||||||
" # FK-TODO: DRY with BatchCodeTableHelper\n",
|
|
||||||
" @staticmethod\n",
|
|
||||||
" def _flattenColumns(batchCodeTable):\n",
|
|
||||||
" batchCodeTable.columns = [\"_\".join(a) for a in batchCodeTable.columns.to_flat_index()]\n"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user