Extracted Data-Extraction Metrhods into separate Files

This commit is contained in:
Tim
2023-09-26 21:03:35 +02:00
parent 3301726dea
commit b06d553f75
4 changed files with 56 additions and 72 deletions

View File

@ -109,22 +109,6 @@ def networkGraph(company_id: int) -> go.Figure:
# figure # figure
return go.Figure(data=[edge_trace, node_trace], layout=layout) return go.Figure(data=[edge_trace, node_trace], layout=layout)
# Dash App
# app = Dash(__name__)
# app.title = "Dash Networkx"
# app.layout = html.Div(
# [
# html.I("Write your EDGE_VAR"),
# html.Br(),
# dcc.Input(id="EGDE_VAR", type="text", value="K", debounce=True),
# dcc.Graph(id="my-graph"),
# ]
# )
def networkx_component(company_id: int): def networkx_component(company_id: int):
layout = html.Div( layout = html.Div(
@ -135,14 +119,3 @@ def networkx_component(company_id: int):
) )
return layout return layout
# callback(
# Output("my-graph", "figure", allow_duplicate=True),
# [Input("EGDE_VAR", "value")],
# prevent_initial_call=True,
# )
# def update_output() -> None:
# return networkGraph()
# if __name__ == "__main__":
# app.run(debug=True)

View File

