Skip to content

Commit

Permalink
Timeseries plot wrapper, split notebooks, cleanup misc
Browse files Browse the repository at this point in the history
  • Loading branch information
zackAemmer committed Aug 30, 2022
1 parent 48cc350 commit 9e1745e
Show file tree
Hide file tree
Showing 9 changed files with 1,056 additions and 1,301 deletions.
205 changes: 90 additions & 115 deletions viz_scripts/energy_calculations.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -41,18 +41,13 @@
"source": [
"from collections import defaultdict\n",
"import datetime\n",
"import sys\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"\n",
"import emission.core.get_database as edb\n",
"import emission.core.wrapper.entry as ecwe\n",
"import emission.storage.decorations.analysis_timeseries_queries as esda\n",
"import emission.storage.decorations.trip_queries as esdt\n",
"import emission.storage.decorations.timeline as esdl\n",
"import emission.storage.timeseries.abstract_timeseries as esta\n",
"import emission.storage.timeseries.timequery as estt\n",
"from plots import *\n",
"import scaffolding\n",
"from uuid import UUID\n",
Expand All @@ -62,6 +57,18 @@
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "furnished-silicon",
"metadata": {},
"outputs": [],
"source": [
"# Do not run this notebook at all unless it is for a program; nbclient will run up through this cell\n",
"if study_type != \"program\":\n",
" raise Exception(\"The plots in this notebook are only relevant to programs\")"
]
},
{
"cell_type": "code",
"execution_count": null,
Expand Down Expand Up @@ -167,33 +174,6 @@
"quality_text_mode = scaffolding.get_quality_text_ebike(expanded_ct, data_eb)"
]
},
{
"cell_type": "markdown",
"id": "sized-drain",
"metadata": {},
"source": [
"### Distance vs. energy impact (kWH) by Mode_confirm"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "protecting-falls",
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"data=expanded_ct.loc[(expanded_ct['distance_miles'] <= 40)].sort_values(by=['Energy_Impact(kWH)'], ascending=False) \n",
"x='Energy_Impact(kWH)'\n",
"y='distance_miles'\n",
"legend ='Mode_confirm'\n",
"plot_title=\"Sketch of Energy Impact (kWH) by Travel Mode Selected\\n%s\" % quality_text\n",
"file_name ='sketch_distance_energy_impact%s.png' % file_suffix\n",
"distancevsenergy(data,x,y,legend,plot_title,file_name)\n",
"scaffolding.store_alt_text_generic('scatter plot', plot_title, file_name, './alt_text_lookup.json')"
]
},
{
"cell_type": "markdown",
"id": "ready-return",
Expand All @@ -211,38 +191,37 @@
},
"outputs": [],
"source": [
"if study_type == 'program':\n",
" #eirp : energy impact replaced_mode\n",
" eirc=expanded_ct.groupby('Replaced_mode').agg({'Energy_Impact(kWH)': ['sum', 'mean']},)\n",
" eirc.columns = ['Sketch of Total Energy_Impact(kWH)', 'Sketch of Average Energy_Impact(kWH)']\n",
" eirc = eirc.reset_index()\n",
" eirc = eirc.sort_values(by=['Sketch of Total Energy_Impact(kWH)'], ascending=False)\n",
" eirc['boolean'] = eirc['Sketch of Total Energy_Impact(kWH)'] > 0\n",
" \n",
" subset1 = eirc [['Replaced_mode', 'Sketch of Total Energy_Impact(kWH)']].copy()\n",
" subset1.rename(columns = {'Replaced_mode':'Transport Mode','Sketch of Total Energy_Impact(kWH)':'Replaced_Mode' }, inplace=True)\n",
"#eirp : energy impact replaced_mode\n",
"eirc=expanded_ct.groupby('Replaced_mode').agg({'Energy_Impact(kWH)': ['sum', 'mean']},)\n",
"eirc.columns = ['Sketch of Total Energy_Impact(kWH)', 'Sketch of Average Energy_Impact(kWH)']\n",
"eirc = eirc.reset_index()\n",
"eirc = eirc.sort_values(by=['Sketch of Total Energy_Impact(kWH)'], ascending=False)\n",
"eirc['boolean'] = eirc['Sketch of Total Energy_Impact(kWH)'] > 0\n",
"\n",
"subset1 = eirc [['Replaced_mode', 'Sketch of Total Energy_Impact(kWH)']].copy()\n",
"subset1.rename(columns = {'Replaced_mode':'Transport Mode','Sketch of Total Energy_Impact(kWH)':'Replaced_Mode' }, inplace=True)\n",
"\n",
"#eimc : energy impact mode_confirm\n",
"eimc=expanded_ct.groupby('Mode_confirm').agg({'Energy_Impact(kWH)': ['sum', 'mean']},)\n",
"eimc.columns = ['Sketch of Total Energy_Impact(kWH)', 'Sketch of Average Energy_Impact(kWH)']\n",
"eimc = eimc.reset_index()\n",
"eimc = eimc.sort_values(by=['Sketch of Total Energy_Impact(kWH)'], ascending=False)\n",
"\n",
" #eimc : energy impact mode_confirm\n",
" eimc=expanded_ct.groupby('Mode_confirm').agg({'Energy_Impact(kWH)': ['sum', 'mean']},)\n",
" eimc.columns = ['Sketch of Total Energy_Impact(kWH)', 'Sketch of Average Energy_Impact(kWH)']\n",
" eimc = eimc.reset_index()\n",
" eimc = eimc.sort_values(by=['Sketch of Total Energy_Impact(kWH)'], ascending=False)\n",
"subset2 = eimc [['Mode_confirm', 'Sketch of Total Energy_Impact(kWH)']].copy()\n",
"subset2.rename(columns = {'Mode_confirm':'Transport Mode','Sketch of Total Energy_Impact(kWH)':'Mode_Confirm' }, inplace=True)\n",
"\n",
" subset2 = eimc [['Mode_confirm', 'Sketch of Total Energy_Impact(kWH)']].copy()\n",
" subset2.rename(columns = {'Mode_confirm':'Transport Mode','Sketch of Total Energy_Impact(kWH)':'Mode_Confirm' }, inplace=True)\n",
"df_plot = pd.merge(subset1, subset2, on=\"Transport Mode\")\n",
"df = pd.melt(df_plot , id_vars=['Transport Mode'], value_vars=['Replaced_Mode','Mode_Confirm'], var_name='selection')\n",
"df.rename(columns = {'value':'Energy Impact (kWH)'}, inplace = True)\n",
"\n",
" df_plot = pd.merge(subset1, subset2, on=\"Transport Mode\")\n",
" df = pd.melt(df_plot , id_vars=['Transport Mode'], value_vars=['Replaced_Mode','Mode_Confirm'], var_name='selection')\n",
" df.rename(columns = {'value':'Energy Impact (kWH)'}, inplace = True)\n",
" \n",
" df= df.sort_values(by=['Energy Impact (kWH)'], ascending=False)\n",
" x= 'Energy Impact (kWH)'\n",
" y= 'Transport Mode'\n",
" color = 'selection'\n",
" plot_title=\"Sketch of Energy Impact (kWH) by Transport Mode\\n%s\" % quality_text\n",
" file_name ='sketch_all_energy_impact%s.png' % file_suffix\n",
" overeall_energy_impact(x,y,color,df,plot_title,file_name)\n",
" scaffolding.store_alt_text_bar(pd.DataFrame(df['Energy Impact (kWH)'].values, df['selection'] + '; ' + df['Transport Mode']), file_name, plot_title, './alt_text_lookup.json')"
"df= df.sort_values(by=['Energy Impact (kWH)'], ascending=False)\n",
"x= 'Energy Impact (kWH)'\n",
"y= 'Transport Mode'\n",
"color = 'selection'\n",
"plot_title=\"Sketch of Energy Impact (kWH) by Transport Mode\\n%s\" % quality_text\n",
"file_name ='sketch_all_energy_impact%s.png' % file_suffix\n",
"overeall_energy_impact(x,y,color,df,plot_title,file_name)\n",
"alt_text = scaffolding.store_alt_text_bar(pd.DataFrame(df['Energy Impact (kWH)'].values, df['selection'] + '; ' + df['Transport Mode']), file_name, plot_title, './alt_text_lookup.json')"
]
},
{
Expand All @@ -260,17 +239,16 @@
"metadata": {},
"outputs": [],
"source": [
"if study_type == 'program':\n",
" net_energy_saved = round(sum(eirc['Sketch of Total Energy_Impact(kWH)']), 2)\n",
"net_energy_saved = round(sum(eirc['Sketch of Total Energy_Impact(kWH)']), 2)\n",
"\n",
" x = eirc['Sketch of Total Energy_Impact(kWH)']\n",
" y = eirc['Replaced_mode']\n",
" color =eirc['boolean']\n",
"x = eirc['Sketch of Total Energy_Impact(kWH)']\n",
"y = eirc['Replaced_mode']\n",
"color =eirc['boolean']\n",
"\n",
" plot_title=\"Sketch of Energy Impact for all confirmed trips \\n Contribution by mode towards a total of %s (kWH) \\n%s\" % (net_energy_saved, quality_text)\n",
" file_name ='sketch_all_mode_energy_impact%s.png' % file_suffix\n",
" energy_impact(x,y,color,plot_title,file_name)\n",
" scaffolding.store_alt_text_bar(pd.DataFrame(x,y), file_name, plot_title, './alt_text_lookup.json')"
"plot_title=\"Sketch of Energy Impact for all confirmed trips \\n Contribution by mode towards a total of %s (kWH) \\n%s\" % (net_energy_saved, quality_text)\n",
"file_name ='sketch_all_mode_energy_impact%s.png' % file_suffix\n",
"energy_impact(x,y,color,plot_title,file_name)\n",
"alt_text = scaffolding.store_alt_text_bar(pd.DataFrame(x,y), file_name, plot_title, './alt_text_lookup.json')"
]
},
{
Expand All @@ -290,23 +268,22 @@
},
"outputs": [],
"source": [
"if study_type == 'program':\n",
" # ebei : ebike energy impact\n",
" ebei=data_eb.groupby('Replaced_mode').agg({'Energy_Impact(kWH)': ['sum', 'mean']},)\n",
" ebei.columns = ['Sketch of Total Energy_Impact(kWH)', 'Sketch of Average Energy_Impact(kWH)']\n",
" ebei= ebei.reset_index()\n",
" ebei = ebei.sort_values(by=['Sketch of Total Energy_Impact(kWH)'], ascending=False)\n",
" ebei['boolean'] = ebei['Sketch of Total Energy_Impact(kWH)'] > 0\n",
" net_energy_saved = round(sum(ebei['Sketch of Total Energy_Impact(kWH)']), 2)\n",
"# ebei : ebike energy impact\n",
"ebei=data_eb.groupby('Replaced_mode').agg({'Energy_Impact(kWH)': ['sum', 'mean']},)\n",
"ebei.columns = ['Sketch of Total Energy_Impact(kWH)', 'Sketch of Average Energy_Impact(kWH)']\n",
"ebei= ebei.reset_index()\n",
"ebei = ebei.sort_values(by=['Sketch of Total Energy_Impact(kWH)'], ascending=False)\n",
"ebei['boolean'] = ebei['Sketch of Total Energy_Impact(kWH)'] > 0\n",
"net_energy_saved = round(sum(ebei['Sketch of Total Energy_Impact(kWH)']), 2)\n",
"\n",
" x = ebei['Sketch of Total Energy_Impact(kWH)']\n",
" y = ebei['Replaced_mode']\n",
" color =ebei['boolean']\n",
"x = ebei['Sketch of Total Energy_Impact(kWH)']\n",
"y = ebei['Replaced_mode']\n",
"color =ebei['boolean']\n",
"\n",
" plot_title=\"Sketch of Energy Impact of E-Bike trips\\n Contribution by replaced mode towards a total of %s (kWH)\\n %s\" % (net_energy_saved, quality_text_mode)\n",
" file_name ='sketch_energy_impact_ebike%s.png' % file_suffix\n",
" energy_impact(x,y,color,plot_title,file_name)\n",
" scaffolding.store_alt_text_bar(pd.DataFrame(x.values,y), file_name, plot_title, './alt_text_lookup.json')"
"plot_title=\"Sketch of Energy Impact of E-Bike trips\\n Contribution by replaced mode towards a total of %s (kWH)\\n %s\" % (net_energy_saved, quality_text_mode)\n",
"file_name ='sketch_energy_impact_ebike%s.png' % file_suffix\n",
"energy_impact(x,y,color,plot_title,file_name)\n",
"alt_text = scaffolding.store_alt_text_bar(pd.DataFrame(x.values,y), file_name, plot_title, './alt_text_lookup.json')"
]
},
{
Expand All @@ -324,24 +301,23 @@
"metadata": {},
"outputs": [],
"source": [
"if study_type == 'program':\n",
" co2rp=expanded_ct.groupby('Replaced_mode').agg({'CO2_Impact(lb)': ['sum', 'mean']},)\n",
" co2rp.columns = ['total_lb_CO2_emissions', 'average_lb_CO2_emission']\n",
" co2rp = co2rp.reset_index()\n",
" co2rp= co2rp.sort_values(by=['total_lb_CO2_emissions'], ascending=False)\n",
" co2rp['boolean'] = co2rp['total_lb_CO2_emissions'] > 0\n",
"co2rp=expanded_ct.groupby('Replaced_mode').agg({'CO2_Impact(lb)': ['sum', 'mean']},)\n",
"co2rp.columns = ['total_lb_CO2_emissions', 'average_lb_CO2_emission']\n",
"co2rp = co2rp.reset_index()\n",
"co2rp= co2rp.sort_values(by=['total_lb_CO2_emissions'], ascending=False)\n",
"co2rp['boolean'] = co2rp['total_lb_CO2_emissions'] > 0\n",
"\n",
"\n",
" net_CO2_saved = round(sum(co2rp['total_lb_CO2_emissions']), 2)\n",
"net_CO2_saved = round(sum(co2rp['total_lb_CO2_emissions']), 2)\n",
"\n",
" x = co2rp['total_lb_CO2_emissions']\n",
" y = co2rp['Replaced_mode']\n",
" color =co2rp['boolean']\n",
"x = co2rp['total_lb_CO2_emissions']\n",
"y = co2rp['Replaced_mode']\n",
"color =co2rp['boolean']\n",
"\n",
" plot_title=\"Sketch of CO2 Emissions Impact for all confirmed trips \\n Contribution by mode towards a total of %s (kWH) \\n%s\" % (net_CO2_saved, quality_text)\n",
" file_name ='sketch_all_mode_CO2impact%s.png' % file_suffix\n",
" CO2_impact(x,y,color,plot_title,file_name)\n",
" scaffolding.store_alt_text_bar(pd.DataFrame(x.values,y), file_name, plot_title, './alt_text_lookup.json')"
"plot_title=\"Sketch of CO2 Emissions Impact for all confirmed trips \\n Contribution by mode towards a total of %s (kWH) \\n%s\" % (net_CO2_saved, quality_text)\n",
"file_name ='sketch_all_mode_CO2impact%s.png' % file_suffix\n",
"CO2_impact(x,y,color,plot_title,file_name)\n",
"alt_text = scaffolding.store_alt_text_bar(pd.DataFrame(x.values,y), file_name, plot_title, './alt_text_lookup.json')"
]
},
{
Expand All @@ -359,22 +335,21 @@
"metadata": {},
"outputs": [],
"source": [
"if study_type == 'program':\n",
" ebco2=data_eb.groupby('Replaced_mode').agg({'CO2_Impact(lb)': ['sum', 'mean']},)\n",
" ebco2.columns = ['total_lb_CO2_emissions', 'average_lb_CO2_emission']\n",
" ebco2 = ebco2.reset_index()\n",
" ebco2 = ebco2.sort_values(by=['total_lb_CO2_emissions'], ascending=False)\n",
" ebco2['boolean'] = ebco2['total_lb_CO2_emissions'] > 0\n",
" net_CO2_emissions = round(sum(ebco2['total_lb_CO2_emissions']), 2)\n",
"ebco2=data_eb.groupby('Replaced_mode').agg({'CO2_Impact(lb)': ['sum', 'mean']},)\n",
"ebco2.columns = ['total_lb_CO2_emissions', 'average_lb_CO2_emission']\n",
"ebco2 = ebco2.reset_index()\n",
"ebco2 = ebco2.sort_values(by=['total_lb_CO2_emissions'], ascending=False)\n",
"ebco2['boolean'] = ebco2['total_lb_CO2_emissions'] > 0\n",
"net_CO2_emissions = round(sum(ebco2['total_lb_CO2_emissions']), 2)\n",
"\n",
" x = ebco2['total_lb_CO2_emissions']\n",
" y = ebco2['Replaced_mode']\n",
" color = ebco2['boolean']\n",
"x = ebco2['total_lb_CO2_emissions']\n",
"y = ebco2['Replaced_mode']\n",
"color = ebco2['boolean']\n",
"\n",
" plot_title=\"Sketch of Total Pounds of CO2 Emissions of E-Bike trips\\n Contribution by replaced mode towards a total of %s (lb CO2 Emissions )\\n %s\" % (net_CO2_emissions, quality_text_mode)\n",
" file_name ='sketch_CO2impact_ebike%s.png' % file_suffix\n",
" CO2_impact(x,y,color,plot_title,file_name)\n",
" scaffolding.store_alt_text_bar(pd.DataFrame(x.values,y), file_name, plot_title, './alt_text_lookup.json')"
"plot_title=\"Sketch of Total Pounds of CO2 Emissions of E-Bike trips\\n Contribution by replaced mode towards a total of %s (lb CO2 Emissions )\\n %s\" % (net_CO2_emissions, quality_text_mode)\n",
"file_name ='sketch_CO2impact_ebike%s.png' % file_suffix\n",
"CO2_impact(x,y,color,plot_title,file_name)\n",
"alt_text = scaffolding.store_alt_text_bar(pd.DataFrame(x.values,y), file_name, plot_title, './alt_text_lookup.json')"
]
}
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
"year = 2021\n",
"month = 9\n",
"program = \"prepilot\"\n",
"study_type = \"program\"\n",
"mode_of_interest = \"Pilot ebike\""
"study_type = \"study\"\n",
"mode_of_interest = None"
]
},
{
Expand All @@ -41,18 +41,13 @@
"source": [
"from collections import defaultdict\n",
"import datetime\n",
"import sys\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"\n",
"import emission.core.get_database as edb\n",
"import emission.core.wrapper.entry as ecwe\n",
"import emission.storage.decorations.analysis_timeseries_queries as esda\n",
"import emission.storage.decorations.trip_queries as esdt\n",
"import emission.storage.decorations.timeline as esdl\n",
"import emission.storage.timeseries.abstract_timeseries as esta\n",
"import emission.storage.timeseries.timequery as estt\n",
"from plots import *\n",
"import scaffolding\n",
"from uuid import UUID\n",
Expand Down Expand Up @@ -180,7 +175,7 @@
"execution_count": null,
"id": "tracked-serbia",
"metadata": {
"scrolled": true
"scrolled": false
},
"outputs": [],
"source": [
Expand All @@ -198,7 +193,7 @@
"execution_count": null,
"id": "about-seafood",
"metadata": {
"scrolled": true
"scrolled": false
},
"outputs": [],
"source": [
Expand All @@ -211,34 +206,6 @@
"print(expanded_ct.query(\"Trip_purpose == 'Work'\").Mode_confirm.value_counts(dropna=True))"
]
},
{
"cell_type": "markdown",
"id": "biological-vancouver",
"metadata": {},
"source": [
"### Distribution of Replaced_mode attribute"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "comprehensive-august",
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"# Note: The portion of pilot ebikes in the pie chart below is only when the mode_confirm is different that ebike. Example: mode_confirm was Walk, replaced_mode ebike.\n",
"# mode_confrim was Car, drove alone, replaced_mode ebike.\n",
"if study_type == 'program':\n",
" labels_rm = expanded_ct['Replaced_mode'].value_counts(dropna=True).keys().tolist()\n",
" values_rm = expanded_ct['Replaced_mode'].value_counts(dropna=True).tolist()\n",
" plot_title=\"Number of trips for each replaced mode (selected by users)\\n%s\" % quality_text\n",
" file_name= 'ntrips_replaced_mode%s.png' % file_suffix\n",
" pie_chart_mode(plot_title,labels_rm,values_rm,file_name)\n",
" alt_text = scaffolding.store_alt_text_pie(pd.DataFrame(values_rm, labels_rm), file_name, plot_title, './alt_text_lookup.json')"
]
},
{
"cell_type": "markdown",
"id": "careful-spencer",
Expand All @@ -251,7 +218,9 @@
"cell_type": "code",
"execution_count": null,
"id": "conservative-september",
"metadata": {},
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"labels_tp = expanded_ct['Trip_purpose'].value_counts(dropna=True).keys().tolist()\n",
Expand All @@ -276,7 +245,7 @@
"execution_count": null,
"id": "identified-replica",
"metadata": {
"scrolled": true
"scrolled": false
},
"outputs": [],
"source": [
Expand All @@ -302,7 +271,7 @@
"execution_count": null,
"id": "satisfied-sharing",
"metadata": {
"scrolled": true
"scrolled": false
},
"outputs": [],
"source": [
Expand Down
Loading

0 comments on commit 9e1745e

Please sign in to comment.