643 lines
41 KiB
Plaintext
643 lines
41 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "abc85460",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import os\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import seaborn as sns\n",
|
|
"import pandas as pd\n",
|
|
"import earthpy as et\n",
|
|
"import numpy as np\n",
|
|
"import feather\n",
|
|
"from besser_tanken.config import stations_dir\n",
|
|
"#from besser_tanken.config import stations_dir, feather_dir\n",
|
|
"from besser_tanken.data_loader import load_prices_from, load_stations\n",
|
|
"from besser_tanken.data_tools import group_prices"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "1b7ebdd6",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Handle date time conversions between pandas and matplotlib\n",
|
|
"from pandas.plotting import register_matplotlib_converters\n",
|
|
"register_matplotlib_converters()\n",
|
|
"\n",
|
|
"# Use white grid plot background from seaborn\n",
|
|
"sns.set(font_scale=1.5, style=\"whitegrid\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "fe34b881",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#df = feather.read_dataframe(f\"{stations_dir}/2021/01/2021-01-01-stations.feather\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "4d1b7811",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#data = load_prices_from(2020,11,1)\n",
|
|
"df = load_prices_from(2020,11,1)\n",
|
|
"df = pd.DataFrame(df)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "4625073c",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df.e5 = df['e5'].astype(float)\n",
|
|
"df.e10 = df['e10'].astype(float)\n",
|
|
"df.diesel = df['diesel'].astype(float)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "8d98c145",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df[\"date_time\"] = pd.to_datetime(df.date, infer_datetime_format=True, utc=True)\n",
|
|
"df[\"hour\"] = df.date_time.dt.hour\n",
|
|
"df[\"month\"] = df.date_time.dt.month\n",
|
|
"df[\"quarter\"] = df.date_time.dt.quarter\n",
|
|
"df[\"year\"] = df.date_time.dt.year\n",
|
|
"df[\"day\"] = df.date_time.dt.day\n",
|
|
"df[\"week\"] = df.date_time.dt.isocalendar().week\n",
|
|
"df[\"weekday\"] = df.date_time.dt.weekday\n",
|
|
"df[\"season\"] = np.where(df[\"month\"].isin([3,4,5]),\"spring\",\n",
|
|
" np.where(df[\"month\"].isin([6,7,8]),\"summer\",\n",
|
|
" np.where(df[\"month\"].isin([9,10,11]),\"fall\",\n",
|
|
" np.where(df[\"month\"].isin([12,1,2]),\"winter\",\"None\"))))\n",
|
|
"#buehl[\"weekday_name\"] = np.where(df[\"weekday\"].isin([0]),\"mon\",\n",
|
|
"# np.where(df[\"weekday\"].isin([1]),\"tue\",\n",
|
|
"# np.where(df[\"weekday\"].isin([2]),\"wed\",\n",
|
|
"# np.where(df[\"weekday\"].isin([3]),\"thu\",\n",
|
|
"# np.where(df[\"weekday\"].isin([4]),\"fri\", \n",
|
|
"# np.where(df[\"weekday\"].isin([5]),\"sat\", \n",
|
|
"# np.where(df[\"weekday\"].isin([6]),\"sun\",\"None\")))))))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "ee8153a0",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#df[\"date_time\"] = pd.to_datetime(df.date)\n",
|
|
"#df[\"month\"] = df[\"date_time\"].dt.month"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "d4419141",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df.head()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "7babd7db",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"df.info()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "add38d92",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"grouped_by_station = df.groupby('station_uuid').mean()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "919a8bbf",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"grouped_by_station['diesel'].plot()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "928c0449",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"grouped_by_station['diesel'].nlargest(20).plot()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "0b67b964",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"grouped_by_station['diesel'].nsmallest(20).plot()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "4d9f5349",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"stations = load_stations()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "3fcabf92",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"stations_df = pd.DataFrame(stations)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "493ce272",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"merged = pd.merge(df, stations_df[['uuid','post_code']], how=\"outer\", left_on=[\"station_uuid\"],right_on=[\"uuid\"])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "005e93e4",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"merged.head()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "362a180b",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"ename": "NameError",
|
|
"evalue": "name 'merged' is not defined",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[0;32m/tmp/ipykernel_305767/422759019.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mfeather_file\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"merged.feather\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mfeather\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite_dataframe\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmerged\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeather_file\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
|
|
"\u001b[0;31mNameError\u001b[0m: name 'merged' is not defined"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"feather_file = \"merged.feather\"\n",
|
|
"feather.write_dataframe(merged, feather_file)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "5fe90138",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"merged = feather.read_dataframe(feather_file)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "476b5d9e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"plz_grouped = merged.groupby('post_code').mean()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "a3a95cf9",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<AxesSubplot:xlabel='post_code'>"
|
|
]
|
|
},
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plz_grouped[['diesel','e5']].plot()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "9ce5a1c0",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#prices = group_prices(data)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "4221f111",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"ename": "NameError",
|
|
"evalue": "name 'stations' is not defined",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[0;32m/tmp/ipykernel_305767/2847671869.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mbuehl_stations\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfilter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mlambda\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0ms\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'post_code'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32min\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'77815'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstations\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mbuehl_station\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbuehl_stations\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;31m#buehl = prices[buehl_station['uuid']]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mbuehl\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"station_uuid\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mbuehl_station\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'uuid'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
"\u001b[0;31mNameError\u001b[0m: name 'stations' is not defined"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"buehl_stations = filter(lambda s: s['post_code'] in ['77815'], stations)\n",
|
|
"buehl_station = list(buehl_stations)[0]\n",
|
|
"#buehl = prices[buehl_station['uuid']]\n",
|
|
"buehl = df[df[\"station_uuid\"] == buehl_station['uuid']]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "370d561c",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "5c01f16f",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#buehl_station = next(buehl_stations)\n",
|
|
"print(buehl_station)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "c5371e50",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl= pd.DataFrame(buehl)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "c4a16376",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl[\"date\"] "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "adbd26b4",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl[\"date_time\"] = pd.to_datetime(buehl.date, infer_datetime_format=True, utc=True)\n",
|
|
"#buehl[\"date_time\"] = pd.to_datetime(buehl.date)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6950f7b6",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#buehl[\"date_time\"] = pd.to_datetime(buehl.date, format='%Y-%m-%d %H:%M:%S%z')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "e0b8a829",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl.date_time"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "ce8e2387",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl.date"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "3f5c3044",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"d = pd.to_datetime(buehl.iloc[0].date)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "3609750b",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"d"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "69d3322e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"d.month"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "cd27f6c5",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"pd.DatetimeIndex(buehl['date_time'])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "e56eda9b",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl[\"hour\"] = buehl.date_time.dt.hour\n",
|
|
"buehl[\"month\"] = buehl.date_time.dt.month\n",
|
|
"buehl[\"quarter\"] = buehl.date_time.dt.quarter\n",
|
|
"buehl[\"year\"] = buehl.date_time.dt.year\n",
|
|
"buehl[\"day\"] = buehl.date_time.dt.day\n",
|
|
"buehl[\"week\"] = buehl.date_time.dt.isocalendar().week\n",
|
|
"buehl[\"weekday\"] = buehl.date_time.dt.weekday\n",
|
|
"buehl[\"season\"] = np.where(buehl[\"month\"].isin([3,4,5]),\"spring\",\n",
|
|
" np.where(buehl[\"month\"].isin([6,7,8]),\"summer\",\n",
|
|
" np.where(buehl[\"month\"].isin([9,10,11]),\"fall\",\n",
|
|
" np.where(buehl[\"month\"].isin([12,1,2]),\"winter\",\"None\"))))\n",
|
|
"buehl[\"weekday_name\"] = np.where(buehl[\"weekday\"].isin([0]),\"mon\",\n",
|
|
" np.where(buehl[\"weekday\"].isin([1]),\"tue\",\n",
|
|
" np.where(buehl[\"weekday\"].isin([2]),\"wed\",\n",
|
|
" np.where(buehl[\"weekday\"].isin([3]),\"thu\",\n",
|
|
" np.where(buehl[\"weekday\"].isin([4]),\"fri\", \n",
|
|
" np.where(buehl[\"weekday\"].isin([5]),\"sat\", \n",
|
|
" np.where(buehl[\"weekday\"].isin([6]),\"sun\",\"None\")))))))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "ff6450d2",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl.columns"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "65deae4d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl.info()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "26cae1bf",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl.head(100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "f5f30288",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl.e5 = buehl['e5'].astype(float)\n",
|
|
"buehl.e10 = buehl['e10'].astype(float)\n",
|
|
"buehl.diesel = buehl['diesel'].astype(float)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "9bcf07be",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"weekday_groups = buehl.groupby(\"weekday_name\").mean()\n",
|
|
"weekday_num_groups = buehl.groupby(\"weekday\").mean()\n",
|
|
"weekday_groups.head()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "92c12366",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"weekday_groups[['diesel', 'e5', 'e10']].plot.bar()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "4f808aa0",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"weekday_num_groups[['diesel', 'e5', 'e10']].plot()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "04dedef5",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl.groupby([\"hour\"]).mean()[['e5', 'e10','diesel']].plot()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "44318715",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl.groupby([\"weekday\", \"hour\"]).mean()[['e5', 'e10','diesel']].plot()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "c0f2a72f",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl.groupby([\"year\",\"week\"]).mean()[['e5', 'e10','diesel']].plot()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "3508a896",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"sns.lineplot(x=\"date\", y=\"diesel\",\n",
|
|
" data=buehl)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "1cb4ef0b",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"sns.lineplot(x=\"date\", y=\"e5\", \n",
|
|
" data=buehl[0:100])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "05af38ea",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"buehl_melted = buehl.melt('date', var_name='cols', value_name='vals', value_vars=[\"diesel\", \"e5\", \"e10\"])\n",
|
|
"sns.lineplot(x=\"date\", y=\"vals\", hue='cols', data=buehl_melted)\n",
|
|
"fig = plt.gcf()\n",
|
|
"fig.set_size_inches( 16, 10)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "91c57d5a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"b2 = buehl.drop('station_uuid')\n",
|
|
"#b2 = b2.melt('date', var_name='cols', value_name='vals')\n",
|
|
"#g = sns.factorplot(x=\"date\", y=\"vals\", hue='cols', data=b2)"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"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.9.6"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|