66 lines
1.8 KiB
Python
66 lines
1.8 KiB
Python
import pandas as pd
|
|
from flask import Flask, render_template, request
|
|
|
|
from download_digital import construct_dataframe, get_bez_data
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
@app.route("/")
|
|
def tables(
|
|
url: str = "https://beschaeftigtenbefragung.verdi.de/",
|
|
):
|
|
bez_data = get_bez_data(["bez_data_0", "bez_data_2"], url)
|
|
|
|
df = construct_dataframe(
|
|
bez_data=bez_data[0],
|
|
grouped=False,
|
|
special_tag="stud",
|
|
).sort_values(
|
|
["Digitale Befragung", "Bundesland", "Bezirk"], ascending=[False, True, True]
|
|
)
|
|
|
|
df_state = construct_dataframe(
|
|
bez_data=bez_data[1], grouped=False, no_processing=True
|
|
).sort_values("Landesbezirk")
|
|
|
|
output_str = []
|
|
|
|
def _print_as_html(df: pd.DataFrame):
|
|
df = df.astype({"Digitale Befragung": "Int32"})
|
|
with pd.option_context("display.max_rows", None):
|
|
table = df.to_html(
|
|
index_names=False,
|
|
justify="left",
|
|
index=False,
|
|
classes="sortable dataframe",
|
|
)
|
|
|
|
tfoot = [
|
|
" <tfoot>",
|
|
" <td>Gesamt</td>",
|
|
]
|
|
for i in range(len(df.columns) - 2):
|
|
tfoot.append(" <td/>")
|
|
tfoot.extend(
|
|
[
|
|
f" <td>{df['Digitale Befragung'].sum()}</td>",
|
|
" </tr>",
|
|
" </tfoot>",
|
|
]
|
|
)
|
|
tfoot = "\n".join(tfoot)
|
|
idx = table.index("</table>")
|
|
output_str.append(table[: idx - 1])
|
|
output_str.append(tfoot)
|
|
output_str.append(table[idx:])
|
|
|
|
_print_as_html(df_state)
|
|
_print_as_html(df)
|
|
|
|
return render_template("base.html", tables="\n".join(output_str))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app.run()
|