@ -4,9 +4,10 @@ from dash import html
import pandas as pd import pandas as pd
import networkx as nx import networkx as nx
import plotly.graph_objects as go import plotly.graph_objects as go
from dash import Dash, Input, Output, dcc, html, callback from dash import Dash, Input, Output, dcc, html, callback, dash_table
from aki_prj23_transparenzregister.config.config_providers import JsonFileConfigProvider from aki_prj23_transparenzregister.config.config_providers import JsonFileConfigProvider
from aki_prj23_transparenzregister.utils.sql import connector, entities from aki_prj23_transparenzregister.utils.sql import connector, entities
from aki_prj23_transparenzregister.utils.networkx.networkx_data import find_top_companies, find_all_company_relations
dash.register_page( dash.register_page(
__name__, __name__,
@ -20,37 +21,6 @@ dash.register_page(
], ],
) )
def find_all_company_relations() -> pd.DataFrame:
session = connector.get_session(JsonFileConfigProvider("./secrets.json"))
query_companies = session.query(entities.Company) #.all()
query_relations = session.query(entities.CompanyRelation) # .all()
companies_df: pd.DataFrame = pd.read_sql(str(query_companies), session.bind) # type: ignore
companies_relations_df: pd.DataFrame = pd.read_sql(str(query_relations), session.bind) # type: ignore
# print(companies_relations_df)
companies_relations_df = companies_relations_df[["relation_id","company_relation_company2_id"]]
# print(companies_relations_df)
company_name = []
connected_company_name = []
companies_relations_df = companies_relations_df.head()
# print(companies_relations_df)
for _, row in companies_relations_df.iterrows():
# print(companies_df.loc[companies_df["company_id"] == row["relation_id"]]["company_name"].values[0])
# print("TEst")
company_name.append(companies_df.loc[companies_df["company_id"] == row["relation_id"]]["company_name"].values[0])
connected_company_name.append(companies_df.loc[companies_df["company_id"] == row["company_relation_company2_id"]]["company_name"].values[0])
# print(connected_company_name)
# print(company_name)
companies_relations_df["company_name"] = company_name
companies_relations_df["connected_company_name"] = connected_company_name
# print("Test")
# print(companies_relations_df)
return companies_relations_df
# Plotly figure # Plotly figure
def networkGraph(EGDE_VAR: None) -> go.Figure: def networkGraph(EGDE_VAR: None) -> go.Figure:
# find_all_company_relations() # find_all_company_relations()
@ -58,10 +28,6 @@ def networkGraph(EGDE_VAR: None) -> go.Figure:
edges = [] edges = []
for index, row in find_all_company_relations().iterrows(): for index, row in find_all_company_relations().iterrows():
edges.append([row["company_name"], row["connected_company_name"]]) edges.append([row["company_name"], row["connected_company_name"]])
# print(row["company_name"], row["connected_company_name"])
# print(edges)
# edges = df[["relation_id","company_relation_company2_id"]]
# edges = [[EGDE_VAR, "B"], ["B", "C"], ["B", "D"]]
network_graph = nx.Graph() network_graph = nx.Graph()
network_graph.add_edges_from(edges) network_graph.add_edges_from(edges)
pos = nx.spring_layout(network_graph) pos = nx.spring_layout(network_graph)
@ -154,14 +120,7 @@ def networkGraph(EGDE_VAR: None) -> go.Figure:
# figure # figure
return go.Figure(data=[edge_trace, node_trace], layout=layout) return go.Figure(data=[edge_trace, node_trace], layout=layout)
df = find_top_companies()
# Dash App
# app = Dash(__name__)
# app.title = "Dash Networkx"
layout = html.Div( layout = html.Div(
children = html.Div( children = html.Div(
@ -169,12 +128,14 @@ layout = html.Div(
html.Div( html.Div(
className="top_companytable_style", className="top_companytable_style",
children=[ children=[
html.I("Write your EDGE_VAR") html.I("Write your EDGE_VAR"),
dash_table.DataTable(df.to_dict('records'), [{"name": i, "id": i} for i in df.columns])
] ]
), ),
html.Div( html.Div(
className="networkx_style", className="networkx_style",
children=[ children=[
dcc.Dropdown(['eigenvector', 'degree', 'betweeness', 'closeness'], 'eigenvector', id='demo-dropdown'),
html.I("Write your EDGE_VAR"), html.I("Write your EDGE_VAR"),
html.Br(), html.Br(),
# dcc.Dropdown(['eigenvector', 'degree', 'betweeness', 'closeness'], 'eigenvector', id='metric-dropdown'), # dcc.Dropdown(['eigenvector', 'degree', 'betweeness', 'closeness'], 'eigenvector', id='metric-dropdown'),
@ -193,4 +154,5 @@ layout = html.Div(
[Input("EGDE_VAR", "value")], [Input("EGDE_VAR", "value")],
) )
def update_output(EGDE_VAR: None) -> None: def update_output(EGDE_VAR: None) -> None:
find_top_companies()
return networkGraph(EGDE_VAR) return networkGraph(EGDE_VAR)

View File

@ -0,0 +1 @@
"""Everything regarding data extraction for NetworkX Graphs."""

View File

@ -0,0 +1,48 @@
from aki_prj23_transparenzregister.utils.sql import connector, entities
from aki_prj23_transparenzregister.config.config_providers import JsonFileConfigProvider
import pandas as pd
def find_all_company_relations() -> pd.DataFrame:
"""_summary_
Returns:
pd.DataFrame: _description_
"""
session = connector.get_session(JsonFileConfigProvider("./secrets.json"))
query_companies = session.query(entities.Company) #.all()
query_relations = session.query(entities.CompanyRelation) # .all()
companies_df: pd.DataFrame = pd.read_sql(str(query_companies), session.bind) # type: ignore
companies_relations_df: pd.DataFrame = pd.read_sql(str(query_relations), session.bind) # type: ignore
companies_relations_df = companies_relations_df[["relation_id","company_relation_company2_id"]]
company_name = []
connected_company_name = []
companies_relations_df = companies_relations_df.head()
for _, row in companies_relations_df.iterrows():
company_name.append(companies_df.loc[companies_df["company_id"] == row["relation_id"]]["company_name"].values[0])
connected_company_name.append(companies_df.loc[companies_df["company_id"] == row["company_relation_company2_id"]]["company_name"].values[0])
companies_relations_df["company_name"] = company_name
companies_relations_df["connected_company_name"] = connected_company_name
return companies_relations_df
def find_top_companies() -> pd.DataFrame:
"""_summary_
Returns:
pd.DataFrame: _description_
"""
session = connector.get_session(JsonFileConfigProvider("./secrets.json"))
query_companies = session.query(entities.Company) #.all()
companies_df: pd.DataFrame = pd.read_sql(str(query_companies), session.bind) # type: ignore
companies_df = companies_df.head()
companies_df = companies_df[["company_name"]]
companies_df["Platzierung"] = [1,2,3,4,5]
companies_df["Umsatz M€"] = [1,2,3,4,5]
companies_df = companies_df[['Platzierung', 'company_name', 'Umsatz M€']]
print(companies_df)
return companies_df