In [1]:
## Note: please make sure navitron-crons is already installed in venv
## https://www.alfredo.motta.name/create-isolated-jupyter-ipython-kernels-with-pyenv-and-virtualenv/
from datetime import datetime, timedelta
from IPython.display import display, Markdown
import pandas as pd
import numpy as np
import plotnine
import navitron_crons.connections as connections
import navitron_crons.cli_core as cli_core
CONN = connections.MongoConnection(cli_core.CONFIG)
%matplotlib inline
In [14]:
## Fetch map stats ##
with CONN as db_conn:
raw_system_data = list(db_conn['navitron_system_stats'].find(
{}, projection={'_id': False, 'metadata': False, 'write_recipt': False}))
system_jumps_df = pd.DataFrame(raw_system_data)
display(system_jumps_df.head(5))
In [3]:
## Fetch server stats ##
with CONN as db_conn:
raw_server_data = list(db_conn['navitron_server_status'].find(
{}, projection={'_id': False, 'write_recipt': False}))
server_status_df = pd.DataFrame(raw_server_data)
display(server_status_df.head(5))
In [5]:
## Fetch map SDE ##
with CONN as db_conn:
raw_map_sde = list(db_conn['navitron_sde_universe'].find(
{}, projection={'_id': False, 'write_recipt': False, 'stargates': False, 'cron_datetime': False}))
map_sde_df = pd.DataFrame(raw_map_sde)
display(map_sde_df.head(5))
In [20]:
## Join all the things ##
system_jumps_df['hour'] = pd.to_datetime(system_jumps_df['cron_datetime']).dt.hour
system_jumps_df['date'] = pd.to_datetime(system_jumps_df['cron_datetime']).dt.date
system_jumps_df['day_of_week'] = pd.to_datetime(system_jumps_df['cron_datetime']).dt.dayofweek
server_status_df['hour'] = pd.to_datetime(server_status_df['cron_datetime']).dt.hour
server_status_df['date'] = pd.to_datetime(server_status_df['cron_datetime']).dt.date
## Join system_jumps vs server_status ##
full_df = pd.merge(
system_jumps_df, server_status_df,
on=['hour', 'date'],
how='left'
)
full_df = full_df.drop(
['cron_datetime_y', 'start_time'],
axis=1
)
full_df = full_df.dropna(axis=0, how='any') # drop blank
## Join map_sde with all data
full_df = full_df.merge(
map_sde_df,
on='system_id',
how='left'
)
full_df = full_df.drop(
['x', 'y', 'z', 'star_id', 'region_name', 'constellation_name'],
axis=1
)
display(full_df.head(5))
In [ ]: