1
Fork 0
mirror of https://github.com/Steffo99/unimore-bda-3.git synced 2024-11-22 07:54:21 +00:00
bda-3-steffo/README.ipynb

3464 lines
3.7 MiB
Text
Raw Normal View History

2022-11-25 08:23:40 +00:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\[ Stefano Pigozzi | Tema Data Analytics | Big Data Analytics | A.A. 2022/2023 | Unimore \\]"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:40.635561319Z",
"start_time": "2023-07-02T06:47:39.216048338Z"
}
},
"outputs": [],
"source": [
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Ricerca di correlazioni nell'attività online relativa a videogiochi pubblicati sulla piattaforma Steam"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"> ### Data processing e exploratory data analytics su dataset provenienti da più sorgenti\n",
">\n",
"> Lattività da svolgere consiste nel:\n",
">\n",
"> 1. Scegliere due o più dataset provenienti da due o più sorgenti.\n",
"> * Il dataset finale deve essere costituito almeno da due file.\n",
"> 2. Usando [pandas](https://pandas.pydata.org/) implementare le operazioni di data processing necessarie (principalmente join e selezioni) per mettere in collegamento i dataset e per preparare i dati al passo successivo\n",
"> 3. Usando pacchetti Python quali [pandas](https://pandas.pydata.org/), [scipy](https://scipy.org/), [matplotlib](https://matplotlib.org/) e [seaborn](https://seaborn.pydata.org/) implementare attività di data cleaning, exploratory data analysis estraendo dati statistici e di visualizzazione dei risultati attraverso il quale sia possibile \"raccontare qualcosa sui dati\" (storytelling), eventualmente partendo da dei quesiti di ricerca.\n",
"> L'uso dei pacchetti non deve necessariamente essere limitato alle istruzioni viste a lezione. Le documentazioni dei pacchetti stessi e i volumi messi a disposizione su Dolly fornisco spunti duso interessanti!\n",
"> 4. Produrre un notebook [Jupyter](https://jupyter.org/) che contenga:\n",
"> * una introduzione allargomento scelto, alle sorgenti dati e agli obiettivi del progetto specificando eventualmente i quesiti di ricerca\n",
"> * una sezione per ogni fase del progetto di data analytics"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Sinossi"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In questa relazione si ricercano correlazioni tra vari parametri relativi all'attività online riguardante vari videogiochi per PC pubblicati sulla piattaforma di distribuzione [Steam](https://store.steampowered.com/), recuperando dati da varie fonti, quali la web API di [Steam](https://store.steampowered.com/) stesso, il progetto [SteamDB](https://steamdb.info/), il catalogo prezzi [IsThereAnyDeal](https://isthereanydeal.com/), e [Google Trends](https://trends.google.com/trends/), costruendo infine un funzione con discreta correlazione con il numero di giocatori attivi in un determinato giorno."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Introduzione"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[Steam](https://store.steampowered.com/) è una piattaforma di vendita e distribuzione videogiochi per PC creata da [Valve Corporation](https://www.valvesoftware.com/en/)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[Valve Corporation](https://www.valvesoftware.com/en/) pubblica quotidianamente [dati sul numero massimo di giocatori concorrenti](https://store.steampowered.com/charts/) di ciascun videogioco; questi dati vengono raccolti dal progetto indipendente [SteamDB](https://steamdb.info/), che li utilizza per mostrare la popolarità storica di ciascun prodotto."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Periodicamente, i videogiochi disponibili su [Steam](https://store.steampowered.com/) vengono scontati temporaneamente per incentivare gli utenti della piattaforma ad acquistarli; ciò in genere avviene tra le due e le cinque volte all'anno, principalmente nel periodo natalizio e attorno al solstizio di estate.\n",
"\n",
"Il progetto [SteamDB](https://steamdb.info/) monitora quotidianamente i prezzi di ciascun prodotto, aggregandoli per creare uno storico complessivo dei prezzi."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I videogiochi presenti su [Steam](https://store.steampowered.com/) possono essere anche acquistati attraverso siti di terze parti, che possono offrire prezzi o offerte diversi da quelli della piattaforma, pur sempre condividendone i servizi, come ad esempio [Humble Bundle](https://www.humblebundle.com/); il catalogo prezzi [IsThereAnyDeal](https://isthereanydeal.com/) si occupa di controllare periodicamente i prezzi su ciascun rivenditore e di aggregarli in un sito unico, creando poi uno storico globale dei prezzi migliori."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Gli sviluppatori dei videogiochi su [Steam](https://store.steampowered.com/) possono pubblicare periodicamente sulla piattaforma degli annunci relativi al proprio videogioco, tipicamente per informare i clienti della disponibilità di una nuova release."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Gli annunci pubblicati da ciascun prodotto sono recuperabili attraverso chiamate ad una [web API](https://developer.valvesoftware.com/wiki/Steam_Web_API#GetNewsForApp_.28v0002.29) pubblica."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Obiettivo dell'indagine"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La popolarità di un videogioco è una metrica sociale, alimentata da tanti diversi fattori, che possono variare anche significativamente in base al genere in questione."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si ipotizza che uno di questi fattori sia la presenza di sconti, in quanto si è empiricamente notato che il numero di giocatori sembra aumentare in presenza di essi."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si ipotizza inoltre che il rilascio di nuovi contenuti porti a un picco improvviso seguito da una lenta diminuzione nel numero di giocatori concorrenti, circa corrispondente al tempo necessario per vedere le novità."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In questa indagine, si vuole provare a modellare una funzione che, utilizzando solo parametri esterni, ottenga una discreta correlazione con il numero di giocatori concorrenti di ciascun videogioco (senza ricorrere a tecniche di machine learning)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Oggetto dell'indagine"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Recuperare grandi quantità di dati relative a un vasto numero di prodotti diversi è difficoltoso, in quanto tutte le fonti che si desidera utilizzare implementano misure per prevenire lo scraping automatizzato."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Inoltre, la moltitudine di generi di videogiochi esistenti e di stili di comunicazione adottati dagli sviluppatori può introdurre notevole rumore e rendere questo studio impossibile. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si decide pertanto di concentrarsi esclusivamente sui prodotti con le seguenti caratteristiche:\n",
"\n",
"- ne è stata rilasciata la versione 1.0\n",
"- non hanno fattori fortemente sociali come origine della loro popolarità\n",
" - la loro componente principale non è il multigiocatore competitivo\n",
"- vengono scontati regolarmente\n",
"- non abusano della funzionalità di annunci per pubblicare informazioni non riguardanti il prodotto\n",
"- hanno venduto un numero significativo di copie\n",
" - hanno almeno 10000 recensioni pubblicate dai clienti"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si recupera quindi manualmente un piccolo sottoinsieme di dataset relativi a diversi prodotti con le caratteristiche indicate nella sezione precedente, descrivendo però accuratamente il metodo utilizzato per recuperare i dati in modo da poter estendere riproducibilmente la ricerca a qualsiasi altro prodotto."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I prodotti selezionati sono:\n",
"\n",
"- [Deep Rock Galactic](https://steamdb.info/app/548430/)\n",
"- [OMORI](https://steamdb.info/app/1150690/)\n",
"- [Potion Craft: Alchemist Simulator](https://steamdb.info/app/1210320/)\n",
"- [Untitled Goose Game](https://steamdb.info/app/837470/)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In più, al fine di mostrare quanta differenza può esserci tra un prodotto e l'altro, si recuperano anche dati relativi a questo videogioco, che non presenta le caratteristiche sopraelencate:\n",
"\n",
"- [Factorio](https://steamdb.info/app/427520/)\n",
" - non è mai stato scontato\n",
" - ha pubblicato per anni nella sezione annunci un diario settimanale dello sviluppo\n",
" - viene aggiornato regolarmente, ma solo per correzione di bug, e non per l'aggiunta di nuovi contenuti"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Struttura del progetto"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il progetto è diviso in tre parti:\n",
"\n",
"- la directory `data` con i dati grezzi recuperati dalla rete, con a sua volta tante sottodirectory con i dati specifici di ciascun prodotto studiato;\n",
"- il package Python `unimore_bda_3`, contenente primitive specifiche all'elaborazione dei dati;\n",
"- questo notebook Jupyter, contenente celle per la rappresentazione dei dati elaborati."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il package contiene un modulo particolare, `unimore_bda_3.prelude`, che importa tutte le dipendenze necessarie allo svolgimento dell'analisi e le ri-esporta con degli alias semplici e intuitivi."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il package è compatibile con PEP518; per installarlo, è necessario eseguire i seguenti comandi dalla directory del progetto:\n",
"\n",
"```bash\n",
"python3 -v venv .venv\n",
"source venv/bin/activate # Assumendo l'utilizzo di Bash\n",
"pip install .\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si importa il modulo all'interno del notebook, in modo da avere tutti gli alias disponibili:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:40.693759958Z",
"start_time": "2023-07-02T06:47:39.216569683Z"
}
},
"outputs": [],
"source": [
"from unimore_bda_3.prelude import *"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Recupero manuale dei dati"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In questa sezione si recuperano manuale dati machine-readable da diverse fonti indipendenti fra loro, evitando di incappare in protezioni automatizzate insuperabili come CAPTCHA."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### [Google Trends](https://trends.google.com/trends/)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si cercano su Google Trends i prodotti oggetto di questa ricerca, facendo attenzione a selezionare l'*argomento \"Videogioco\"* e non il *termine di ricerca* con lo stesso nome per minimizzare i falsi positivi."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Visualizzazione di come effettuare una ricerca su Google Trends attraverso interfaccia grafica.](media/google-trends-query.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si configura poi la ricerca perchè sia relativa a *Tutto il mondo* e nell'arco di tempo *2004 - Presente*, in modo da avere dati generali relative alle tendenze globali, e poi si utilizza il pulsante *Download* per scaricare il file CSV relativo all'*Interesse nel tempo*."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Visualizzazione di come configurare i parametri di una ricerca su Google Trends attraverso interfaccia grafica, e di come scaricarne i risultati.](media/google-trends-parameters.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I file CSV così recuperati sono inseriti al percorso `data/{nome}/gtrends-worldwide.csv`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### [SteamDB](https://steamdb.info/)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si cercano su SteamDB i prodotti oggetto della ricerca."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Visualizzazione di come effettuare una ricerca su SteamDB attraverso interfaccia grafica.](media/steamdb-search.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Dalla pagina di ciascun prodotto si recupera l'App ID, un codice univoco utilizzato da Steam per identificare il software, e lo si salva all'interno del file `data/{nome}/steam_appid.txt`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Visualizzazione di come recuperare l'App ID di un prodotto dalla relativa pagina SteamDB.](media/steamdb-appid.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si accede poi alla scheda *Price History*."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Visualizzazione di come accedere alla scheda Price History.](media/steamdb-tab-price-history.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In fondo ad essa, nella omonima sezione, è presente un grafico dello storico prezzi, con a destra un bottone per il download del dataset."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Visualizzazione di come scaricare il dataset dello storico prezzi.](media/steamdb-chart-price-history.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il file recuperato viene salvato con il nome `data/{nome}/steamdb-price.csv`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si accede poi alla scheda *Charts*."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Visualizzazione di come accedere alla scheda Charts.](media/steamdb-tab-charts.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Poco sotto la selezione, si trova la sezione *Lifetime player count history*, contenente un grafico dello storico del numero di giocatori concorrenti dalla comparsa del prodotto su Steam, con a destra un bottone per il download del dataset."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Visualizzazione di come scaricare il dataset dello storico prezzi.](media/steamdb-chart-player-history.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il file recuperato viene salvato con il nome `data/{nome}/steamdb-players.csv`.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### [IsThereAnyDeal](https://isthereanydeal.com/)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si cercano sul sito `https://new.isthereanydeal.com` i cinque prodotti relativi a questa ricerca."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Visualizzazione di come cercare prodotti su IsThereAnyDeal.](media/itad-search.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si accede alla scheda *History*, e si utilizza il tool *Ispeziona Elemento* del browser Firefox per accedere al sorgente HTML della pagina dopo che essa ha eseguito il codice JavaScript necessario per la visualizzazione dei grafici."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Visualizzazione di come ispezionare il grafico nei Firefox Developer Tools.](media/itad-inspect-element.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Dal grafico, si risale la gerarchia degli elementi fino ad arrivare a un `<div>` con la classe `.js-chart-container`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Visualizzazione del .js-chart-container nei Firefox Developer Tools.](media/itad-jschartcontainer.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Immediatamente dopo, è presente uno `<script>`.\n",
"Ne si selezionano i contenuti, e li si salvano all'interno del file `data/{nome}/itad-price.js`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Visualizzazione del tag script.](media/itad-script-scraping.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Importazione dei dati"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In questa sezione si descrive come caricare nel notebook i dati ottenuti manualmente, recuperandone automaticamente altri, convertendoli in `pd.DataFrame`, uniformandoli e rendendoli human-friendly."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Per ciascun dataset grezzo si è creato un modulo `unimore_bda_3.loaders.*` in grado di convertirlo in un `pd.DataFrame`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si importano tutti i loader all'interno di questo notebook Jupyter, raccolti all'interno della variabile `loaders`."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:40.694207576Z",
"start_time": "2023-07-02T06:47:40.298982419Z"
}
},
"outputs": [],
"source": [
"from unimore_bda_3 import loaders"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Importazione dati di Google Trends - `unimore_bda_3.loaders.gtrends`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il *loader* dei dati di Google Trends utilizza la funzione `pd.read_csv` per trasformare il file comma-separated values direttamente in un `pd.DataFrame`.\n",
"\n",
"```python\n",
"dataframe = pd.read_csv(fd, sep=\",\", header=1)\n",
"```\n",
"\n",
"Utilizzando il kwarg `header`, Pandas è in grado di ignorare la riga di prefazione che Google Trends inserisce nei file scaricati:\n",
"\n",
"```csv\n",
"Categoria: Tutte le categorie\n",
"\n",
"Mese,Deep Rock Galactic: (Tutto il mondo)\n",
"2004-01,0\n",
"2004-02,0\n",
"2004-03,0\n",
"```\n",
"\n",
"Inoltre, il loader pulisce il dataset, effettuando i seguenti passi:\n",
"\n",
"1. rinomina le colonne, assegnando loro un titolo più human-friendly:\n",
"\n",
" ```python\n",
" dataframe.rename(inplace=True, columns={\n",
" \"Mese\": \"Date\",\n",
" f\"{query_name}: (Tutto il mondo)\": \"Google Trends · Score\",\n",
" })\n",
" ```\n",
"\n",
"2. converte in date le stringhe presenti nella colonna dell'indice:\n",
"\n",
" ```python\n",
" dataframe[\"Date\"] = pd.to_datetime(dataframe[\"Date\"])\n",
" ```\n",
"\n",
"3. converte in interi i numeri presenti nella colonna dei valori, trasformando in `0` i valori `\"< 1\"`, e scalando i valori da 0-100 a 0-1:\n",
"\n",
" ```python\n",
" dataframe[\"Google Trends · Score\"] = dataframe[\"Google Trends · Score\"].map(lambda x: int(x) if x != \"< 1\" else 0) / 100\n",
" ```\n",
"\n",
"4. imposta la colonna delle date come indice del dataframe:\n",
"\n",
" ```python\n",
" dataframe.set_index(\"Date\", inplace=True)\n",
" ```\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si verifica il corretto funzionamento del loader con questa chiamata ad esso:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:40.701305721Z",
"start_time": "2023-07-02T06:47:40.377967865Z"
}
},
"outputs": [
{
"data": {
"text/plain": " Google Trends · Score\nDate \n2004-01-01 0.00\n2004-02-01 0.00\n2004-03-01 0.00\n2004-04-01 0.00\n2004-05-01 0.01\n... ...\n2023-02-01 0.40\n2023-03-01 0.56\n2023-04-01 0.41\n2023-05-01 0.37\n2023-06-01 0.43\n\n[234 rows x 1 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Google Trends · Score</th>\n </tr>\n <tr>\n <th>Date</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2004-01-01</th>\n <td>0.00</td>\n </tr>\n <tr>\n <th>2004-02-01</th>\n <td>0.00</td>\n </tr>\n <tr>\n <th>2004-03-01</th>\n <td>0.00</td>\n </tr>\n <tr>\n <th>2004-04-01</th>\n <td>0.00</td>\n </tr>\n <tr>\n <th>2004-05-01</th>\n <td>0.01</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n </tr>\n <tr>\n <th>2023-02-01</th>\n <td>0.40</td>\n </tr>\n <tr>\n <th>2023-03-01</th>\n <td>0.56</td>\n </tr>\n <tr>\n <th>2023-04-01</th>\n <td>0.41</td>\n </tr>\n <tr>\n <th>2023-05-01</th>\n <td>0.37</td>\n </tr>\n <tr>\n <th>2023-06-01</th>\n <td>0.43</td>\n </tr>\n </tbody>\n</table>\n<p>234 rows × 1 columns</p>\n</div>"
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"with open(\"./data/deeprockgalactic/gtrends-worldwide.csv\") as fd:\n",
" df = loaders.gtrends.load(fd, \"Deep Rock Galactic\")\n",
"df\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Importazione dati da SteamDB - `unimore_bda_3.loaders.steamdb`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I due *loader* dei dati da SteamDB funzionano in modo molto simile a quello di Google Trends, in quanto anch'esso usa `pd.read_csv`.\n",
"\n",
"```python\n",
"dataframe = pd.read_csv(fd, sep=\",\")\n",
"```\n",
"\n",
"Allo stesso modo, puliscono il dataset in un modo molto simile:\n",
"\n",
"```python\n",
"dataframe.rename(inplace=True, columns={\n",
" \"DateTime\": \"Date\",\n",
" \"Players\": \"SteamDB · Peak concurrent players\",\n",
" \"Average Players\": \"SteamDB · Day average of concurrent players\",\n",
" \"Flags\": \"SteamDB · Player count flags\",\n",
"})\n",
"\n",
"dataframe[\"Date\"] = pd.to_datetime(dataframe[\"Date\"])\n",
"\n",
"dataframe.set_index(\"Date\", inplace=True)\n",
"```\n",
"\n",
"```python\n",
"dataframe.rename(inplace=True, columns={\n",
" \"DateTime\": \"Date\",\n",
" \"Final price\": \"SteamDB · Steam\",\n",
" \"Flags\": \"SteamDB · Price flags\",\n",
"})\n",
"\n",
"dataframe[\"Date\"] = pd.to_datetime(dataframe[\"Date\"])\n",
"\n",
"dataframe.set_index(\"Date\", inplace=True)\n",
"```\n",
"\n",
"Si ha però una differenza significativa, che consiste nel raccoglimento dei valori per data, in quanto i dataset contengono anche gli orari di registrazione dei dati, che ai fini di questa ricerca possono essere ignorati.\n",
"\n",
"```python\n",
"dataframe = dataframe.groupby(dataframe.index.date).max()\n",
"dataframe.index = pd.to_datetime(dataframe.index)\n",
"```\n",
"\n",
"```python\n",
"dataframe = dataframe.groupby(dataframe.index.date).min()\n",
"dataframe.index = pd.to_datetime(dataframe.index)\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si verifica il corretto funzionamento dei loader con queste chiamate ad essi:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:40.704705835Z",
"start_time": "2023-07-02T06:47:40.406769392Z"
}
},
"outputs": [
{
"data": {
"text/plain": " SteamDB · Peak concurrent players \\\n2016-12-01 11.0 \n2016-12-02 NaN \n2016-12-03 NaN \n2016-12-04 NaN \n2016-12-05 NaN \n... ... \n2023-06-25 35016.0 \n2023-06-26 30017.0 \n2023-06-27 29568.0 \n2023-06-28 28539.0 \n2023-06-29 28042.0 \n\n SteamDB · Day average of concurrent players \\\n2016-12-01 NaN \n2016-12-02 NaN \n2016-12-03 NaN \n2016-12-04 NaN \n2016-12-05 NaN \n... ... \n2023-06-25 26276.0 \n2023-06-26 22421.0 \n2023-06-27 21949.0 \n2023-06-28 21347.0 \n2023-06-29 21347.0 \n\n SteamDB · Player count flags \n2016-12-01 NaN \n2016-12-02 NaN \n2016-12-03 NaN \n2016-12-04 NaN \n2016-12-05 NaN \n... ... \n2023-06-25 NaN \n2023-06-26 NaN \n2023-06-27 NaN \n2023-06-28 NaN \n2023-06-29 NaN \n\n[2402 rows x 3 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>SteamDB · Peak concurrent players</th>\n <th>SteamDB · Day average of concurrent players</th>\n <th>SteamDB · Player count flags</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2016-12-01</th>\n <td>11.0</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2016-12-02</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2016-12-03</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2016-12-04</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2016-12-05</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>2023-06-25</th>\n <td>35016.0</td>\n <td>26276.0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-06-26</th>\n <td>30017.0</td>\n <td>22421.0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-06-27</th>\n <td>29568.0</td>\n <td>21949.0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-06-28</th>\n <td>28539.0</td>\n <td>21347.0</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-06-29</th>\n <td>28042.0</td>\n <td>21347.0</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n<p>2402 rows × 3 columns</p>\n</div>"
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"with open(\"./data/deeprockgalactic/steamdb-players.csv\") as fd:\n",
" df = loaders.steamdb.load_players(fd)\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:40.709769142Z",
"start_time": "2023-07-02T06:47:40.448248117Z"
}
},
"outputs": [
{
"data": {
"text/plain": " SteamDB · Steam SteamDB · Price flags\n2018-02-28 22.99 NaN\n2018-04-24 20.69 NaN\n2018-04-27 22.99 NaN\n2018-05-10 17.24 NaN\n2018-05-14 22.99 NaN\n... ... ...\n2023-03-23 29.99 NaN\n2023-04-20 9.89 NaN\n2023-05-04 29.99 NaN\n2023-06-15 9.89 NaN\n2023-06-29 9.89 NaN\n\n[96 rows x 2 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>SteamDB · Steam</th>\n <th>SteamDB · Price flags</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2018-02-28</th>\n <td>22.99</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2018-04-24</th>\n <td>20.69</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2018-04-27</th>\n <td>22.99</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2018-05-10</th>\n <td>17.24</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2018-05-14</th>\n <td>22.99</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>2023-03-23</th>\n <td>29.99</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-04-20</th>\n <td>9.89</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-05-04</th>\n <td>29.99</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-06-15</th>\n <td>9.89</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-06-29</th>\n <td>9.89</td>\n <td>NaN</td>\n </tr>\n </tbody>\n</table>\n<p>96 rows × 2 columns</p>\n</div>"
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"with open(\"./data/deeprockgalactic/steamdb-price.csv\") as fd:\n",
" df = loaders.steamdb.load_price(fd)\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Importazione dati da IsThereAnyDeal - `unimore_bda_3.loaders.itad`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il *loader* dei dati da IsThereAnyDeal ricerca i dataset JSON contenuti all'interno del codice JavaScript del sito web, utilizzati per generare dinamicamente i grafici che esso mostra.\n",
"\n",
"La regular expression utilizzata è la seguente:\n",
"\n",
"```python\n",
"PRICE_REGEX = re.compile(r\"\"\"Charts[.]Builder[(]setup, (.+?)[)]\"\"\")\n",
"```\n",
"\n",
"Per ciascun dataset trovato, il loader chiama un'altra funzione, adibita a convertirlo in un `pd.DataFrame`:\n",
"\n",
"```python\n",
"matches: list[str] = PRICE_REGEX.findall(data)\n",
"\n",
"return [_load_price_dataframe(match) for match in matches]\n",
"```\n",
"\n",
"La funzione di conversione a `pd.DataFrame` carica il dataset JSON con la funzione `json.loads`, poi per ciascuna serie presente all'interno di esso chiama un'ulteriore funzione che si occupa di convertirla in una `pd.Series`.\n",
"\n",
"```python\n",
"srcs: list = json.loads(match)\n",
"\n",
"dataframe = pd.DataFrame(\n",
" data=[_load_price_series(src) for src in srcs]\n",
").T\n",
"\n",
"dataframe.index = pd.to_datetime(dataframe.index)\n",
"\n",
"return dataframe\n",
"```\n",
"\n",
"La funzione di conversione a `pd.Series` converte le tuple `(indice, valore)` in due liste contenente tutti gli indici e tutti i valori, il formato richiesto da Pandas.\n",
"\n",
"```python\n",
"index = [pd.Timestamp(item[0], unit=\"ms\", tz=\"utc\") for item in src[\"data\"]]\n",
"data = [item[1] for item in src[\"data\"]]\n",
"\n",
"series = pd.Series(\n",
" data=data,\n",
" index=index,\n",
" name=f\"\"\"ITAD · {src[\"name\"]}\"\"\"\n",
")\n",
"\n",
"return series\n",
"```\n",
"\n",
"Inoltre, effettua lo stesso raggruppamento già visto nel loader di SteamDB per selezionare solo la data e non l'ora di ciascun valore:\n",
"\n",
"```python\n",
"if \"Worst\" in series.name or \"High\" in series.name:\n",
" series = series.groupby(series.index.date).max()\n",
"else:\n",
" series = series.groupby(series.index.date).min()\n",
"```\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si verifica il corretto funzionamento del loader con questa chiamata ad esso:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:40.711484212Z",
"start_time": "2023-07-02T06:47:40.485670340Z"
}
},
"outputs": [
{
"data": {
"text/plain": " ITAD · Best Price ITAD · Best Regular Price \\\n2018-02-28 22.99 22.99 \n2018-04-24 20.69 22.99 \n2018-04-27 20.69 22.99 \n2018-05-10 17.24 22.99 \n2018-05-14 17.24 22.99 \n... ... ... \n2023-05-04 9.89 29.99 \n2023-05-05 9.89 29.99 \n2023-05-23 9.89 29.99 \n2023-06-15 9.89 29.99 \n2023-06-29 9.89 29.99 \n\n ITAD · Worst Regular Price ITAD · Historical Low \n2018-02-28 22.99 22.99 \n2018-04-24 22.99 20.69 \n2018-04-27 22.99 NaN \n2018-05-10 22.99 17.24 \n2018-05-14 22.99 NaN \n... ... ... \n2023-05-04 29.99 NaN \n2023-05-05 29.99 NaN \n2023-05-23 29.99 NaN \n2023-06-15 29.99 NaN \n2023-06-29 29.99 0.00 \n\n[151 rows x 4 columns]",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>ITAD · Best Price</th>\n <th>ITAD · Best Regular Price</th>\n <th>ITAD · Worst Regular Price</th>\n <th>ITAD · Historical Low</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2018-02-28</th>\n <td>22.99</td>\n <td>22.99</td>\n <td>22.99</td>\n <td>22.99</td>\n </tr>\n <tr>\n <th>2018-04-24</th>\n <td>20.69</td>\n <td>22.99</td>\n <td>22.99</td>\n <td>20.69</td>\n </tr>\n <tr>\n <th>2018-04-27</th>\n <td>20.69</td>\n <td>22.99</td>\n <td>22.99</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2018-05-10</th>\n <td>17.24</td>\n <td>22.99</td>\n <td>22.99</td>\n <td>17.24</td>\n </tr>\n <tr>\n <th>2018-05-14</th>\n <td>17.24</td>\n <td>22.99</td>\n <td>22.99</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>2023-05-04</th>\n <td>9.89</td>\n <td>29.99</td>\n <td>29.99</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-05-05</th>\n <td>9.89</td>\n <td>29.99</td>\n <td>29.99</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-05-23</th>\n <td>9.89</td>\n <td>29.99</td>\n <td>29.99</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-06-15</th>\n <td>9.89</td>\n <td>29.99</td>\n <td>29.99</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2023-06-29</th>\n <td>9.89</td>\n <td>29.99</td>\n <td>29.99</td>\n <td>0.00</td>\n </tr>\n </tbody>\n</table>\n<p>151 rows × 4 columns</p>\n</div>"
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"with open(\"./data/deeprockgalactic/itad-price.js\") as fd:\n",
" df = loaders.itad.load(fd)\n",
"df[0]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Recupero e importazione dei dati degli annunci dalla web API di Steam - `unimore_bda_3.loaders.steam`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il *loader* di dati da Steam non si basa su un dataset locale archiviato su file, bensì effettua dinamicamente richieste alla web API di Steam al fine di recuperare i dati più aggiornati disponibili relativi agli annunci di un prodotto con un dato app id.\n",
"\n",
"A tale scopo, fa uso del package `httpx` per richieste HTTP:\n",
"\n",
"```python\n",
"import httpx\n",
"\n",
"steam_api = httpx.Client(base_url=\"https://api.steampowered.com\")\n",
"```\n",
"\n",
"Il loader legge dal relativo file l'app id del prodotto di cui caricare i dati, e procede a effettuare richieste HTTP per esso:\n",
"\n",
"```python\n",
"appid = int(fd.read().strip())\n",
"data = fetch(appid=appid)\n",
"\n",
"return data\n",
"```\n",
"\n",
"Il recupero dei dati avviene in quattro fasi:\n",
"\n",
"1. Vengono effettuate ripetute richieste all'API fino a quando non sono stati recuperati tutti gli annunci esistenti:\n",
"\n",
" ```python\n",
" count = 100\n",
" enddate = {}\n",
" newsitems = []\n",
"\n",
" while count == 100:\n",
" request = steam_api.get(\n",
" \"/ISteamNews/GetNewsForApp/v0002/\",\n",
" params={\n",
" \"appid\": appid,\n",
" \"count\": 100,\n",
" \"format\": \"json\",\n",
" **enddate,\n",
" }\n",
" )\n",
" request.raise_for_status()\n",
" data = request.json()[\"appnews\"]\n",
" count = len(data[\"newsitems\"])\n",
" newsitems.extend(data[\"newsitems\"])\n",
" enddate = {\"enddate\": newsitems[-1][\"date\"]}\n",
"\n",
" return newsitems\n",
" ```\n",
"\n",
"2. Gli annunci recuperati vengono categorizzati in base al tag ad essi associato dalla web API:\n",
"\n",
" ```python\n",
" result = collections.defaultdict(list)\n",
"\n",
" for item in news:\n",
" tags = item.get(\"tags\", [])\n",
" if tags:\n",
" for tag in set(item.get(\"tags\", [])):\n",
" result[tag].append(item)\n",
" else:\n",
" result[\"no_tags\"].append(item)\n",
"\n",
" return result\n",
" ```\n",
"\n",
"3. Il numero di annunci per ciascun tag in ciascun giorno viene raccolto in una `pd.Series`:\n",
"\n",
" ```python\n",
" index = pd.to_datetime([datetime.fromtimestamp(item[\"date\"]) for item in news])\n",
"\n",
" return pd.Series(\n",
" data=[1 for _ in index],\n",
" index=index,\n",
" name=f\"\"\"Steam · Count of News tagged {name}\"\"\",\n",
" dtype=np.uint8,\n",
" )\n",
" ```\n",
"\n",
"4. Le `pd.Series` vengono unite in un dataframe unico, con i valori nulli riempiti a zero e i conteggi di annunci in una sola giornata ancora una volta raggruppati e sommati:\n",
"\n",
" ```python\n",
" raw_news = _load_news(appid=appid)\n",
" categorized_news = _categorize_news(news=raw_news)\n",
" serialized_news = [_serialize_news(name=name, news=news).to_frame() for name, news in categorized_news.items()]\n",
"\n",
" dataframe = utils.join_frames(*serialized_news).fillna(0)\n",
" dataframe = dataframe.groupby(dataframe.index.date).sum()\n",
" dataframe.index = pd.to_datetime(dataframe.index)\n",
"\n",
" return dataframe\n",
" ```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si verifica il corretto funzionamento del loader con questa chiamata ad esso:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:43.612325961Z",
"start_time": "2023-07-02T06:47:40.550738777Z"
}
},
"outputs": [
{
"data": {
"text/plain": " Steam · Count of News tagged no_tags \\\n2016-12-15 1 \n2017-02-17 1 \n2017-02-23 1 \n2017-03-23 5 \n2017-04-01 1 \n... ... \n2023-06-01 2 \n2023-06-09 1 \n2023-06-14 1 \n2023-06-15 1 \n2023-06-29 1 \n\n Steam · Count of News tagged patchnotes \\\n2016-12-15 0.0 \n2017-02-17 1.0 \n2017-02-23 1.0 \n2017-03-23 0.0 \n2017-04-01 0.0 \n... ... \n2023-06-01 0.0 \n2023-06-09 0.0 \n2023-06-14 0.0 \n2023-06-15 0.0 \n2023-06-29 0.0 \n\n Steam · Count of News tagged hide_store \\\n2016-12-15 0.0 \n2017-02-17 0.0 \n2017-02-23 0.0 \n2017-03-23 0.0 \n2017-04-01 0.0 \n... ... \n2023-06-01 0.0 \n2023-06-09 0.0 \n2023-06-14 0.0 \n2023-06-15 0.0 \n2023-06-29 0.0 \n\n Steam · Count of News tagged ModAct_1401078964_1677758714_0 \\\n2016-12-15 0.0 \n2017-02-17 0.0 \n2017-02-23 0.0 \n2017-03-23 0.0 \n2017-04-01 0.0 \n... ... \n2023-06-01 0.0 \n2023-06-09 0.0 \n2023-06-14 0.0 \n2023-06-15 0.0 \n2023-06-29 0.0 \n\n Steam · Count of News tagged mod_require_rereview \\\n2016-12-15 0.0 \n2017-02-17 0.0 \n2017-02-23 0.0 \n2017-03-23 0.0 \n2017-04-01 0.0 \n... ... \n2023-06-01 0.0 \n2023-06-09 0.0 \n2023-06-14 0.0 \n2023-06-15 0.0 \n2023-06-29 0.0 \n\n Steam · Count of News tagged mod_reviewed \\\n2016-12-15 0.0 \n2017-02-17 0.0 \n2017-02-23 0.0 \n2017-03-23 0.0 \n2017-04-01 0.0 \n...
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Steam · Count of News tagged no_tags</th>\n <th>Steam · Count of News tagged patchnotes</th>\n <th>Steam · Count of News tagged hide_store</th>\n <th>Steam · Count of News tagged ModAct_1401078964_1677758714_0</th>\n <th>Steam · Count of News tagged mod_require_rereview</th>\n <th>Steam · Count of News tagged mod_reviewed</th>\n <th>Steam · Count of News tagged steam_award_vote_request</th>\n <th>Steam · Count of News tagged mod_hide_library_overview</th>\n <th>Steam · Count of News tagged steam_award_nomination_request</th>\n <th>Steam · Count of News tagged halloween</th>\n <th>Steam · Count of News tagged hide_library_overview</th>\n <th>Steam · Count of News tagged hide_library_detail</th>\n <th>Steam · Count of News tagged halloween2019candidate</th>\n <th>Steam · Count of News tagged auto_migrated</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2016-12-15</th>\n <td>1</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>1.0</td>\n <td>1.0</td>\n <td>0.0</td>\n <td>1.0</td>\n </tr>\n <tr>\n <th>2017-02-17</th>\n <td>1</td>\n <td>1.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>1.0</td>\n <td>1.0</td>\n <td>0.0</td>\n <td>1.0</td>\n </tr>\n <tr>\n <th>2017-02-23</th>\n <td>1</td>\n <td>1.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>1.0</td>\n <td>1.0</td>\n <td>0.0</td>\n <td>1.0</td>\n </tr>\n <tr>\n <th>2017-03-23</th>\n <td>5</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>5.0</td>\n <td>5.0</td>\n <td>0.0</td>\n <td>5.0</td>\n </tr>\n <tr>\n <th>2017-04-01</th>\n <td>1</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>1.0</td>\n <td>1.0</td>\n <td>0.0</td>\n <td>1.0</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>2023-06-01</th>\n <td>2</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>2023-06-09</th>\n <td>1</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>2023-06-14</th>\n <td>1</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"with open(\"./data/deeprockgalactic/steam_appid.txt\") as fd:\n",
" df = loaders.steam.load(fd)\n",
"df\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"-----"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:43.626658327Z",
"start_time": "2023-07-02T06:47:43.611434833Z"
}
},
"outputs": [],
"source": [
"# Pulizia ambiente\n",
"\n",
"try:\n",
" del fd\n",
"except NameError:\n",
" pass\n",
"\n",
"try:\n",
" del df\n",
"except NameError:\n",
" pass"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Elaborazione dei dati - `unimore_bda_3.processing`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In questa sezione si descrive come elaborare i `pd.DataFrame` caricati per unificarli in uno unico molto più grande, più facile da visualizzare e manipolare."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si crea un modulo Python chiamato `unimore_bda_3.processing` con tale scopo."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lo si importa all'interno di questo notebook:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:43.717295300Z",
"start_time": "2023-07-02T06:47:43.629417962Z"
}
},
"outputs": [],
"source": [
"from unimore_bda_3 import processing"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Elaborazione dei dati di un singolo prodotto - `process_game`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si definisce la funzione `process_game`, per raccogliere tutti i dati relativi a uno specifico videogioco in un unico `pd.DataFrame`, dato il suo titolo e il percorso alla cartella dei file contenenti i dataset.\n",
"\n",
"```python\n",
"def process_game(name: str, path: Path) -> pd.DataFrame:\n",
" ...\n",
"```\n",
"\n",
"Come prima cosa, essa determina il percorso di ciascun singolo file da processare:\n",
"\n",
"```python\n",
"steam_appid_path = path.joinpath(\"steam_appid.txt\")\n",
"gtrends_worldwide_path = path.joinpath(\"gtrends-worldwide.csv\")\n",
"steamdb_players_path = path.joinpath(\"steamdb-players.csv\")\n",
"steamdb_price_path = path.joinpath(\"steamdb-price.csv\")\n",
"itad_price_path = path.joinpath(\"itad-price.js\")\n",
"```\n",
"\n",
"In seguito, per ciascun percorso, utilizza il relativo *loader* per ottenere un `pd.DataFrame`:\n",
"\n",
"```python\n",
"with open(steam_appid_path) as fd:\n",
" steam_news: pd.DataFrame = loaders.steam.load(fd=fd)\n",
"\n",
"with open(gtrends_worldwide_path) as fd:\n",
" google_trends: pd.DataFrame = loaders.gtrends.load(fd=fd, query_name=name)\n",
"\n",
"with open(steamdb_players_path) as fd:\n",
" steamdb_players: pd.DataFrame = loaders.steamdb.load_players(fd=fd)\n",
"\n",
"with open(steamdb_price_path) as fd:\n",
" steamdb_price: pd.DataFrame = loaders.steamdb.load_price(fd=fd)\n",
"\n",
"with open(itad_price_path) as fd:\n",
" itad_prices: list[pd.DataFrame] = loaders.itad.load(fd=fd)\n",
"```\n",
"\n",
"Poi, utilizzando la seguente funzione di utility, effettua un outer join di tutti i `pd.DataFrame` recuperati:\n",
"\n",
"```python\n",
"def join_frames(*dfs: pd.DataFrame, **kwargs) -> pd.DataFrame:\n",
" \"\"\"\n",
" Join multiple :class:`pandas.DataFrame`s in a single expression.\n",
"\n",
" :param dfs: The :class:`pandas.DataFrame`s to join.\n",
" :param kwargs: Keyword arguments to pass to :meth:`pandas.DataFrame.join`.\n",
" :return: The resulting :class:`pandas.DataFrame`.\n",
" \"\"\"\n",
" if len(dfs) == 0:\n",
" return pd.DataFrame()\n",
" elif len(dfs) == 1:\n",
" return dfs[0]\n",
" else:\n",
" return dfs[0].join(dfs[1:], **kwargs)\n",
"```\n",
"\n",
"```python\n",
"dataframe: pd.DataFrame = utils.join_frames(steamdb_players, steamdb_price, google_trends, steam_news, *itad_prices)\n",
"```\n",
"\n",
"Successivamente, viene effettuato *forward fill* su diverse colonne, in quanto molti dei precedenti dataframe hanno valori solo in corrispondenza delle date in cui i valori sono cambiati:\n",
"\n",
"```python\n",
"dataframe[\"SteamDB · Steam\"].fillna(method=\"ffill\", inplace=True)\n",
"dataframe[\"Google Trends · Score\"].fillna(method=\"ffill\", inplace=True)\n",
"dataframe[\"ITAD · Best Price\"].fillna(method=\"ffill\", inplace=True)\n",
"dataframe[\"ITAD · Best Regular Price\"].fillna(method=\"ffill\", inplace=True)\n",
"dataframe[\"ITAD · Worst Regular Price\"].fillna(method=\"ffill\", inplace=True)\n",
"dataframe[\"ITAD · Historical Low\"].fillna(method=\"ffill\", inplace=True)\n",
"news_columns = list(filter(lambda c: c.startswith(\"Steam · Count of News tagged\"), dataframe.columns))\n",
"for news_col_name in news_columns:\n",
" dataframe[news_col_name].fillna(0, inplace=True)\n",
"```\n",
"\n",
"Si aggiungono poi alcuni dati derivati.\n",
"\n",
"Il primo di essi è una colonna booleana chiamata `Steam · Is there News?`, contenente `True` se in quel giorno è stato pubblicato un annuncio di qualsiasi tipo, e `False` altrimenti.\n",
"\n",
"```python\n",
"dataframe[\"Steam · Is there News?\"] = pd.Series(data=False, dtype=bool)\n",
"dataframe[\"Steam · Is there News?\"] = (dataframe[news_columns] > 0).any()\n",
"```\n",
"\n",
"Secondo, terzo, quarto, e quinto sono un gruppo di colonne contenente alcune metriche relative al loro massimo mai raggiunto:\n",
"\n",
"```python\n",
"dataframe[\"SteamDB · Relative concurrent players\"] = dataframe[\"SteamDB · Peak concurrent players\"] / dataframe[\"SteamDB · Peak concurrent players\"].max()\n",
"dataframe[\"SteamDB · Relative Steam price\"] = dataframe[\"SteamDB · Steam\"] / dataframe[\"SteamDB · Steam\"].max()\n",
"dataframe[\"ITAD · Relative Best Price\"] = dataframe[\"ITAD · Best Price\"] / dataframe[\"ITAD · Best Price\"].max()\n",
"```\n",
"\n",
"Come sesta e settima colonna, si calcola la differenza giornaliera di prezzo, rispettivamente con i dati di SteamDB (solo Steam) e IsThereAnyDeal (tutti i rivenditori):\n",
"\n",
"```python\n",
"dataframe[\"ITAD · Best price change from previous day\"] = dataframe[\"ITAD · Best Price\"].diff()\n",
"dataframe[\"SteamDB · Steam price change from previous day\"] = - dataframe[\"SteamDB · Steam\"].diff()\n",
"```\n",
"\n",
"Come fatto per gli annunci, come settima e ottava colonna si crea una colonna booleana che denota la presenza o l'assenza di uno sconto in un determinato giorno:\n",
"\n",
"```python\n",
"dataframe[\"SteamDB · Is there a discount?\"] = dataframe[\"SteamDB · Steam price change from previous day\"] < 0\n",
"dataframe[\"ITAD · Is there a discount?\"] = dataframe[\"ITAD · Best price change from previous day\"] < 0\n",
"```\n",
"\n",
"Infine, si combinano le colonne booleane per crearne altre due che combinano le precedenti per indicare la presenza di sconti *o* di un annuncio in un determinato giorno:\n",
"\n",
"```python\n",
"dataframe[\"Cumulative · Is something happening on Steam?\"] = dataframe[\"Steam · Is there News?\"] + dataframe[\"SteamDB · Is there a discount?\"]\n",
"dataframe[\"Cumulative · Is something happening?\"] = dataframe[\"Steam · Is there News?\"] + dataframe[\"SteamDB · Is there a discount?\"] + dataframe[\"ITAD · Is there a discount?\"]\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si esegue la funzione `process_game` sui dataset dei cinque videogiochi considerati:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:44.016906766Z",
"start_time": "2023-07-02T06:47:43.671112671Z"
}
},
"outputs": [
{
"data": {
"text/plain": " SteamDB · Peak concurrent players \\\n2016-12-01 11.0 \n2016-12-02 NaN \n2016-12-03 NaN \n2016-12-04 NaN \n2016-12-05 NaN \n... ... \n2023-06-25 35016.0 \n2023-06-26 30017.0 \n2023-06-27 29568.0 \n2023-06-28 28539.0 \n2023-06-29 28042.0 \n\n SteamDB · Day average of concurrent players \\\n2016-12-01 NaN \n2016-12-02 NaN \n2016-12-03 NaN \n2016-12-04 NaN \n2016-12-05 NaN \n... ... \n2023-06-25 26276.0 \n2023-06-26 22421.0 \n2023-06-27 21949.0 \n2023-06-28 21347.0 \n2023-06-29 21347.0 \n\n SteamDB · Player count flags SteamDB · Steam \\\n2016-12-01 NaN NaN \n2016-12-02 NaN NaN \n2016-12-03 NaN NaN \n2016-12-04 NaN NaN \n2016-12-05 NaN NaN \n... ... ... \n2023-06-25 NaN 9.89 \n2023-06-26 NaN 9.89 \n2023-06-27 NaN 9.89 \n2023-06-28 NaN 9.89 \n2023-06-29 NaN 9.89 \n\n SteamDB · Price flags Google Trends · Score \\\n2016-12-01 NaN 0.00 \n2016-12-02 NaN 0.00 \n2016-12-03 NaN 0.00 \n2016-12-04 NaN 0.00 \n2016-12-05 NaN 0.00 \n... ... ... \n2023-06-25 NaN 0.43 \n2023-06-26 NaN 0.43 \n2023-06-27 NaN 0.43 \n2023-06-28 NaN 0.43 \n2023-06-29 NaN 0.43 \n\n Steam · Count of News tagged no_tags \\\n2016-12-01 0.0 \n2016-12-02 0.0 \n2016-12-03 0.0 \n2016-12-04 0.0 \n2016-12-05 0.0 \n... ... \n2023-06-25 0.0 \n2023-06-26 0.0 \n2023-06-27 0.0 \n2023-06-28 0.0 \n2023-06-29 1.0 \n\n Steam · Count of News tagged patchnotes \\\n2016-12-01 0.0 \n2016-12-02 0.0 \n2016-12-03 0.0 \n2016-12-04 0.0 \n2016-12-05 0.0 \n... ... \n2023-06-25 0.0 \n2023-06-26 0.0 \n2023-06-27 0.0 \n2023-06-28 0.0 \n20
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>SteamDB · Peak concurrent players</th>\n <th>SteamDB · Day average of concurrent players</th>\n <th>SteamDB · Player count flags</th>\n <th>SteamDB · Steam</th>\n <th>SteamDB · Price flags</th>\n <th>Google Trends · Score</th>\n <th>Steam · Count of News tagged no_tags</th>\n <th>Steam · Count of News tagged patchnotes</th>\n <th>Steam · Count of News tagged hide_store</th>\n <th>Steam · Count of News tagged ModAct_1401078964_1677758714_0</th>\n <th>...</th>\n <th>Steam · Is there News?</th>\n <th>SteamDB · Relative concurrent players</th>\n <th>SteamDB · Relative Steam price</th>\n <th>ITAD · Relative Best Price</th>\n <th>ITAD · Best price change from previous day</th>\n <th>SteamDB · Steam price change from previous day</th>\n <th>SteamDB · Is there a discount?</th>\n <th>ITAD · Is there a discount?</th>\n <th>Cumulative · Is something happening on Steam?</th>\n <th>Cumulative · Is something happening?</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2016-12-01</th>\n <td>11.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>0.000236</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2016-12-02</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2016-12-03</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2016-12-04</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2016-12-05</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_deeprockgalactic = processing.process_game(\"Deep Rock Galactic\", Path(\"data/deeprockgalactic\"))\n",
"df_deeprockgalactic"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:44.333257903Z",
"start_time": "2023-07-02T06:47:44.017726541Z"
}
},
"outputs": [
{
"data": {
"text/plain": " SteamDB · Peak concurrent players \\\n2020-12-25 2354.0 \n2020-12-26 2867.0 \n2020-12-27 2931.0 \n2020-12-28 2921.0 \n2020-12-29 2757.0 \n... ... \n2023-06-25 786.0 \n2023-06-26 780.0 \n2023-06-27 718.0 \n2023-06-28 696.0 \n2023-06-29 651.0 \n\n SteamDB · Day average of concurrent players \\\n2020-12-25 NaN \n2020-12-26 NaN \n2020-12-27 NaN \n2020-12-28 NaN \n2020-12-29 NaN \n... ... \n2023-06-25 613.0 \n2023-06-26 584.0 \n2023-06-27 580.0 \n2023-06-28 566.0 \n2023-06-29 566.0 \n\n SteamDB · Player count flags SteamDB · Steam \\\n2020-12-25 NaN 16.79 \n2020-12-26 NaN 16.79 \n2020-12-27 NaN 16.79 \n2020-12-28 NaN 16.79 \n2020-12-29 NaN 16.79 \n... ... ... \n2023-06-25 NaN 16.79 \n2023-06-26 NaN 16.79 \n2023-06-27 NaN 16.79 \n2023-06-28 NaN 16.79 \n2023-06-29 NaN 16.79 \n\n SteamDB · Price flags Google Trends · Score \\\n2020-12-25 NaN NaN \n2020-12-26 NaN NaN \n2020-12-27 NaN NaN \n2020-12-28 NaN NaN \n2020-12-29 NaN NaN \n... ... ... \n2023-06-25 NaN 0.57 \n2023-06-26 NaN 0.57 \n2023-06-27 NaN 0.57 \n2023-06-28 NaN 0.57 \n2023-06-29 NaN 0.57 \n\n Steam · Count of News tagged no_tags ITAD · Best Price \\\n2020-12-25 0.0 16.79 \n2020-12-26 0.0 16.79 \n2020-12-27 0.0 16.79 \n2020-12-28 0.0 16.79 \n2020-12-29 0.0 16.79 \n... ... ... \n2023-06-25 0.0 12.59 \n2023-06-26 0.0 12.59 \n2023-06-27 0.0 12.59 \n2023-06-28 0.0 12.59 \n2023-06-29 0.0 16.79 \n\n ITAD · Best Regular Price ITAD · Worst Regular Price ... \\\n2020-12-25 16.79 16.79 ... \n2020-12-26 16.79 16.79 ... \n2020-12-27 16.79 16.79 ... \n2020-12-28 16.79 16.79 ... \n2020-12-29
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>SteamDB · Peak concurrent players</th>\n <th>SteamDB · Day average of concurrent players</th>\n <th>SteamDB · Player count flags</th>\n <th>SteamDB · Steam</th>\n <th>SteamDB · Price flags</th>\n <th>Google Trends · Score</th>\n <th>Steam · Count of News tagged no_tags</th>\n <th>ITAD · Best Price</th>\n <th>ITAD · Best Regular Price</th>\n <th>ITAD · Worst Regular Price</th>\n <th>...</th>\n <th>Steam · Is there News?</th>\n <th>SteamDB · Relative concurrent players</th>\n <th>SteamDB · Relative Steam price</th>\n <th>ITAD · Relative Best Price</th>\n <th>ITAD · Best price change from previous day</th>\n <th>SteamDB · Steam price change from previous day</th>\n <th>SteamDB · Is there a discount?</th>\n <th>ITAD · Is there a discount?</th>\n <th>Cumulative · Is something happening on Steam?</th>\n <th>Cumulative · Is something happening?</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2020-12-25</th>\n <td>2354.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>16.79</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>...</td>\n <td>False</td>\n <td>0.743525</td>\n <td>1.0</td>\n <td>1.000000</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2020-12-26</th>\n <td>2867.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>16.79</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>...</td>\n <td>False</td>\n <td>0.905559</td>\n <td>1.0</td>\n <td>1.000000</td>\n <td>0.0</td>\n <td>-0.0</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2020-12-27</th>\n <td>2931.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>16.79</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>...</td>\n <td>False</td>\n <td>0.925774</td>\n <td>1.0</td>\n <td>1.000000</td>\n <td>0.0</td>\n <td>-0.0</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2020-12-28</th>\n <td>2921.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>16.79</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>...</td>\n <td>False</td>\n <td>0.922615</td>\n <td>1.0</td>\n <td>1.000000</td>\n <td>0.0</td>\n <td>-0.0</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2020-12-29</th>\n <td>2757.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>16.79</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>...</td>\n <td>False</td>\n <td>0.870815</td>\n <td>1.0</td>\n <td>1.000000</td>\n <td>0.0</td>\n <td>-0.0</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <t
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_omori = processing.process_game(\"Omori\", Path(\"data/omori\"))\n",
"df_omori"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:45.346532655Z",
"start_time": "2023-07-02T06:47:44.332604310Z"
}
},
"outputs": [
{
"data": {
"text/plain": " SteamDB · Peak concurrent players \\\n2021-09-21 4202.0 \n2021-09-22 7046.0 \n2021-09-23 6694.0 \n2021-09-24 5837.0 \n2021-09-25 6301.0 \n... ... \n2023-06-26 497.0 \n2023-06-27 504.0 \n2023-06-28 457.0 \n2023-06-29 530.0 \n2023-06-30 719.0 \n\n SteamDB · Day average of concurrent players \\\n2021-09-21 NaN \n2021-09-22 NaN \n2021-09-23 NaN \n2021-09-24 NaN \n2021-09-25 NaN \n... ... \n2023-06-26 385.0 \n2023-06-27 387.0 \n2023-06-28 367.0 \n2023-06-29 395.0 \n2023-06-30 395.0 \n\n SteamDB · Player count flags SteamDB · Steam \\\n2021-09-21 NaN 11.24 \n2021-09-22 NaN 11.24 \n2021-09-23 NaN 11.24 \n2021-09-24 NaN 11.24 \n2021-09-25 NaN 11.24 \n... ... ... \n2023-06-26 NaN 12.49 \n2023-06-27 NaN 12.49 \n2023-06-28 NaN 12.49 \n2023-06-29 NaN 8.11 \n2023-06-30 NaN 8.11 \n\n SteamDB · Price flags Google Trends · Score \\\n2021-09-21 NaN NaN \n2021-09-22 NaN NaN \n2021-09-23 NaN NaN \n2021-09-24 NaN NaN \n2021-09-25 NaN NaN \n... ... ... \n2023-06-26 NaN 0.24 \n2023-06-27 NaN 0.24 \n2023-06-28 NaN 0.24 \n2023-06-29 NaN 0.24 \n2023-06-30 NaN 0.24 \n\n Steam · Count of News tagged workshop \\\n2021-09-21 0.0 \n2021-09-22 0.0 \n2021-09-23 0.0 \n2021-09-24 0.0 \n2021-09-25 0.0 \n... ... \n2023-06-26 0.0 \n2023-06-27 0.0 \n2023-06-28 0.0 \n2023-06-29 1.0 \n2023-06-30 0.0 \n\n Steam · Count of News tagged ModAct_1428110219_1685546438_0 \\\n2021-09-21 0.0 \n2021-09-22 0.0 \n2021-09-23 0.0 \n2021-09-24 0.0 \n2021-09-25 0.0 \n... ... \n2023-06-26 0.0
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>SteamDB · Peak concurrent players</th>\n <th>SteamDB · Day average of concurrent players</th>\n <th>SteamDB · Player count flags</th>\n <th>SteamDB · Steam</th>\n <th>SteamDB · Price flags</th>\n <th>Google Trends · Score</th>\n <th>Steam · Count of News tagged workshop</th>\n <th>Steam · Count of News tagged ModAct_1428110219_1685546438_0</th>\n <th>Steam · Count of News tagged mod_require_rereview</th>\n <th>Steam · Count of News tagged mod_reviewed</th>\n <th>...</th>\n <th>Steam · Is there News?</th>\n <th>SteamDB · Relative concurrent players</th>\n <th>SteamDB · Relative Steam price</th>\n <th>ITAD · Relative Best Price</th>\n <th>ITAD · Best price change from previous day</th>\n <th>SteamDB · Steam price change from previous day</th>\n <th>SteamDB · Is there a discount?</th>\n <th>ITAD · Is there a discount?</th>\n <th>Cumulative · Is something happening on Steam?</th>\n <th>Cumulative · Is something happening?</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2021-09-21</th>\n <td>4202.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>11.24</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>0.413542</td>\n <td>0.899920</td>\n <td>0.938990</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2021-09-22</th>\n <td>7046.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>11.24</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>0.693436</td>\n <td>0.899920</td>\n <td>0.895138</td>\n <td>-0.46</td>\n <td>-0.00</td>\n <td>False</td>\n <td>True</td>\n <td>False</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2021-09-23</th>\n <td>6694.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>11.24</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>0.658793</td>\n <td>0.899920</td>\n <td>0.895138</td>\n <td>0.00</td>\n <td>-0.00</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2021-09-24</th>\n <td>5837.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>11.24</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>0.574451</td>\n <td>0.899920</td>\n <td>0.938990</td>\n <td>0.46</td>\n <td>-0.00</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2021-09-25</th>\n <td>6301.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>11.24</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>0.620116</td>\n <td>0.899920</td>\n <td>0.938990</td>\n <td>0.00</td>\n <td>-0.00</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_potioncraft = processing.process_game(\"Potion Craft: Alchemist Simulator\", Path(\"data/potioncraft\"))\n",
"df_potioncraft"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:45.745192446Z",
"start_time": "2023-07-02T06:47:45.350526460Z"
}
},
"outputs": [
{
"data": {
"text/plain": " SteamDB · Peak concurrent players \\\n2020-09-23 1788.0 \n2020-09-24 1951.0 \n2020-09-25 1692.0 \n2020-09-26 1649.0 \n2020-09-27 1406.0 \n... ... \n2023-06-25 753.0 \n2023-06-26 621.0 \n2023-06-27 603.0 \n2023-06-28 645.0 \n2023-06-29 630.0 \n\n SteamDB · Day average of concurrent players \\\n2020-09-23 NaN \n2020-09-24 NaN \n2020-09-25 NaN \n2020-09-26 NaN \n2020-09-27 NaN \n... ... \n2023-06-25 504.0 \n2023-06-26 414.0 \n2023-06-27 405.0 \n2023-06-28 394.0 \n2023-06-29 394.0 \n\n SteamDB · Player count flags SteamDB · Steam \\\n2020-09-23 NaN 0.00 \n2020-09-24 NaN 0.00 \n2020-09-25 NaN 0.00 \n2020-09-26 NaN 0.00 \n2020-09-27 NaN 0.00 \n... ... ... \n2023-06-25 NaN 8.39 \n2023-06-26 NaN 8.39 \n2023-06-27 NaN 8.39 \n2023-06-28 NaN 8.39 \n2023-06-29 NaN 8.39 \n\n SteamDB · Price flags Google Trends · Score \\\n2020-09-23 NaN NaN \n2020-09-24 NaN NaN \n2020-09-25 NaN NaN \n2020-09-26 NaN NaN \n2020-09-27 NaN NaN \n... ... ... \n2023-06-25 NaN 0.09 \n2023-06-26 NaN 0.09 \n2023-06-27 NaN 0.09 \n2023-06-28 NaN 0.09 \n2023-06-29 NaN 0.09 \n\n Steam · Count of News tagged no_tags \\\n2020-09-23 2.0 \n2020-09-24 0.0 \n2020-09-25 0.0 \n2020-09-26 0.0 \n2020-09-27 0.0 \n... ... \n2023-06-25 0.0 \n2023-06-26 0.0 \n2023-06-27 0.0 \n2023-06-28 0.0 \n2023-06-29 0.0 \n\n Steam · Count of News tagged patchnotes ITAD · Best Price \\\n2020-09-23 0.0 11.99 \n2020-09-24 0.0 11.99 \n2020-09-25 0.0 11.99 \n2020-09-26 0.0 11.99 \n2020-09-27 0.0 11.99 \n... ... ... \n2023-06-25 0.0 8.39 \n2023-06-26
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>SteamDB · Peak concurrent players</th>\n <th>SteamDB · Day average of concurrent players</th>\n <th>SteamDB · Player count flags</th>\n <th>SteamDB · Steam</th>\n <th>SteamDB · Price flags</th>\n <th>Google Trends · Score</th>\n <th>Steam · Count of News tagged no_tags</th>\n <th>Steam · Count of News tagged patchnotes</th>\n <th>ITAD · Best Price</th>\n <th>ITAD · Best Regular Price</th>\n <th>...</th>\n <th>Steam · Is there News?</th>\n <th>SteamDB · Relative concurrent players</th>\n <th>SteamDB · Relative Steam price</th>\n <th>ITAD · Relative Best Price</th>\n <th>ITAD · Best price change from previous day</th>\n <th>SteamDB · Steam price change from previous day</th>\n <th>SteamDB · Is there a discount?</th>\n <th>ITAD · Is there a discount?</th>\n <th>Cumulative · Is something happening on Steam?</th>\n <th>Cumulative · Is something happening?</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2020-09-23</th>\n <td>1788.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2.0</td>\n <td>0.0</td>\n <td>11.99</td>\n <td>15.99</td>\n <td>...</td>\n <td>True</td>\n <td>0.916453</td>\n <td>0.000000</td>\n <td>0.749844</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>True</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2020-09-24</th>\n <td>1951.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>11.99</td>\n <td>15.99</td>\n <td>...</td>\n <td>False</td>\n <td>1.000000</td>\n <td>0.000000</td>\n <td>0.749844</td>\n <td>0.0</td>\n <td>-0.0</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2020-09-25</th>\n <td>1692.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>11.99</td>\n <td>15.99</td>\n <td>...</td>\n <td>False</td>\n <td>0.867248</td>\n <td>0.000000</td>\n <td>0.749844</td>\n <td>0.0</td>\n <td>-0.0</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2020-09-26</th>\n <td>1649.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>11.99</td>\n <td>15.99</td>\n <td>...</td>\n <td>False</td>\n <td>0.845208</td>\n <td>0.000000</td>\n <td>0.749844</td>\n <td>0.0</td>\n <td>-0.0</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2020-09-27</th>\n <td>1406.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>11.99</td>\n <td>15.99</td>\n <td>...</td>\n <td>False</td>\n <td>0.720656</td>\n <td>0.000000</td>\n <td>0.749844</td>\n <td>0.0</td>\n <td>-0.0</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <t
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_untitledgoosegame = processing.process_game(\"Untitled Goose Game\", Path(\"data/untitledgoosegame\"))\n",
"df_untitledgoosegame"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:51.557452316Z",
"start_time": "2023-07-02T06:47:45.732597252Z"
}
},
"outputs": [
{
"data": {
"text/plain": " SteamDB · Peak concurrent players \\\n2016-02-01 11105.0 \n2016-02-02 NaN \n2016-02-03 NaN \n2016-02-04 NaN \n2016-02-05 NaN \n... ... \n2023-06-02 14458.0 \n2023-06-03 16388.0 \n2023-06-04 17143.0 \n2023-06-05 14380.0 \n2023-06-06 9423.0 \n\n SteamDB · Day average of concurrent players \\\n2016-02-01 NaN \n2016-02-02 NaN \n2016-02-03 NaN \n2016-02-04 NaN \n2016-02-05 NaN \n... ... \n2023-06-02 10378.0 \n2023-06-03 12646.0 \n2023-06-04 13302.0 \n2023-06-05 10319.0 \n2023-06-06 10319.0 \n\n SteamDB · Player count flags SteamDB · Steam \\\n2016-02-01 NaN NaN \n2016-02-02 NaN NaN \n2016-02-03 NaN NaN \n2016-02-04 NaN NaN \n2016-02-05 NaN NaN \n... ... ... \n2023-06-02 NaN 32.0 \n2023-06-03 NaN 32.0 \n2023-06-04 NaN 32.0 \n2023-06-05 NaN 32.0 \n2023-06-06 NaN 32.0 \n\n SteamDB · Price flags Google Trends · Score \\\n2016-02-01 NaN 0.21 \n2016-02-02 NaN 0.21 \n2016-02-03 NaN 0.21 \n2016-02-04 NaN 0.21 \n2016-02-05 NaN 0.21 \n... ... ... \n2023-06-02 NaN 0.40 \n2023-06-03 NaN 0.40 \n2023-06-04 NaN 0.40 \n2023-06-05 NaN 0.40 \n2023-06-06 NaN 0.40 \n\n Steam · Count of News tagged no_tags \\\n2016-02-01 0.0 \n2016-02-02 0.0 \n2016-02-03 0.0 \n2016-02-04 0.0 \n2016-02-05 0.0 \n... ... \n2023-06-02 0.0 \n2023-06-03 0.0 \n2023-06-04 0.0 \n2023-06-05 0.0 \n2023-06-06 0.0 \n\n Steam · Count of News tagged patchnotes \\\n2016-02-01 0.0 \n2016-02-02 0.0 \n2016-02-03 0.0 \n2016-02-04 0.0 \n2016-02-05 0.0 \n... ... \n2023-06-02 0.0 \n2023-06-03 0.0 \n2023-06-04 0.0 \n2023-06-05 0.0 \n20
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>SteamDB · Peak concurrent players</th>\n <th>SteamDB · Day average of concurrent players</th>\n <th>SteamDB · Player count flags</th>\n <th>SteamDB · Steam</th>\n <th>SteamDB · Price flags</th>\n <th>Google Trends · Score</th>\n <th>Steam · Count of News tagged no_tags</th>\n <th>Steam · Count of News tagged patchnotes</th>\n <th>Steam · Count of News tagged steam_award_vote_request</th>\n <th>Steam · Count of News tagged mod_hide_library_overview</th>\n <th>...</th>\n <th>Steam · Is there News?</th>\n <th>SteamDB · Relative concurrent players</th>\n <th>SteamDB · Relative Steam price</th>\n <th>ITAD · Relative Best Price</th>\n <th>ITAD · Best price change from previous day</th>\n <th>SteamDB · Steam price change from previous day</th>\n <th>SteamDB · Is there a discount?</th>\n <th>ITAD · Is there a discount?</th>\n <th>Cumulative · Is something happening on Steam?</th>\n <th>Cumulative · Is something happening?</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2016-02-01</th>\n <td>11105.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.21</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>0.320029</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2016-02-02</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.21</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2016-02-03</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.21</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2016-02-04</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.21</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>2016-02-05</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.21</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>False</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n <td>False</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_factorio = processing.process_game(\"Factorio\", Path(\"data/factorio\"))\n",
"df_factorio"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Analisi esplorativa"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In questa sezione si effettuano analisi e rappresentazioni preliminari sui dataframe elaborati per investigare sulle ipotesi che questa ricerca ha come obiettivo di verificare."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ai fini di unificare le impostazioni utilizzate dai grafici, si definisce qui un `dict` che le contiene tutte, che sarà successivamente passato ai `so.Plot` attraverso la funzione `theme`."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:51.661117743Z",
"start_time": "2023-07-02T06:47:51.558483656Z"
}
},
"outputs": [],
"source": [
"theme = {\n",
" **sb.axes_style(\"whitegrid\"),\n",
" \"patch.linewidth\": 1.5,\n",
" \"figure.figsize\": (16, 9),\n",
" \"figure.dpi\": 64,\n",
"}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Visualizzazione del numero di giocatori concorrenti"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si ricreano con `seaborn` i grafici dello storico dei giocatori concorrenti che SteamDB presenta nelle pagine dei prodotti."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:51.679246554Z",
"start_time": "2023-07-02T06:47:51.598228104Z"
}
},
"outputs": [],
"source": [
"def plot_concurrent_players(name: str, df: pd.DataFrame) -> so.Plot:\n",
" return (\n",
" so.Plot(\n",
" data=df.reset_index(names=\"Date\"),\n",
" x=\"Date\",\n",
" y=\"SteamDB · Peak concurrent players\",\n",
" )\n",
" .add(\n",
" so.Area(\n",
" alpha=0.6,\n",
" )\n",
" )\n",
" .scale(\n",
" x=so.Temporal()\n",
" .tick(locator=mpld.YearLocator()),\n",
" y=so.Continuous()\n",
" .tick(locator=tick.AutoLocator()),\n",
" )\n",
" .label(\n",
" title=f\"Peak concurrent players over time of {name}\",\n",
" )\n",
" .theme(theme)\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:52.107089451Z",
"start_time": "2023-07-02T06:47:51.598723331Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdebwcVZk//k9135t9BxJZIotCgkLEURAUkQBJQIVgFFSG6IgjOjOJv3FQYYDBUVREcQHU0S8uL8FRgTEDjCKyic4oiIgYAwEEEgJkubm5W6+1nHN+f1Sdqurb1d3VnV6quz/veY3c3PRyurruTT/1POd5DKWUAhERERERERF1nVSnF0BEREREREREjWFQT0RERERERNSlGNQTERERERERdSkG9URERERERERdikE9ERERERERUZdiUE9E1GeWLFmC1atX48wzz8Q555yDTZs2NfxYp5xyCl588cUmrq57bN68Gffee29D9+3n47Zhw4aS1/7jH/8YP/7xj9u+jpGREZx77rk4++yzcdttt5X83YYNG3Dcccfh7LPPxqpVq3DOOefglltuadva1q5dixUrVuCss87C6aefjptvvrnhx9qwYQMuueSSWLe99dZbceaZZ+L000/H2WefjX/8x3/E008/XfN+S5YsaXh99957LzZv3uz/+b777sO1117b8OMREfWjgU4vgIiI2u/2228HAPzwhz/E5ZdfXhbU9CopJQzDgGEY/vccx8HAQP3/HG7evBkPP/wwTjvttGYusWkafV2tXsN///d/48ADD8RBBx0EAHjve9/biaXhoYcewgEHHICvfe1rkX9/yimn4Atf+AIA4Nlnn8VHP/pRjI2N4cILL2zL+j772c/iDW94A5555hmcffbZOPnkk7Fo0aKWPd9NN92EW265Bd/85jexePFiAMCDDz6IrVu34ogjjmjZ895777047rjjcOSRRwIATj31VJx66qktez4iol7EoJ6IqI+dcMIJuOaaawAAjzzyCL7yla+gWCxi+vTp+PSnP41XvvKV2Lx5Mz796U/DNE0IIfDxj38cJ510UsnjKKVw1VVXYWxsDJ///OfLArkf/ehH+PGPfwzDMDB37lzcdNNNsG0bX/jCF/D73/8eAPC2t70N//AP/wDAzVS+5jWvwSOPPIKhoSFceOGFeM973gMAePjhh/GlL30JpmkinU7jq1/9Knbt2oWvf/3ruOmmmwC42cmHH34YX/jCF7Bhwwb84he/gGEYeOGFF/CjH/0Ixx9/PNavX4/7778f73znO3HKKafgM5/5DIaGhiCEwD/90z9hxYoVePHFF7F27VqsXLkSDz74IAzDwHXXXYf58+fjuuuuQz6fx+rVq3H66af7a9fWrl2LV7/61Xj44YeRzWaxdu1arF27tuw9+NznPodHH30UpmliyZIl+PznP48pU6bg9NNPx3/8x3/gsMMOAwD867/+K/7mb/4G55xzDu655x7ccMMNsG0bCxYswOc//3ksWrQI119/PbZu3YqhoSGMj4/j5ptvxsc//nG88MILUErhpJNOwic+8YmyNdxyyy248cYbYRgGli5dik996lMwDAOnnXYa7r33XsycORMAcMEFF+D9738/3vKWt+DHP/4x/uu//gtCCBx88MH43Oc+h1mzZuGSSy7BlClT8PTTT2PmzJn47ne/6z/Pbbfdhk2bNuHyyy/HjBkz8MUvfhF33303AGD9+vW4/vrr8cILL2B4eBhbt27FqlWrcNxxx+Hb3/42hoaGcOmll/oXUSodgziv7emnn8YXv/hF//378pe/jFe+8pXlPyCeV7ziFbj00ktx0UUX4UMf+hAMw6j4+sfHx3HllVdi69atsCwL733ve/0LF0uWLMH69evxy1/+EkopfOpTn8Kxxx5b8XkB4JWvfCXmzJmDXbt2YdGiRXj00Ufx+c9/HqZpYt68efjMZz6DQw89FED0z1nY008/jYsuugif+cxn8NrXvrbk77797W/ji1/8oh/QA+7vB+3//u//cN1118GyLKTTafz7v/87jj766LL1/vM//zO2bduGYrGIN77xjbj88ssBAKZp4uqrr8bDDz+MVCqFE088ESeeeCLuv/9+PPTQQ/jBD36Aj3/849i9e7f/s6uUwvXXX4977rkHhmHg8MMPx5e//OWqx4uIqC8pIiLqK0cccYT/9Te+8Q317ne/W42Ojqp3vetdamxsTCml1KOPPqrOPfdcpZRSmUxGWZallFJq+/bt6uSTT1ZSSqWUUsuXL1dbtmxR//Iv/6Kuuuoq//thv/vd79Tb3/52NTo6qpRSamRkRCml1I033qg+/OEPK8dxVD6fV+94xzvUAw88oJRS6vzzz1eXXHKJklKq7du3q7/5m79Rtm2rkZER9aY3vUlt3rxZKaVUsVhUuVxOPfTQQ+r888/3n/OnP/2puvjii/2vjz32WLVjx46SY/DDH/7Q//P73/9+9cQTTyillBobG1OnnnqqGhsbUy+88II64ogj1EMPPaSUUupb3/qWuvzyy8ueI8r555+v/vEf/1EJIdTo6Khavny5v+7ly5erF154oeR4KKXUpz/9aX9d3//+99VVV12llFJqfHxcvelNb1K5XE5t2bJFrV27VhWLRaWUUv/zP/+jPvaxjymllLruuuvUypUr1fj4uFJKqV/+8pfq3/7t3/zH1+9v2ObNm9Xy5cvVnj17lFJKXXHFFerqq69WSil10UUXqf/+7/9WSim1a9cudeKJJyrHcdRDDz2k/vmf/1nZtu0fl2uuuUYppdTFF1+szjvvPGWaZsXjoo+nXvN1113nf33mmWeqfD6v8vm8OuGEE9SVV16plFLqj3/8o1q5cqVSSlU9BnFfW7X3L+rvxsfH1RFHHKF2795d8/Xfd999Sin3/Fy9erV65plnlFLuefe9731PKaXUn//8Z3XSSSdFHqfwMXr00UfVqlWrlGmayjRNddJJJ6k//elPSimlfv7zn6t3vvOdSqnKP2f6tfzhD39Qb3/729Vf//rXsucbHh5WRxxxhH/eRBkbG1NCCKWUUhs3blRr1qzx/y78O0U/rxBCfeQjH1G/+tWvlFJKffWrX1Wf/OQnleM4Jbe7+OKL1U9/+lP//uFjf8stt6i/+7u/U4VCoeQ+RERUipl6IqI+tHr1aiilcMABB+ALX/gCHnvsMTz//PN43/ve599mfHwcAJDL5XDZZZfhmWeewcDAAHbv3o3h4WHst99+AICPfexjOOWUU7B+/frI5/rNb36DNWvWYN68eQCA+fPnAwB+//vf413vehfS6TSmT5+Os846Cw8++CDe8pa3AADOOOMMGIaB/fffH7NmzcLw8DA2b96Mo446CkuXLgUATJ06NdbrPf744/Gyl72s5Htnn322//oeeeSRkn3HjuNg27ZtmD9/Pvbdd1+84Q1vAAAsW7YMDz74YKznBIB3vOMdSKVSmDdvHk477TQ8/PDD/tq1++67Dz/60Y9g2zYymQwcxwEArFmzBmeddRb+5V/+BbfffjtWrFiBGTNm4Le//S2effZZnHvuuQDcLQU6kw64ZeNz5swBACxduhTXXHMNrr76ahx//PE48cQTy9b48MMP49RTT8WCBQsAAO95z3tw2WWXAXDPk+9///s4++yz8bOf/Qynn3460uk0HnjgAfzpT3/CO9/5TgCAbdsl+6rPOOMMTJkyJfZxCnvLW96C6dOnAwAOOeQQ/3w46qij8MILLwBAzWMQ57XVSykFADAMo+rrf+CBB7B582Z/X3gmk8Fzzz2HV7ziFQCAd73rXQDcc2n+/Pl47rnnys4JALj88suRTqexdetWfOlLX8KUKVPw5JNPYt68eTjmmGMAAG9961vxqU99CtlstuLPGQD8+c9/xp/+9Cd8//vfxwEHHFDztY6OjuLv/u7vUCwW8eY3vxmXX345hoeH8YlPfALbt29HOp3Gc889F3nfW265Bb/4xS8ghMDIyAhe+9rX4uSTT8ZvfvMbXHnllUin02Xrq+R///d/8d73vhfTpk2LfR8ion7EoJ6IqA/pPfXali1b8NrXvhbf/va3y27
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_concurrent_players(\"Deep Rock Galactic\", df_deeprockgalactic).show()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:52.503975057Z",
"start_time": "2023-07-02T06:47:52.108538523Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdd5xkZZU//s8NVV2dJsIMaUgCAziO6AKCujJDGliVQVRkUXQV0yoYwBVWUX+uAqIYAHV3vxhWcFVEkUEXlSS4i0gUx4GBASanzpWrbnqe3x83VLpdXV1dsfvzfr18SVenp3uqb93znPOco0gpJYiIiIiIiIio66jtXgARERERERER1YdBPREREREREVGXYlBPRERERERE1KUY1BMRERERERF1KQb1RERERERERF2KQT0REbXE8uXLsXbtWrz5zW/G29/+dmzYsKHur3Xqqadi586dDVxd99i4cSPuu+++uj53Lv/e7rjjjpKf/ac//Sl++tOftnwd4+PjOP/883HuuefizjvvrHj/M888g4suughnnnkmTjvtNHzxi19ELpcL3r98+XK8+93vLvmcq666CsuXLw9+PsdxcMMNN+CMM87AWWedhbe+9a3405/+FHz8TTfdhNe97nVYu3Yt1qxZgy984QtwHAcAsHPnTpx66qlN+MmJiKhZGNQTEVHLrFu3Dr/+9a+xdu1aXHXVVe1eTssIIVA+Qda27bq+1kyC+lao9+dq9hp+9atfYdeuXcHb//iP/4h//Md/bOWyAAB//vOfccABB+DOO+/EueeeW/K+8fFxvP/978f73vc+3HPPPfjd736HTCaDz3/+8yUfl06nsWfPHgBAPp/H448/jqVLlwbvv+mmm/DXv/4Vd955J373u9/hC1/4Ai677DK89NJLwcdccMEFWLduHX71q1/hkUcewe9+97vm/dBERNRUersXQEREc8/JJ5+M66+/HgDwxBNP4Bvf+Aby+Tx6e3vxxS9+EUcccQQ2btyIL37xizAMA47j4FOf+hTe8IY3lHwdKSWuvfZaxONxXHPNNdD10pe1n/zkJ/jpT38KRVEwf/583HrrrbAsC1/5ylfw6KOPAgDe+MY34p//+Z8BABdddBFe+cpX4oknnsDw8DA++MEP4oILLgAAPPbYY/ja174GwzCgaRq++c1vYmhoCN/+9rdx6623AnCzwY899hi+8pWv4I477sBvf/tbKIqCHTt24Cc/+QlOOukkXHrppXjggQfw1re+Faeeeir+7d/+DcPDw3AcBx/96EdxxhlnYOfOnUG29pFHHoGiKLjxxhuxcOFC3Hjjjchms1i7di3OOuusYO2+iy66CC9/+cvx2GOPIZ1O46KLLsJFF11U8W9w9dVX46mnnoJhGFi+fDmuueYaRKNRnHXWWfj3f/93HH744QCAf/3Xf8WrX/1qvP3tb8e9996Lm2++GZZlYdGiRbjmmmuwdOlS3HTTTdi6dSuGh4eRSCRw22234VOf+hR27NgBKSXe8IY34F/+5V8q1vDzn/8ct9xyCxRFwdFHH40vfOELUBQFp59+Ou677z709/cDAN73vvfhPe95D0455RT89Kc/xS9+8Qs4joNDDjkEV199NQYGBnDllVciGo1i06ZN6O/vx/e///3g+9x5553YsGEDrrrqKvT19eGrX/0q7rnnHgDApZdeiptuugk7duzA6Ogotm7dijVr1uDEE0/Ef/7nf2J4eBif+cxncPrppwPApL+DWn62TZs24atf/Wrw7/f1r38dRxxxRPA5//3f/43Xvva1WL16NQAgEongqquuwimnnIIdO3Zg2bJlAIC1a9di3bp1+PCHP4z77rsPq1atwr333gvADfJ/8IMf4K677gp+fytXrsQ73vEO3HzzzfjKV75Sss6+vj4ce+yx2L17d8XPQEREXUISERG1wFFHHRX893e+8x35jne8Q05MTMi3ve1tMh6PSymlfOqpp+T5558vpZQylUpJ0zSllFLu3r1brlq1SgohpJRSrl69Wm7ZskVedtll8tprrw0eL/anP/1JvulNb5ITExNSSinHx8ellFLecsst8kMf+pC0bVtms1n5lre8RT744INSSinf9a53ySuvvFIKIeTu3bvlq1/9amlZlhwfH5eve93r5MaNG6WUUubzeZnJZOSf//xn+a53vSv4nr/85S/lFVdcEfz3CSecIPfs2VPyO/jxj38cvP2e97xHPvvss1JKKePxuDzttNNkPB6XO3bskEcddZT885//LKWU8j/+4z/kVVddVfE9wrzrXe+SH/nIR6TjOHJiYkKuXr06WPfq1avljh07Sn4fUkr5xS9+MVjXD3/4Q3nttddKKaVMJBLyda97ncxkMnLLli3yoosukvl8Xkop5a9//Wv5yU9+Ukop5Y033ijPPPNMmUgkpJRS/v73v5ef+9zngq/v//sW27hxo1y9erUcGxuTUkr5+c9/Xl533XVSSikvv/xy+atf/UpKKeXQ0JB8/etfL23bln/+85/lJz7xCWlZVvB7uf7666WUUl5xxRXywgsvlIZhTPp78X+f/ppvvPHG4L/f/OY3y2w2K7PZrDz55JPll770JSmllE8++aQ888wzpZSy6u+g1p+t2r/fJZdcIv/rv/6r4vFzzjlH3n///VJK9zk0NjYm3/SmN0kppbz44ovls88+G/zbPvfcc/L444+v+Br33nuvfMtb3lLxs4+NjcmzzjpLbtq0SUop5Y4dO+Tq1atD10dERJ2JmXoiImqZtWvXQkqJAw44AF/5ylfw9NNPY9u2bSVnhBOJBAAgk8ngs5/9LF588UXouo6RkRGMjo5i3333BQB88pOfxKmnnopLL7009Hv98Y9/xHnnnYcFCxYAABYuXAgAePTRR/G2t70Nmqaht7cX55xzDh555BGccsopAICzzz4biqJg//33x8DAAEZHR7Fx40asWLECRx99NACgp6enpp/3pJNOwn777VfymF9ynclk8MQTT+DKK68M3mfbNrZv346FCxdin332wWte8xoAbqb1kUceqel7AsBb3vIWqKqKBQsW4PTTT8djjz0WrN13//334yc/+Qksy0IqlQpK1s877zycc845uOyyy7Bu3TqcccYZ6Ovrw8MPP4yXXnoJ559/PgD3SIGfCQbc8/rz5s0DABx99NG4/vrrcd111+Gkk07C61//+oo1PvbYYzjttNOwaNEiAG45+Gc/+1kA7vPkhz/8Ic4991z85je/wVlnnQVN0/Dggw/iL3/5C9761rcCACzLwvLly4OvefbZZyMajdb8eyp2yimnoLe3FwBw6KGHBs+HFStWYMeOHQAw5e+glp+tERYtWoQDDzwQ9913H8bGxnDMMcdM+2v87Gc/wz333IMtW7bgLW95C4488siGrY+IiFqLQT0REbXMunXrSt7esmULXvWqV+E///M/Kz72W9/6Fo488kh861vfgqIoeM1rXgPDMIL3H3/88fjzn/+M973vfaGBVb2KA3ZN06qeEdc0DUKI4O3i9QFuaXM5f61SSkQiEdx5551QFKXkY3bu3FmyDlVVg0ZmjbBz507ccMMN+OUvf4klS5bg1ltvxTPPPAMAmDdvHl772tfid7/7HX7+85/ja1/7WrDeNWvWVJzv9hX/rAcffDB++ctf4uGHH8add96JW265paQcfiqvfe1rcdVVV2F4eBh33XUXvvzlLwfvu+iii3DxxRdPuYbpKt4M0DQteLv4dz/V72CmjjrqKKxfv77ksWQyie3bt1cE3eeeey4++9nP4kMf+lDJ44cccggMw8DWrVtx6KGHBo//7W9/w1FHHRW8fcEFF+DSSy/Fjh078I53vAOnnXYaVq1a1fCfiYiImo+N8oiIqG2OO+44PPvss0FAKYTAs88+CwBIpVLYf//9oSgKfve73yEej5d87nve8x6ceeaZ+MAHPoBMJlPxtd/whjfgjjvuCDL/ExMTANzs+S9/+Us4joNcLodf//rXOPnkk6dc54YNG/Dcc88BcIP3bDaLZcuWYcuWLchkMrAsKzjXXIuBgQGsWLECP/nJT4LHnnnmmYqGemGfl06
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_concurrent_players(\"OMORI\", df_omori).show()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:52.782807777Z",
"start_time": "2023-07-02T06:47:52.504494609Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAC8wklEQVR4nOzdeXycdbn///d93zOTydakaUloS9kUWpClegBZVFqgraxFFPQg1SOo+NVWRDgHFITDEUUUXEBARY9Y+IEctAIKspaySctSSmlpC4XuS9JmTyaz3ff9+2Myk6SZTKZNZn89Hw8f0pkk80mazsz7vq7P9TFc13UFAAAAAAAKjpnrBQAAAAAAgL1DqAcAAAAAoEAR6gEAAAAAKFCEegAAAAAAChShHgAAAACAAkWoB4AMmTJliubMmaOzzz5b559/vlauXLnXX+uUU07Rli1bRnF1hWP16tV65pln9upzS/nntnDhwgHf+wMPPKAHHngg6+toaWnRBRdcoHPPPVcPP/zwgPsWLlyo4447TnPmzNGnP/1pXX311QqHwym/Xja+r4ceekhnnXWWzjjjDH3mM5/R9ddfr56enj3+Ov/5n/+ps846SzfeeKOeeeYZrV69eo8+/5e//KWOOOIItbe3J27bsmWLTjnllJSft3TpUs2dO3eP15uudH7mt99++5D3hUIhXXPNNTrrrLN09tln65xzztErr7yS9tfeEwsXLtTVV1897Mfdc8896ujoGLXHBYBs8uR6AQBQzB555BFJ0n333adrr712UKgpVo7jyDAMGYaRuC0ajcrj2fOXndWrV+vVV1/VaaedNppLHDV7+31leg1/+9vfNGnSJO23336SpH//93/PxdK0ZMkSTZw4Ub/85S+T3n/KKafoJz/5icLhsL70pS/pgQce0Je//OUhv16mv6/7779fDzzwgH7zm99ov/32k+u6evzxx9Xd3a3y8vIBH2vbtizLSvp1du3apX/96196+eWXJUlXX321jjvuOB122GFprcN1XT366KP66Ec/qscee0wXXnjhyL6xUZTOz/zXv/615s+fn/S+BQsWSJIeffRRmaap1tbWxEWTXP2eLliwQKeddprGjBmzR5+XD//+AYBnIQDIghNOOEG33HKLJOn111/Xz3/+cwWDQZWXl+uGG27Qhz/8Ya1evVo33HCDQqGQbNvWlVdeqU996lMDvo7rurrpppvU1tamH//4x4PeTMYDiWEYqqmp0b333qtIJKKf/OQnWrp0qSTpzDPP1P/7f/9PkjR37lwdffTRev3119XU1KSvf/3r+sIXviBJevXVV/Wzn/1MoVBIlmXpF7/4hRobG/XrX/9a9957r6RYFezVV1/VT37yEy1cuFD//Oc/ZRiGNm/erPvvv1/HH3+85s+fr0WLFumzn/2sTjnlFP3P//yPmpqaZNu2vvWtb2nmzJnasmWL5s6dq1mzZumVV16RYRi67bbbNHbsWN12220KBAKJam587XFz587VRz7yEb366qvq6urS3Llzk1Ypf/SjH2nZsmUKhUKaMmWKfvzjH8vn8+nTn/607rrrLh188MGSpO9973v62Mc+pvPPP19PP/207r77bkUiEdXV1enHP/6xGhoadPvtt2vDhg1qampSe3u7HnzwQV155ZXavHmzXNfVpz71Kf3nf/7noDX83//9nxYsWCDDMDR16lRdf/31MgxDp512mp555hlVVlZKki6++GJ9+ctf1sknn6wHHnhAf/nLX2Tbtg444AD96Ec/UlVVla6++mr5fD69++67qqys1B/+8IfE4zz88MNauXKlrr32WlVUVOinP/2pnnrqKUnS/Pnzdfvtt2vz5s3atWuXNmzYoNmzZ+u4447Tb3/7WzU1Nen73/9+4iLKUD+DdL63d999Vz/96U8Tf3+33nqrPvzhDw/+ByLJ5/Pp3/7t37Rhw4Yhf2eH+766uroSjytJX/7yl/W5z31OUuziwWc+8xm98MILamlp0fe//32deuqpg9Zx11136aabbkpcNDAMQ2eeeaakWAX8lltu0eTJk/Xee+/p5ptv1ksvvaQnn3xS4XBY++67r26++WZVVVXpS1/6ktrb2zVnzhx95Stf0aJFi7RkyRL96U9/0pVXXqlPfvKTSX8OcUuXLlVDQ4O++c1v6he/+MWQof7JJ5/UXXfdJcdx5PP59Mc//lGSFA6HddVVV2nVqlWqrq7WHXfcobq6OoVCIf30pz/VW2+9pXA4rFNPPVWXXXZZ4mc0Z84cvfTSS2ppadGPf/xjPf3001q6dKkqKip01113qa6uLlGFnz9/vp5++mnddtttMk1TjuPozjvv1J/+9CdJ0pw5c+Tz+fTQQw8NWHNjY6PGjx8v04w1jI4dO1Zjx46VpAFfO93f06VLlw75vNTfUM+xv/vd7xLPf16vV/fcc4/C4bCuu+46bdu2TZZl6Tvf+Y6mT58uKdaF1f957Ytf/GLKv0sAyDgXAJARhx56aOK/77jjDvfzn/+829ra6n7uc59z29raXNd13WXLlrkXXHCB67qu29nZ6YbDYdd1XXfbtm3u9OnTXcdxXNd13RkzZrjr1693v/vd77o33XRT4vb+/vWvf7lnnXWW29ra6rqu67a0tLiu67oLFixwL730UjcajbqBQMD9zGc+4y5evNh1Xde96KKL3Kuvvtp1HMfdtm2b+7GPfcyNRCJuS0uLe9JJJ7mrV692Xdd1g8Gg293d7S5ZssS96KKLEo/517/+1b3qqqsS/33ssce627dvH/AzuO+++xJ//vKXv+y+8847ruu6bltbm3vqqae6bW1t7ubNm91DDz3UXbJkieu6rvub3/zGvfbaawc9RjIXXXSR+81vftO1bdttbW11Z8yYkVj3jBkz3M2bNw/4ebiu695www2Jdf3xj390b7rpJtd1Xbe9vd096aST3O7ubnf9+vXu3Llz3WAw6Lqu6/797393L7/8ctd1Xfe2225zZ82a5ba3t7uu67pPPvmk+4Mf/CDx9eN/v/2tXr3anTFjhtvc3Oy6ruted9117s033+y6ruteccUV7t/+9jfXdV23sbHR/cQnPuFGo1F3yZIl7ne+8x03Eokkfi633HKL67que9VVV7kXXnihGwqFhvy5xH+e8TXfdtttif8+++yz3UAg4AYCAfeEE05wf/jDH7qu67pvvPGGO2vWLNd13ZQ/g3S/t1R/f/3v6+zsdM8991z3wQcfHPZ3dqjv66abbnKvv/5613Vdt7m52Z0xY4a7Zs0a13Vjvwu3336767qxf3fx77G/Xbt2uYceemji73V3S5YscQ8//PDE75frDvy9+v3vf+/+5Cc/cV3XdTdv3uzOmDEjcd9VV13l/vWvf038eceOHe4555yT9HHiH3///fe7tm2706dPdz/44INBX3fdunXuySef7G7bti3xMwyHw+6SJUvcI4880l23bp3ruq77gx/8wL3rrrsSP68FCxa4ruu60WjU/epXv+q+8MILiZ/RHXfc4bqu6/7zn/90p02b5r722muu67rutddeO+BrxH/mZ511ltvY2Oi6bux5oqenx3Xdgc9/u1u9erV74oknunPmzHH/53/+x3355ZcT9+3N7+lwz0v9f8dSPcfGnytc13XnzZvn/u53v3Nd13U3btzonnjiie6uXbsS31v/5zUAyDUq9QCQQXPmzJHrupo4caJ+8pOfaPny5dq4caO+9KUvJT4mvl+2u7tb11xzjdatWyePx6OdO3dq165d2meffSRJl19+uU455ZQhW1pfeOEFnXfeeaqtrZWkROVr6dKl+tznPifLslReXp7Yv3ryySdLkk4//XQZhqEJEyaoqqpKu3bt0urVq3XEEUdo6tSpkqSysrK0vt/jjz9e++6774Dbzj333MT39/rrrw/Y3xqNRrVp0yaNHTtW48eP18c//nFJ0lFHHZXYY5uOz3zmMzJNU7W1tTrttNP06quvJtYe9+yzz+r+++9XJBJRZ2enotGoJOm8887TOeeco+9+97t65JFHNHPmTFVUVOjll1/W+++/rwsuuEBSbEtBvJIuxaqa8VbdqVO
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_concurrent_players(\"Potion Craft: Alchemist Simulator\", df_potioncraft).show()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:53.137564862Z",
"start_time": "2023-07-02T06:47:52.784223477Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdeZwcVbk//k9V9SzJZB0gYTFsF2SPqKwuSFgScCHIJnIN7uIVohfkCldQf4qIyKJsLhe9KvhCuFEu4IYsMfq9yirEEAggkH2Zmcza02tVnfP7o7qql6nu6e6ptfvzfr14JemE6TM93VXnOc9znqNIKSWIiIiIiIiIKHbUsAdARERERERERM1hUE9EREREREQUUwzqiYiIiIiIiGKKQT0RERERERFRTDGoJyIiIiIiIoopBvVERC3koIMOwtKlS/GBD3wA5557LtauXdv01zrppJOwZcsWD0cXH+vWrcNjjz3W1P/bzq/b/fffX/a9//KXv8Qvf/nLwMcxNDSE8847D2eeeSYeeOCBsr+77bbbcNttt5U9duWVV+L++++f9OtW/n9XXXUVXnjhBQATv3e356nHQQcdVPXvHnvsMZxzzjlYvHgxzjrrLHz84x/Hs88+2/BzeCmKYyIiajeJsAdARETeevDBBwEAv/jFL3D11VdPCGpalRACiqJAURTnMcMwkEg0fqtbt24dnn76aZxyyileDtEzzX5ffo/hf//3f7HXXnvhTW96EwDgwx/+cBhDw5NPPok999wT3/ve9zz9urfffjuWL1/u/Pnaa691fl/5vXtt5cqV+OY3v4kf/OAHOOSQQwAAL774Il566SUcddRRvjxnHMdERNSOGNQTEbWo448/HjfeeCMA4Nlnn8XNN9+MbDaLadOm4etf/zoOOOAArFu3Dl//+teRy+VgmiYuv/xynHDCCWVfR0qJ6667DiMjI/jWt741IZC755578Mtf/hKKomD27Nm4++67oes6vv3tb+Opp54CALzvfe/Dv/3bvwEAli1bhre85S149tln0d/fj8985jM4//zzAQBPP/00brjhBuRyOWiahu9+97vo6+vD7bffjrvvvhuAlRF9+umn8e1vfxv3338//vCHP0BRFGzevBn33HMPjjvuOCxfvhwrV67E2WefjZNOOgnf+MY30N/fD9M0cfHFF+PUU0/Fli1bsGzZMixevBhPPPEEFEXBrbfeirlz5+LWW29FOp3G0qVLcdpppzljty1btgyHHXYYnn76aYyPj2PZsmVYtmzZhJ/Btddei+eeew65XA4HHXQQvvWtb6GzsxOnnXYafvCDH2D//fcHAPznf/4n3va2t+Hcc8/Fo48+ijvvvBO6rqO3txff+ta3MH/+fNx2223YsGED+vv7MTo6ivvuuw+XX345Nm/eDCklTjjhBPzHf/zHhDH8z//8D+666y4oioKDDz4YX/va16AoCk455RQ89thj6OnpAQB84hOfwEc/+lG85z3vwS9/+Uv86le/gmma2GeffXDttddixowZuPLKK9HZ2YlXX30VPT09+MlPfuI8zwMPPIC1a9fi6quvxvTp0/Gd73wHjzzyCABg+fLluO2227B582bs3LkTGzZswJIlS3DMMcfgRz/6Efr7+/HlL3/ZWUSp9hrU8729+uqr+M53vuP8/G666SYccMABEz8gVVR7f37zm98EACxduhSdnZ1YsWIFli1bhksuuQTbt2+f8L2XyuVy+M53voN//OMfyOfzOPnkk/GFL3wBAPDUU0/hG9/4BlRVxZIlS6qO60c/+hEuvvhiJ3gGgMMOOwyHHXYYANT8zL3++uv42te+htHRUXR3d+Pqq6/GW97yFuzcuROXXXYZRkdHYRgGzj//fCxbtgyjo6O45pprsGHDBuTzeXz4wx92XaCZbEy1ri8nnXQSli5div/7v//D0NAQvvWtb+HRRx/FU089henTp+MHP/gBent7a752RERUIImIqGW8+c1vdn5/xx13yA996ENyeHhYnnPOOXJkZERKKeVzzz0nzzvvPCmllMlkUubzeSmllNu2bZMnnniiFEJIKaVctGiRXL9+vbzsssvkdddd5zxe6m9/+5t8//vfL4eHh6WUUg4NDUkppbzrrrvkRRddJA3DkOl0Wn7wgx+Uq1atklJK+ZGPfEReeeWVUgght23bJt/2trdJXdfl0NCQfOc73ynXrVsnpZQym83KVColn3zySfmRj3zEec5f//rX8oorrnB+f/TRR8vt27eXvQa/+MUvnD9/9KMflS+99JKUUsqRkRF58skny5GREbl582b55je/WT755JNSSil/+MMfyquvvnrCc7j5yEc+Ij/3uc9J0zTl8PCwXLRokTPuRYsWyc2bN5e9HlJK+fWvf90Z109/+lN53XXXSSmlHB0dle985ztlKpWS69evl8uWLZPZbFZKKeVvfvMbeemll0oppbz11lvl4sWL5ejoqJRSyj/+8Y/yK1/5ivP17Z9vqXXr1slFixbJwcFBKaWUX/3qV+X1118vpZTyi1/8ovzf//1fKaWUfX198l3vepc0DEM++eST8t///d+lruvO63LjjTdKKaW84oor5AUXXCBzuVzV18V+Pe0x33rrrc7vP/CBD8h0Oi3T6bQ8/vjj5TXXXCOllPLvf/+7XLx4sZRS1nwN6v3eav38Ssdku+KKK+Svf/1r53twe39KWf75qvx+J/ve77rrLimllIZhyE996lPyL3/5i8zlcvLd7363/Mc//iGllPInP/nJhOewLVy40Hkfu6n1mfvgBz8of/e730kprc//iSeeKHO5nPzv//5v+cMf/tD5GvZ76IorrpCPP/64lNL6HC5dulS+9tprDY9psuvLHXfcIaWU8g9/+IM88sgj5TPPPCOllPLqq6+WP/jBD2q+dkREVMRMPRFRi1m6dCmklNhzzz3x7W9/G6tXr8bGjRtx4YUXOv9mdHQUAJBKpXDVVVfhtddeQyKRwMDAAHbu3InddtsNAHDppZfipJNOKis5LvWXv/wFZ511FubMmQMAmDt3LgAr+3jOOedA0zRMmzYNZ5xxBp544gm85z3vAQCcfvrpUBQFe+yxB2bMmIGdO3di3bp1OPzww3HwwQcDALq6uur6fo877jjsvvvuZY+deeaZzvf37LPP4sorr3T+zjAMbNq0CXPnzsWuu+6KY489FgCwcOFCPPHEE3U9JwB88IMfhKqqmDNnDk455RQ8/fTTzthtjz/+OO655x7ouo5kMgnDMAAAZ511Fs444wxcdtllePDBB3Hqqadi+vTp+Otf/4rXX38d5513HgBrS4GdSQes7OasWbMAAAcffDBuvPFGXH/99TjuuOPwrne9a8IYn376aZx88sno7e0FAJx//vm46qqrAFjvk5/+9Kc488wz8dvf/hannXYaNE3DqlWr8Pzzz+Pss88GYGWAS/d5n3766ejs7Kz7dSr1nve8B9OmTQMA7Lvvvs774fDDD8fmzZsBYNLXoJ7vrRZFUSCldH3c5vb+rHyPNWLVqlXIZDL41a9+BQBIp9NYv349dtttN/T29mLhwoUAgHPPPRfXX399XV/z3HPPRSqVwv7774/bb7+96mfu7W9/OzZv3oz3vve9AIC3vvWtmDVrFtavX4+FCxfiqquuQiaTwfHHH+98FlatWoV169bhlltuAQAkk0m88cYb+Jd/+ZeGxjTZ9eW0004DABx66KHo6elxSvYPO+wwp1dBtdfu3e9+d30vPhFRG2BQT0TUYuw99bb169fjrW99K370ox9N+Lff+973cOCBB+J73/seFEXBsccei1wu5/z9UUcdhSeffBKf+MQnXAOrZpUG7JqmOcGuG03TIIRw/lw6PgCYPn36hP/HHquUEh0dHXjggQfKgjYA2LJlS9k4VFWFaZqNfSM1bNmyBbfccgt+/etfY968ebj77rvx4osvAgBmzZqFd7zjHXj44YfxP//zP7jhhhuc8S5ZsgRf/epXXb9m6fe6995749e//jX++te/4oEHHsBdd91VVg4/mXe84x24+uqr0d/fj4ceesgpLwesEvRPfvKTk46hUaW
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_concurrent_players(\"Untitled Goose Game\", df_untitledgoosegame).show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si può osservare come il numero di giocatori concorrenti di ciascun videogioco formi grafici molto simili per tutti e quattro i dataset utilizzati:\n",
"\n",
"- un grande picco iniziale (al momento del rilascio)\n",
"- piccoli picchi frequenti e periodici (il weekend)\n",
"- una baseline che diminuisce molto lentamente nel tempo (l'interesse che tende a calare nel tempo)\n",
"- vari picchi sparsi"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si realizza lo stesso grafico per Factorio, il prodotto senza le caratteristiche richieste per questo studio incluso deliberatamente per evidenziare la necessità di esse:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:53.673916940Z",
"start_time": "2023-07-02T06:47:53.137913204Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOy9eZxcVZ33/6mq7k5nX4CExbAvQUMDPoioM5IgSUDHBBlBHyQ6yrjMmOgIzsBPER8HEZeIAurjDDo+oqMiI0NwRASJ6IyyiBiaQAh7SEjSnaS3Wu92zu+Pc89yb1VXupNeqqs/b16huqtu33vuWufzXTNSSglCCCGEEEIIIYRMOLLjPQBCCCGEEEIIIYTsHxT1hBBCCCGEEELIBIWinhBCCCGEEEIImaBQ1BNCCCGEEEIIIRMUinpCCCGEEEIIIWSCQlFPCCFkTDjppJOwatUqvP3tb8dFF12ETZs27fe6zjnnHGzfvn0ERzdx2Lx5M37961/v199O5uN2xx13JPb9xz/+MX784x+P+Th6enpw8cUX44ILLsCdd96Z+OyOO+7AmWeeiVWrVpl/vu8Pexs333zzfo/vxhtvxP3337/ff08IIWTsaRnvARBCCJk8rF+/HgDwwx/+EFdffXWVqGlWhBDIZDLIZDLmvTAM0dIy/K/hzZs345FHHsG55547kkMcMfZ3v0Z7DP/5n/+JI444Aq961asAAP/7f//v8RgaHnroIRx++OH4+te/XvPzc845B1/84hcPaBvf+MY3sHbt2mH/XRiG+PjHP35A2yaEEDL2UNQTQggZc97whjdg3bp1AIBHH30UN9xwAyqVCqZOnYrPfe5zOP7447F582Z87nOfg+d5iKIIn/zkJ/HmN785sR4pJa6//nr09fXhC1/4QpWQ+9GPfoQf//jHyGQymD17Nn7wgx8gCAJ88YtfxMMPPwwAeNvb3oa/+7u/AwCsXr0ap556Kh599FF0d3fjQx/6EN797ncDAB555BF85Stfged5yOVy+NrXvoauri584xvfwA9+8AMAytP6yCOP4Itf/CLuuOMO/PKXv0Qmk8G2bdvwox/9CGeddRbWrl2LDRs24K//+q9xzjnn4J//+Z/R3d2NKIrw0Y9+FMuWLcP27duxevVqLF++HA8++CAymQxuuukmzJ07FzfddBNKpRJWrVqF8847z4xds3r1arzmNa/BI488gkKhgNWrV2P16tVV5+C6667DY489Bs/zcNJJJ+ELX/gC2tracN555+H//t//i2OPPRYA8P/9f/8fXvva1+Kiiy7Cfffdh1tuuQVBEGDevHn4whe+gAULFuDmm2/GSy+9hO7ubvT39+O2227DJz/5SWzbtg1SSrz5zW/GP/7jP1aN4ac//SluvfVWZDIZLFq0CJ/97GeRyWRw7rnn4te//jWmT58OAPjABz6A973vfTj77LPx4x//GP/xH/+BKIpw1FFH4brrrsOMGTNw1VVXoa2tDc888wymT5+O7373u2Y7d955JzZt2oSrr74a06ZNw5e//GXce++9AIC1a9fi5ptvxrZt27Bnzx689NJLWLFiBc4880z8y7/8C7q7u/GpT33KGFEGOwZD2bdnnnkGX/7yl835++pXv4rjjz+++gZxqHcfbNmyBZ///OfR398PALjmmmtwzz33AABWrVqFtrY23H777Xj++efx2c9+Fv39/Whvb8fVV1+NU089Fdu3b8ell16KpUuX4rHHHsPHPvYx3HfffTjzzDNx4YUXoqurC9dccw127NiBXC6Hf/iHf8CSJUvqjpcQQsg4IAkhhJAx4MQTTzQ/f/Ob35Tvete7ZG9vr3znO98p+/r6pJRSPvbYY/Liiy+WUkqZz+el7/tSSil37NghlyxZIoUQUkoply5dKl988UV5+eWXy+uvv9687/KHP/xB/tVf/ZXs7e2VUkrZ09MjpZTy1ltvlR/+8IdlGIayVCrJd7zjHfKBBx6QUkp56aWXyquuukoKIeSOHTvka1/7WhkEgezp6ZFvetOb5ObNm6WUUlYqFVksFuVDDz0kL730UrPNn/3sZ/LKK680P7/uda+TO3fuTByDH/7wh+b3973vffKpp56SUkrZ19cn3/KWt8i+vj65bds2eeKJJ8qHHnpISinlt7/9bXn11VdXbaMWl156qfz7v/97GUWR7O3tlUuXLjXjXrp0qdy2bVvieEgp5ec+9zkzru9973vy+uuvl1JK2d/fL9/0pjfJYrEoX3zxRbl69WpZqVSklFL+/Oc/l5/4xCeklFLedNNNcvny5bK/v19KKeWvfvUr+ZnPfMasX59fl82bN8ulS5fKvXv3SimlvOaaa+SXvvQlKaWUV1xxhfzP//xPKaWUXV1d8i/+4i9kGIbyoYcekv/wD/8ggyAwx2XdunVSSimvvPJKeckll0jP8wY9Lvp46jHfdNNN5ue3v/3tslQqyVKpJN/whjfIa6+9Vkop5Z/+9Ce5fPlyKaWsewyGum/1zp++ZlauXClXrlwpr7322kHvA9/35bnnniv/+7//W0opZRAEcmBgQEqZvNeklPId73iH/MUvfiGlVPfYkiVLpOd55jrT178+jj/72c+klFKuWbNG/uu//quUUsqtW7fKN77xjXLPnj01x04IIWT8oKeeEELImLFq1SpIKXH44Yfji1/8IjZu3IitW7five99r1lGex2LxSI+/elP47nnnkNLSwt2796NPXv24JBDDgEAfOITn8A555wzaJjx7373O1x44YWYM2cOAGDu3LkAgIcffhjvfOc7kcvlMHXqVKxcuRIPPvggzj77bADA+eefj0wmg8MOOwwzZszAnj17sHnzZixevBiLFi0CAEyZMmVI+3vWWWfh0EMPTbx3wQUXmP179NFHcdVVV5nPwjDEyy+/jLlz5+Lggw/G61//egBAR0cHHnzwwSFtEwDe8Y53IJvNYs6cOTj33HPxyCOPmLFr7r//fvzoRz9CEATI5/MIwxAAcOGFF2LlypW4/PLLsX79eixbtgzTpk3D73//ezz//PO4+OKLAaiUAu1JB1TY+KxZswAAixYtwrp16/ClL30JZ511Fv7iL/6iaoyPPPII3vKWt2DevHkAgHe/+9349Kc/DUBdJ9/73vdwwQUX4L/+679w3nnnIZfL4YEHHsCf//xn/PVf/zUAIAgCnHTSSWad559/Ptra2oZ8nFzOPvtsTJ06FQBw9NFHm+th8eLF2LZtGwDs8xgMZd/2RTr8vqurq+Z90Nvbi/b2dnNsW1paMHPmzKr1FQoFbNu2DW9961sBAKeffjpmzZqFF198EdOnT8ecOXPMvqZ5+OGHcd111wEAjjzySJx66ql4/PHHcc455wxpXwghhIwNFPWEEELGDJ1Tr3nxxRdx+umn41/+5V+qlv3617+OE044AV//+teRyWTw+te/Hp7nmc/POOMMPPTQQ/jABz5QU1jtL65gz+VyRuzWIpfLQQhhfnfHBwDTpk2r+hs9ViklWltbceeddyZy7QFg+/btiXFks1lEUTS8HanD9u3bceONN+JnP/sZ5s+fjx/84Ad48sknAQCzZs3CG9/4Rtxzzz346U9/iq985StmvCtWrMA111xTc53uvh555JH42c9+ht///ve48847ceuttybC4ffFG9/4Rlx99dXo7u7GXXfdhc9//vPms9WrV+Oyyy7b5xiGi2sMyOVy5nf32O/rGIwG+7oPDpSRvHcIIYSMD6x+TwghZNw47bTT8NRTTxlBKYTAU089BQDI5/M47LDDkMlkcM8996Cvry/xt+973/uwfPlyfPCDH0SxWKxa95vf/GbccccdxvPf29sLQHnPf/aznyGKIpTLZfz85z/HG97whn2Oc9OmTXj66acBKPFeKpWwcOFCvPjiiygWiwiCAPfdd9+Q933GjBlYvHgxfvSjH5n3nnzySUgp9/l3hUKh7jLr16+HEAL9/f3YsGGD8fhrCoUC2tvbMXfuXJTL5SpjyyWXXIJ169Zh2rRpxsP/xje+Effff7+pIB8EgTkeaXbt2oWWlhacd955uOqqq9DZ2Vm1zJlnnon777/fnJf
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_concurrent_players(\"Factorio\", df_factorio).show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si può osservare come:\n",
"\n",
"- il picco iniziale ha una forma diversa dagli altri\n",
"- i picchi frequenti e periodici sono sempre presenti, ma molto più accentuati\n",
"- la baseline tende ad aumentare nel tempo invece che a diminuire\n",
"- i picchi sparsi sono quasi completamente assenti (fatta eccezione per il rilascio ufficiale del gioco nel 2021)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Verifica dell'ipotesi del picco nel weekend"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si crea una visualizzazione che evidenzi chiaramente come i picchi periodici coincidano con il fine settimana."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:53.688539258Z",
"start_time": "2023-07-02T06:47:53.675050422Z"
}
},
"outputs": [],
"source": [
"class DoWFormatter(tick.Formatter):\n",
" def __call__(self, x, pos=None):\n",
" return {\n",
" 0: \"Monday\",\n",
" 1: \"Tuesday\",\n",
" 2: \"Wednesday\",\n",
" 3: \"Thursday\",\n",
" 4: \"Friday\",\n",
" 5: \"Saturday\",\n",
" 6: \"Sunday\"\n",
" }[x]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:53.809007985Z",
"start_time": "2023-07-02T06:47:53.693707111Z"
}
},
"outputs": [],
"source": [
"def plot_weekend(name: str, df: pd.DataFrame) -> so.Plot:\n",
" cdf = df[[\"SteamDB · Peak concurrent players\"]]\n",
" minimum = cdf.groupby(df.index.dayofweek).quantile(0.33).rename(columns={\"SteamDB · Peak concurrent players\": \"SteamDB · 33rd percentile of peak concurrent players\"})\n",
" maximum = cdf.groupby(df.index.dayofweek).quantile(0.66).rename(columns={\"SteamDB · Peak concurrent players\": \"SteamDB · 66th percentile of peak concurrent players\"})\n",
" both = utils.join_frames(minimum, maximum)\n",
"\n",
" return (\n",
" so.Plot(\n",
" data=both.reset_index(names=\"Day\"),\n",
" x=\"Day\",\n",
" ymin=\"SteamDB · 33rd percentile of peak concurrent players\",\n",
" ymax=\"SteamDB · 66th percentile of peak concurrent players\",\n",
" )\n",
" .add(\n",
" so.Range(\n",
" linewidth=20,\n",
" )\n",
" )\n",
" .add(\n",
" so.Band()\n",
" )\n",
" .scale(\n",
" x=so.Continuous()\n",
" .tick(locator=mpld.DayLocator())\n",
" .label(formatter=DoWFormatter()),\n",
" y=so.Continuous()\n",
" .tick(locator=tick.AutoLocator()),\n",
" )\n",
" .limit(\n",
" y=(0, None),\n",
" )\n",
" .label(\n",
" title=f\"33rd to 66th percentile of concurrent players over day of week {name}\",\n",
" )\n",
" .theme(theme)\n",
" )\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:54.004666852Z",
"start_time": "2023-07-02T06:47:53.706692455Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAABU9klEQVR4nO3deVxVdeL/8fe9F8xUFKhgrGxsyrRyK2vUFhVTKRRRdNpGaposW1wybbRlLMsyS2tGbfllfUfNqSlzQdOsTMmpSVpM0dKyMrUyyAW8bHf9/P5AjiCLCFfhwOv5eJTcc88993Mvn3u47892HMYYIwAAAAAAYDvO2i4AAAAAAACoHkI9AAAAAAA2RagHAAAAAMCmCPUAAAAAANgUoR4AAAAAAJsi1AOwrWAwqOuuu05JSUlKTEzU6NGjlZubK0naunWrBg0apKSkJPXv31///Oc/q3zc9PR0paSklHvf3LlzdfDgwWqVd/ny5erfv78SExOVlJSkYDAoSQoEApo+fbri4+OVmJio+++/X5J08OBBzZ07t9QxevfurZ9++qlaz1/bFi9eXKrsr7/+ul5//XVJ0qxZszRr1qyQPdd7772na665RklJSdX+fdlNdevm4sWLNXHixONQIvs5Ue/Fjh07NGjQIA0aNEj/+9//jvvzSVX/jPXu3VsJCQlKTExUv379dN9992n37t0noIRF596LLrpISUlJSkhI0PDhw5WZmVnt41X1fPnLL79o7Nix6t27twYPHqzBgwfrpZdeOurjanLeKu/8ftttt9Xo9QJouAj1AGzL6XTqlVdeUWpqqpYvX66WLVvq5ZdfliSdffbZevPNN5WamqqlS5fqo48+0ieffFLmGH6//5iec/78+dUKThkZGXrllVe0YMECLV++XP/3f/8nh8MhSfrXv/6lvXv3auXKlVq+fLnGjRsnqehL3/z584/5uUIlEAiE9HhLlizRzz//bN2+4YYbdMMNN4T0OYq9+eabmjhxolJTU9W8efPj8hyhcGT9O9b6WFJ16+aJUpPXVp/KIEnvv/++Lr/8ci1dulSXXXZZbRenjJdeeknLly/XO++8o3POOUc33nijcnJyTshzt2/fXqmpqVqxYoVatGih55577rg+X25uroYNG6aOHTvqgw8+0JIlSzRv3jzl5eUd1+ct7/w+Z84cxcbGHtfnBVA/hdV2AQCgJpo1ayapqNe+oKBATZo0kSQ1btzY2sfr9crn81m3Z82apR9//FFZWVnKycnRsmXLNHfuXP373/9WRESE/vjHP5b7XC+99JKysrJ0++23Kzw8XHPnzpXX69WkSZP0yy+/yOVy6Z577lGvXr3KPHbevHm6/fbbFRUVJUk65ZRTSt23ZMkSuVwuSdKpp54qSZoyZYqysrKUlJSkM8880/pyu2TJEq1bt0779+/XAw88oKuuuqrM86WkpOjCCy/Up59+qtzcXKWkpFijD7Zv364nnnhCOTk5cjqdmjhxoi655BKlp6dr+vTpatWqlbZv365p06YpNzdXTz/9tDwej1wul5599lm1bt1a77//vubMmSOfz6fo6Gg98cQTio2N1axZs/TTTz/pt99+008//aQuXbpo6tSpWrp0qbZs2aKHHnpITZo00VNPPaX33ntPkjRq1KhSZfd4PHrqqae0adMmeb1eXXXVVRozZkyZ15ibm6uHH35Y3377rSTp5ptv1tChQzV9+nR98cUX2rlzpxYtWqSZM2eWetwvv/yiyZMn65dffpEk3XnnnUpISNCGDRv0xBNPyOPxKDIyUo8++qjOPvtspaen65lnnlHr1q311VdfKSIiQs8995yio6Pl8Xg0bdo0ffrpp3I6nbriiiv0t7/9TSkpKRo5cqS6du0qqajHcP78+TrzzDPVu3dvDRgwQB9//LGuuOIKhYWFlamPr7/+ut566y0FAgH9/ve/1+OPP65mzZpp4sSJatq0qb755hv9+uuvSkxM1JgxY8qtm8V1TSrqAZ0xY4Zatmyp7777TtHR0Zo+fXqZALF161ZNnjxZHo9HgUBA48ePV48ePbRs2TKlpaXpmWeekSTt3r1bN998s1avXi23263HHntMP/74o7xeb6nGmrZt22rUqFFas2aNhgwZopiYGM2cOVNOp1PBYFDPP/+8WrVqVaoMmZmZ5X6mZs6cKWOMVRc2bNigqVOnauHChdqzZ48effRRZWVlKRAI6O6771bfvn31008/adiwYYqLi9OGDRs0evToMp+Xp556SqtXr1aLFi10wQUX1Oi9cDpL95XMnj1b77zzjhwOh7p166aJEydq9erVmjdvniTpo48+0quvvmo1PBljdOWVV+rdd99V06ZNdfXVV6tPnz4aP368Vq1apQ8//FBTp06t8PVKqvCzWVJ6eroef/xx/eMf/9Af/vCHMp+tYi6XS3fccYfS0tK0fPlyDRs2rFrPPWvWLO3cuVN79uzR3r171aVLFz3yyCNq1KhRhc/tcDjUpUsXrV27VpLk8/n05JNPKj09XZLUv39/3XnnnZIq/kwXM8Zo6tSpys7O1hNPPKGwsMNff99++23FxsbqlltusbY1b95cY8eOtW7fc8892rVrlwoLC3XZZZfpoYceKlPejz76SDNnzpTX65XL5dIjjzyiDh06SJI+/fTTMufRJ598ssz5veR54ptvvtGUKVOsxpRJkybpkksuqfD9AtDAGQCwuZtvvtn88Y9/NMOGDTO5ubnW9t27d5vExETTsWNH8+STT1rbZ86cafr162dycnKMMcZs3brVxMXFmQMHDphAIGDuvPNOM2zYsHKfKy4uzuzevdu6PXLkSPPSSy8ZY4zZuXOnueyyy8zevXvLPC4pKcnMnDnTXH/99Wbw4MHm3//+tzHGmIMHD5pLL73UzJo1yyQnJ5sbb7zRpKenW+WPi4sr8/yzZs0yxhizYcMG069fv3LLOWzYMHPXXXeZQCBgDhw4YOLi4szWrVuNz+czQ4YMMT///HOp5wgGg2b9+vXmggsuMFu3bjXGGLN//35z+eWXW7cLCwtNXl6e2bFjh0lJSTGFhYXGGGOWL19uxo4da723AwYMMLm5ucbr9Zr+/fubL774wirT+vXrS/0eZs6cWe7P8+fPN8YY4/f7zfDhw826devKvMapU6eahx9+2BhjzL59+0xcXJzZtm1buc9V0g033GDeeOMNY4wxwWDQHDhwwHg8HtOjRw/z5ZdfGmOMWbFihRkyZIgxxpj169ebDh06mO+++84YY8zf//5388ILLxhjjHn22WfN3/72N+P3+633rLznL1lv4uLizLRp00q9DyXr4/r1680999xjfD6fMcaYF1980UyfPt0YY8yECRPMLbfcYrxer3G73aZbt27m119/LfMcR1q/fr1p166d2bRpkzHGmFdeecWMGjXKGGPMokWLzIQJE4wxxrjdbuP1eo0xxvzyyy+mV69eJhgMWu/Pvn37jDHGzJgxwzz33HNWmT744ANjTFEdSUpKst6r8847zyxYsMAqx4ABA0xmZqa1b0FBQZmyVvSZ2rFjh+nTp4+136RJk8yrr75qjCk6B3z99dfGGGOys7PNVVddZbKzs83u3bvNeeedZ9LS0sp9X1avXm2GDh1qCgsLTWFhoRkyZEiN3ouSPvjgAzN48GCTn59v/H6/GTFihPVelKzvRxo1apT58MMPTWZmpklOTjbXXnutMcaYRx55xCxZsqTS13u0z+bMmTPNqlWrzODBg616c6Ty6tGUKVPMpEmTavTcR55ji393Ja1fv94693q9XnPHHXeYt956yxhjzPz5882IESOM3+83+fn5ZvDgwdbvtbzPdPFr2bFjh7n33nvN1KlTTTAYLPOcDz/8sJkyZUq570Wx4s91IBAwd9xxh1m7dm2p97T4vQgEAsYYYzIyMkxycrL12PLOoxWd33fv3m28Xq/p06eP+e9//2uMMcbn85mDBw9WWkYADRs99QBsb+7cuda89Ndee0233XabJOnMM8/UsmXLdPDgQY0dO1afffaZLr30UklFPafFvWPp6enq06ePIiMjJUnJyclWT9rRFPd4SdJ
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_weekend(\"Deep Rock Galactic\", df_deeprockgalactic).show()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:54.317918682Z",
"start_time": "2023-07-02T06:47:54.003080462Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAABTg0lEQVR4nO3dd3wUZeLH8e/sbgrpiZocKieeBVTa2QALEAVRIAQCdoL6syuICAqWw7MiCnqCnv4sv0NE7xTpgigI0TvvjAUhcAJiBRQTKYEEyGbL8/sjyZCQQgibMsnn/Xr5MjszO/Ps8uzsfucpYxljjAAAAAAAgOO4GrsAAAAAAACgbgj1AAAAAAA4FKEeAAAAAACHItQDAAAAAOBQhHoAAAAAAByKUA8AdRQMBnX55ZcrPT1daWlpuuOOO1RYWChJWrdunQYNGqT09HT1799fzz77bK33m52drczMzCrXTZ8+Xbt3765TeRcuXKj+/fsrLS1N6enpCgaDkqRAIKDJkyerb9++SktL07333itJ2r17t6ZPn15hHxdccIG2bNlSp+M3tjlz5lQo+9///nf9/e9/lyRNmzZN06ZNC9mxPvjgA11yySVKT0+v87+X09S1bs6ZM0fjx4+vhxI5T0O9Fz/88IMGDRqkQYMG6d///ne9H0+q/WcsEAjo2WefVZ8+fXTxxRdryJAhDVLG9PT0ej8GANQXT2MXAACcyuVy6dVXX1VMTIwkaeLEiXrllVd055136vjjj9fbb7+t8PBw+Xw+XXXVVTr77LPVvXv3Cvvw+/3yeGp/Kp4xY4Z69+6tuLi4QyprTk6OXn31Vc2cOVOJiYnavn27LMuSJP3tb3/Ttm3btHjxYrndbm3btk1SSaifMWOGrr322kM6VqgEAgG53e6Q7W/u3Lk65phjdOyxx0qSrrzyypDt+0Bvv/22xo8fr549e9bbMULhwPp3qPWxvLrWzYZyOK+tOZVBkpYuXapzzz1Xd999d2MXpZJp06YpJydH8+bNU3R0tHJycnTTTTfpjTfe0AknnBDy45X9m8yfPz/k+waAhtL43ywA4GBlgT4YDGrfvn2KioqSJEVGRtrbFBcXy+fz2Y+nTZumH3/8UXl5edq1a5cWLFig6dOn64033lBsbKzOPvvsKo/10ksvKS8vTzfddJPCwsI0ffp0FRcXa8KECfrll1/kdrt15513qlevXpWe+9prr+mmm25SYmKiJOmII46osG7u3Ll2gD7yyCMlSY8++qjy8vKUnp6uY489Vs8//7ykknD88ccfa8eOHbrvvvt04YUXVjpeZmamTjvtNH322WcqLCxUZmam3ftg48aNevzxx7Vr1y65XC6NHz9eZ555prKzszV58mS1adNGGzdu1KRJk1RYWKinnnpKXq9XbrdbzzzzjNq2baulS5fq5Zdfls/nU1JSkh5//HGlpKRo2rRp2rJli3777Tdt2bJFZ5xxhiZOnKh58+Zp7dq1euCBBxQVFaUnn3xSH3zwgSRp5MiRFcru9Xr15JNPavXq1SouLtaFF16oUaNGVXqNhYWFevDBB/XNN99Ikq655hoNHTpUkydP1pdffqmffvpJs2fP1tSpUys875dfftFDDz2kX375RZJ06623ql+/flq5cqUef/xxeb1eJSQk6OGHH9bxxx+v7OxsPf3002rbtq3++9//KjY2Vs8//7ySkpLk9Xo1adIkffbZZ3K5XDrvvPN0zz33KDMzUyNGjFDXrl0llfSwmDFjho499lhdcMEFGjBggD755BOdd9558ng8lerj3//+d73zzjsKBAI67rjj9NhjjykmJkbjx49XdHS0NmzYoF9//VVpaWkaNWpUlXWzrK5JJb1PpkyZotatW+vbb79VUlKSJk+erJSUlArvzbp16/TQQw/J6/UqEAho7Nix6tGjhxYsWKCsrCw9/fTTkqTNmzfrmmuu0bJly1RQUKBHHnlEP/74o4qLi3XllVfaF2zatWunkSNHavny5RoyZIiSk5M1depUuVwuBYNB/fWvf1WbNm0qlCE3N7fKz9TUqVNljLHrwsqVKzVx4kTNmjVLW7du1cMPP6y8vDwFAgHdfvvt6tOnj7Zs2aJhw4YpNTVVK1eu1B133FHp8/Lkk09q2bJlio+P16mnnnpY74XLVbED5nPPPaf33ntPlmWpW7duGj9+vJYtW6bXXntNkvSvf/1Lr7/+un0hxhij888/X++//76io6N18cUXq3fv3ho7dqyWLFmijz76SBMnTqz29Uqq9rNZXnZ2th577DH95S9/0R/+8Ad7eVFRkf7v//5PCxYsUHR0tCSpU6dOuvzyy/Xyyy/riSee0LRp07R582Zt27ZNP/74o/r27auzzz5b//u//6u8vDzdd9996t27t6SSi2szZsyQZVlq3769HnzwQcXExFR5Dm7Xrp02bNggAHAkAwA4LNdcc405++yzzbBhw0xhYaG9fPPmzSYtLc106tTJPPHEE/byqVOnmosuusjs2rXLGGPMunXrTGpqqtm5c6cJBALm1ltvNcOGDavyWKmpqWbz5s324xEjRpiXXnrJGGPMTz/9ZM455xyzbdu2Ss9LT083U6dONVdccYUZPHiweeONN4wxxuzevducddZZZtq0aSYjI8NcddVVJjs72y5/ampqpeNPmzbNGGPMypUrzUUXXVRlOYcNG2Zuu+02EwgEzM6dO01qaqpZt26d8fl8ZsiQIebnn3+ucIxgMGg+/fRTc+qpp5p169YZY4zZsWOHOffcc+3HRUVFZs+ePeaHH34wmZmZpqioyBhjzMKFC83o0aPt93bAgAGmsLDQFBcXm/79+5svv/zSLtOnn35a4d9h6tSpVf49Y8YMY4wxfr/f3HDDDebjjz+u9BonTpxoHnzwQWOMMdu3bzepqalm/fr1VR6rvCuvvNK89dZbxhhjgsGg2blzp/F6vaZHjx7mq6++MsYYs2jRIjNkyBBjjDGffvqp6dixo/n222+NMcb86U9/Mi+88IIxxphnnnnG3HPPPcbv99vvWVXHL19vUlNTzaRJkyq8D+Xr46effmruvPNO4/P5jDHGvPjii2by5MnGGGPGjRtnrrvuOlNcXGwKCgpMt27dzK+//lrpGAf69NNPTfv27c3q1auNMca8+uqrZuTIkcYYY2bPnm3GjRtnjDGmoKDAFBcXG2OM+eWXX0yvXr1MMBi035/t27cbY4yZMmWKef755+0yffjhh8aYkjqSnp5uv1cnn3yymTlzpl2OAQMGmNzcXHvbffv2VSprdZ+pH374wfTu3dvebsKECeb11183xpScA77++mtjjDH5+fnmwgsvNPn5+Wbz5s3m5JNPNllZWVW+L8uWLTNDhw41RUVFpqioyAwZMuSw3ovyPvzwQzN48GCzd+9e4/f7zc0332y/F+Xr+4FGjhxpPvroI5Obm2syMjLMZZddZowx5s9//rOZO3duja/3YJ/NqVOnmiVLlpjBgwfb9aa89evXmzPPPLPS8qVLl5rBgwfb+0lLSzN79+41e/fuNd27dzePPPKIMcaYL7/80j4nlZ1Xy96nCRMm2PX+wDpvTEldAQCnoqUeAA7T9OnT7XHpb775pm688UZJ0rHHHqsFCxZo9+7dGj16tD7//HOdddZZkkpaTstax7Kzs9W7d28lJCRIkjIyMuyWtIMpa/GSpN///vfq3LmzVq9erQsuuKDCdoFAQN99951mzJihPXv2KDMzUyeccIJOPvlk7dq1S7GxsZo9e7bWr1+vG264Qe+99161x7zkkksklbSgbd68udrtBg8eLJfLpYSEBPXu3VufffaZ3G63vvvuO9166632dj6fT9u3b5dU0rLavn17SdKqVavUoUMH+3FERIQk6ZNPPtF3332nyy67TFJJL4myVj1J6tmzp/34lFNO0ebNm3X66afX4t0skZWVpX379umdd96RJO3du1c//PCDzj///ArbZWdn6/HHH5ckJSUl6cILL9Rnn32mdu3aVbvvwsJCbdiwwS67ZVlKSEjQ+vXrlZCQoC5dukiS+vXrpwcffNCeo6F9+/Z21+OOHTtq1apVkqS
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_weekend(\"Omori\", df_omori).show()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:54.661538100Z",
"start_time": "2023-07-02T06:47:54.316282730Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAABVRklEQVR4nO3deXxU1f3G8WeWhF0S1CBuxbqAyla1AqJIEEQCIRBoVWpQK+6gIvgDNygCUjSIBazWYkW01mrZFVC2iKUSFISAguIKKAYJScg2+/n9EXJJyApMSG7yeb9eSmbmzp3v3Jy5meeec891GGOMAAAAAACA7ThrugAAAAAAAHB8CPUAAAAAANgUoR4AAAAAAJsi1AMAAAAAYFOEegAAAAAAbIpQD6CEUCikG2+8UQkJCYqPj9cDDzyg3NxcSdKOHTs0cOBAJSQkqF+/fvrLX/5S5fWmpqYqKSmpzMfmzp2rQ4cOHVe9S5cuVb9+/RQfH6+EhASFQiFJUjAYVHJysvr06aP4+Hg9+uijkqRDhw5p7ty5JdbRs2dP7d2797hev6YtWLCgRO3/+te/9K9//UuSNGvWLM2aNStsr/XBBx+ob9++SkhIOO7fl90cb9tcsGCBxo0bVw0V2c/J2hbfffedBg4cqIEDB+p///tftb+eVPXPWM+ePRUXF6cBAwZowIAB+u9//1vh8nv37tWCBQtK3JeQkHBCtR5t3759euihh9SzZ08lJiZq6NChWrdu3TGvZ9OmTerfv78GDhyozZs3l9q/ViY3N1edOnXStGnTStw/bty4UtvgaElJSUpNTT3Wkqussm2emppa4euvX79egwcPVkJCgm644QaNHj26yus+VlX5O7Zjxw6tWrUqrK8LoHZw13QBAGoXp9OpV155RU2bNpUkTZ06VXPmzNFDDz2k8847T2+//bYiIyPl9/s1dOhQXXnlleratWuJdQQCAbndVd+9zJs3T7169dIpp5xyTLWmpaXplVde0RtvvKHo6GhlZGTI4XBIkl599VUdOHBAy5Ytk8vl0oEDByQVhvp58+bptttuO6bXCpdgMCiXyxW29S1cuFBnnXWWzj77bEnSzTffHLZ1H+3tt9/WuHHjdO2111bba4TD0e3vWNtjccfbNk+WE3lvdakGSVq5cqW6deumRx55pKZLKdPLL7+ss88+W2vXrtXo0aP18ccfy+ksu2/lxx9/1MKFC5WYmGjdt3jx4rDVkpeXp6SkJA0dOlTPP/+8JCk9PV2ffvppqWUr+/0uWbJEQ4cO1dChQ7V3795j3r+uWLFC7du317vvvqsxY8aEdf94oirb5hs3bpQkde7cudRjgUBAo0eP1ltvvaXWrVtLKgzVVV13ddixY4c2btyoXr16HdPzastnHED5+IQCKKUo0IdCIRUUFKhx48aSpIYNG1rL+Hw++f1+6/asWbP0/fffa//+/crOztaSJUs0d+5c/fOf/1SzZs105ZVXlvlaL7/8svbv36+77rpLERERmjt3rnw+n8aPH6+ffvpJLpdLDz30kHr06FHqua+99pruuusuRUdHS5JOPfXUEo8tXLjQ+oJ42mmnSZImT56s/fv3KyEhQWeffbZeeOEFSYXheN26dTp48KAee+wxXXfddaVeLykpSZdeeqk2btyo3NxcJSUlWaMPdu3apaefflrZ2dlyOp0aN26crrjiCqWmpio5OVnnnHOOdu3apWnTpik3N1fPPvusvF6vXC6XZsyYodatW2vlypX6+9//Lr/frxYtWujpp59Wy5YtNWvWLO3du1e//PKL9u7dq8svv1xTp07VokWLtH37dj3xxBNq3LixnnnmGX3wwQeSpJEjR5ao3ev16plnntHWrVvl8/l03XXX6cEHHyz1HnNzczVhwgR99dVXkqRbb71VQ4YMUXJysjZt2qQffvhB8+fP18yZM0s876efftLEiRP1008/SZLuvfdexcXFafPmzXr66afl9XoVFRWlp556Suedd55SU1P13HPPqXXr1vr888/VrFkzvfDCC2rRooW8Xq+mTZumjRs3yul06uqrr9b//d//KSkpSSNGjLC+QPfs2VPz5s3T2WefrZ49e6p///5av369rr76arnd7lLt8V//+pf+85//KBgM6le/+pWmTJmipk2baty4cWrSpIm+/PJL/fzzz4qPj9eDDz5YZtssamtSYS/d9OnT1apVK3399ddq0aKFkpOT1bJlyxLbZseOHZo4caK8Xq+CwaDGjBmj7t27a8mSJUpJSdFzzz0nSdqzZ49uvfVWrVq1Sjk5OZo0aZK+//57+Xw+3XzzzdYBmzZt2mjkyJFas2aNBg8erJiYGM2cOVNOp1OhUEh//etfdc4555SoIT09vczP1MyZM2WMsdrC5s2bNXXqVL3zzjvat2+fnnrqKe3fv1/BYFD333+/evfurb179+qWW25RbGysNm/erAceeKDU5+WZZ57RqlWr1Lx5c11yySUntC2ODr6zZ8/W8uXL5XA41KVLF40bN06rVq3Sa6+9Jkn673//q9dff906EGOM0TXXXKP3339fTZo00Q033KBevXppzJgxWrFihT788ENNnTq13PcrqdzPZnGpqamaMmWKnn/+ef36178u9dkq0rVrV2VlZSkrK0vff/99mZ+PyZMna+/evUpISNBll12mCRMmqE2bNvryyy8lSatXr9bMmTMVCoV01llnadKkSTr99NO1YMECffDBB3K5XPr222/1q1/9SjNnzlRkZGSJGt59912ddtpp+uMf/2jd17JlS/Xr109S4b7ukksu0ebNm3XBBRfooYce0ujRo5WXlyefz6fhw4dr0KBBmjdvnpYvX64PP/xQS5YsUVRUVJn714osWrRI9913n2bPnq3169ere/fupZbJysrSpEmTrP3SkCFDdOutt0qSPvroI82YMcP6rN50002SpE8//VTPPfecPB6PGjVqpIkTJ+qCCy6wtpHT6dTXX3+t9u3bKykpScnJyfrpp590xx136A9/+IMkWdu8oKBAY8aM0Z49e2SMUffu3TVo0CC99dZbkqRVq1Zp2LBhGjx4sFVzXl6evF5viX3GxRdfbP1c/PfZpk0bPfzww1qxYoU8Ho+Sk5M1d+5cff755zrzzDP117/+VZGRkRXuA4ubMmWKNm/eLK/XqzZt2lhtbObMmcrPz7dGDtx77716++23NW/ePDkcDrVt21YTJkxQ06ZNy/ybDqAWMwBQhltvvdVceeWV5pZbbjG5ubnW/Xv27DHx8fGmQ4cO5s9//rN1/8yZM831119vsrOzjTHG7Nixw8TGxprMzEwTDAbNvffea2655ZYyXys2Ntbs2bPHuj1ixAjz8ssvG2OM+eGHH8xVV11lDhw4UOp5CQkJZubMmeamm24ygwYNMv/85z+NMcYcOnTI/Pa3vzWzZs0yiYmJZujQoSY1NdWqPzY2ttTrz5o1yxhjzObNm831119fZp233HKLue+++0wwGDSZmZkmNjbW7Nixw/j9fjN48GDz448/lniNUChkNmzYYC655BKzY8cOY4wxBw8eNN26dbNuezwek5eXZ7777juTlJRkPB6PMcaYpUuXmlGjRlnbtn///iY3N9f4fD7Tr18/s2nTJqumDRs2lPg9zJw5s8yf582bZ4wxJhAImOHDh5t169aVeo9Tp041EyZMMMYYk5GRYWJjY83OnTvLfK3ibr75ZvPvf//bGGNMKBQymZmZxuv1mu7du5vPPvvMGGPMe++9ZwYPHmyMMWbDhg2mffv25uuvvzbGGPPkk0+aF1980RhjzIwZM8z//d//mUAgYG2zsl6/eLuJjY0106ZNK7EdirfHDRs2mIceesj4/X5jjDEvvfSSSU5ONsYYM3bsWHP77bcbn89ncnJyTJcuXczPP/9c6jWOtmHDBtO2bVuzdetWY4wxr7zyihk5cqQxxpj58+ebsWPHGmOMycnJMT6fzxhjzE8//WR69OhhQqGQtX0yMjKMMcZMnz7dvPDCC1ZNq1evNsYUtpGEhARrW1100UXmjTfesOro37+/SU9Pt5YtKCgoVWt5n6nvvvvO9OrVy1p
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_weekend(\"Potion Craft: Alchemist Simulator\", df_potioncraft).show()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:54.971790326Z",
"start_time": "2023-07-02T06:47:54.662541347Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAABX7klEQVR4nO3dd3xUVeL///fMpJFGEjVZVFZdaSoEFgugLhIEkRICgbUtQf1ZUYod1rqowKJBVrB9LF8RsSJgQLEhsOy6CxYWAgqKriugGARSJm3q+f0RMiakQiZMbvJ6Ph48yNy5c+fM5MzNvM89xWaMMQIAAAAAAJZjD3UBAAAAAADAkSHUAwAAAABgUYR6AAAAAAAsilAPAAAAAIBFEeoBAAAAALAoQj2AFsXv9+vSSy9VRkaG0tPTNXnyZBUXF0uStm3bplGjRikjI0PDhw/X448/3ujjbtiwQVlZWbXet2DBAhUVFR1ReVesWKHhw4crPT1dGRkZ8vv9kiSfz6fs7GwNGTJE6enp+vOf/yxJKioq0oIFC6odY+DAgdq9e/cRPX+oLV26tFrZX3vtNb322muSpPnz52v+/PlBe64PP/xQQ4cOVUZGxhH/vqzmSOvm0qVLNW3atGYokfUcrffi+++/16hRozRq1Cj961//avbnkxr/GevatWu127t379bAgQMbfNyGDRu0YcOGwO0tW7bonnvuCRxj6dKl9T5PY9T3GgoLC3Xfffdp4MCBysjIUEZGhh555BF5PJ7Dfp5gaYllAoCwUBcAAKqy2+164YUXFBsbK0maNWuWnn/+ed1yyy065ZRT9OabbyoiIkIej0dXXHGFzjnnHPXr16/aMbxer8LCGn96W7hwoQYNGqT4+PjDKmtubq5eeOEFLVq0SImJidq/f79sNpsk6cUXX9S+ffu0cuVKORwO7du3T1JFqF+4cKGuuuqqw3quYPH5fHI4HEE73rJly3TCCSfoxBNPlCRdfvnlQTv2od58801NmzZNF1xwQbM9RzAcWv8Otz5WdaR182hpymtrTWWQpI8++kjnnXee7rzzzlAXJWg+/fRTSVKfPn0kST169FCPHj0kST/++KOWLVumzMzMZnluv9+va665RmeeeaY++OADhYeHq7y8XM8//7xcLpfCw8Ob5XmtViYAkAj1AFqgykDv9/tVVlam6OhoSVJUVFRgH7fbXe3KyPz58/W///1Pe/fuVWFhoZYvX64FCxbolVdeUVxcnM4555xan+vZZ5/V3r17df311ys8PFwLFiyQ2+3W/fffr59++kkOh0O33HKLBgwYUOOxL730kq6//nolJiZKko455phq9y1btiwQoI899lhJ0sMPP6y9e/cqIyNDJ554op588klJFeF43bp1OnDggO6++25deOGFNZ4vKytLZ5xxhj799FMVFxcrKysr0Ptgx44dmjlzpgoLC2W32zVt2jSdddZZ2rBhg7Kzs9WxY0ft2LFDs2fPVnFxsR599FG5XC45HA7NnTtXJ598sj766CM999xz8ng8SkpK0syZM5WSkqL58+dr9+7d+uWXX7R7926deeaZmjVrlt5++21t3bpV9957r6Kjo/XII4/oww8/lCRNmjSpWtldLpceeeQRbd68WW63WxdeeKGmTJlS4zUWFxfrgQce0DfffCNJuvLKKzV27FhlZ2friy++0A8//KAlS5Zo3rx51R73008/afr06frpp58kSRMmTNCwYcO0ceNGzZw5Uy6XSwkJCXrwwQd1yimnaMOGDXrsscd08skn68svv1RcXJyefPJJJSUlyeVyafbs2fr0009lt9t1/vnn66677lJWVpYmTpwYCDgDBw7UwoULdeKJJ2rgwIEaMWKEPvnkE51//vkKCwurUR9fe+01vfXWW/L5fDrppJM0Y8YMxcbGatq0aYqJidHXX3+tn3/+Wenp6ZoyZUqtdbOyrkkVV1HnzJmjDh066Ntvv1VSUpKys7OVkpJS7b3Ztm2bpk+fLpfLJZ/PpzvuuEP9+/fX8uXLtXbtWj322GOSpF27dunKK6/UqlWr5HQ69dBDD+l///uf3G63Lr/88kCDTdeuXTVp0iStXr1aY8aMUXJysubNmye73S6/36+nnnpKHTt2rFaGvLy8Wj9T8+bNkzEmUBc2btyoWbNmafHixdqzZ48efPBB7d27Vz6fTzfffLMGDx6s3bt3a9y4cUpLS9PGjRs1efLkGp+XRx55RKtWrVL79u11+umnN+m9sNurd2p84okn9N5778lms6lv376aNm2aVq1apZdeekmS9M9//lMvv/xyoCHGGKM//OEP+uCDDxQTE6OLL75YgwYN0h133KH3339ff//73zVr1qw6X6+kOj+bVW3YsEEzZszQ3/72N/3ud7+r8dmqS12fhQMHDuj111+XJK1atUrjx4/XiSeeqCeeeEIvv/yyHn74Ye3evVsZGRnq3bu3HnjggWrH/fzzz/XYY4+pvLxc7dq10/Tp09WpUye53W498MAD2rhxo4499lh16NBBJ510Uo1yffLJJzpw4IDuuuuuwHk0KipKEydODOxT1+e7rt9TWFiYXnvtNb3yyiuy2+1yOBx65ZVXFB0d3aj3uDFlmjFjhjZu3CiXy6WuXbtq5syZioyM1NKlS/Xhhx/Kbrfr22+/VY8ePZSVlaXs7Gz99NNPuuaaa/SnP/2p3vcOAOpkAKAFuvLKK80555xjxo0bZ4qLiwPbd+3aZdLT001qaqr561//Gtg+b948c9FFF5nCwkJjjDHbtm0zaWlpJj8/3/h8PjNhwgQzbty4Wp8rLS3N7Nq1K3B74sSJ5tlnnzXGGPPDDz+Yc8891+zbt6/G4zIyMsy8efPMZZddZkaPHm1eeeUVY4wxRUVF5uyzzzbz5883mZmZ5oorrjAbNmwIlD8tLa3G88+fP98YY8zGjRvNRRddVGs5x40bZ2666Sbj8/lMfn6+SUtLM9u2bTMej8eMGTPG/Pjjj9Wew+/3m/Xr15vTTz/dbNu2zRhjzIEDB8x5550XuF1eXm5KSkrM999/b7Kyskx5ebkxxpgVK1aYW2+9NfDejhgxwhQXFxu3222GDx9uvvjii0CZ1q9fX+33MG/evFp/XrhwoTHGGK/Xa6699lqzbt26Gq9x1qxZ5oEHHjDGGLN//36TlpZmtm/fXutzVXX55ZebN954wxhjjN/vN/n5+cblcpn+/fub//znP8YYY959910zZswYY4wx69evNz169DDffvutMcaY++67zzz99NPGGGPmzp1r7rrrLuP1egPvWW3PX7XepKWlmdmzZ1d7H6rWx/Xr15tbbrnFeDweY4wxzzzzjMnOzjbGGDN16lRz9dVXG7fbbZxOp+nbt6/5+eefazzHodavX2+6detmNm/ebIwx5oUXXjCTJk0yxhizZMkSM3XqVGOMMU6n07jdbmOMMT/99JMZMGCA8fv9gfdn//79xhhj5syZY5588slAmT7++GNjTEUdycjICLxXXbp0MYsWLQqUY8SIESYvLy+wb1lZWY2y1vWZ+v77782gQYMC+91///3m5ZdfNsZUnAO++uorY4wxBQUF5sILLzQFBQVm165dpkuXLmbt2rW1vi+rVq0yY8eONeXl5aa8vNyMGTOmSe9FVR9//LEZPXq0KS0tNV6v19xwww2B96JqfT/UpEmTzN///neTl5dnMjMzzSWXXGKMMeYvf/mLWbZsWb2vt6HP5rx588z7779vRo8eHag3h+rSpUu121XPQ/V9Fg59TevXrw+cR6v+fOjz5Ofnm7Fjx5qCggJjTMV5rfI1v/TSS2bChAnVzmO1vW/PPvusmTBhQq2vxxhT7+e7vt9T//79A3XU6XQar9db73t8OGUy5tfzhTHGTJ8+PfC8S5YsMeedd57Zv3+/8Xq9Jj093UycONF4PB7z008/md69exuPx1PvewcAdeFKPYAWacGCBYFx6a+++qquu+46SdKJJ56o5cuXq6ioSLfeeqs+++wznX322ZIqrpxWXh3bsGGDBg0apISEBElSZmZm4EpaQyqveEnSb3/7W/Xs2VObN2+uMQbV5/Ppu++
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_weekend(\"Untitled Goose Game\", df_untitledgoosegame).show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si può chiaramente osservare come il numero di giocatori concorrenti tenda ad essere più alto il sabato, la domenica, e talvolta il lunedì."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Visualizzazione dello storico dei prezzi"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si ricreano con `seaborn` i grafici dello storico dei prezzi, sovrapponendo i prezzi immagazzinati da SteamDB con quelli di IsThereAnyDeal:\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:54.987273956Z",
"start_time": "2023-07-02T06:47:54.973046467Z"
}
},
"outputs": [],
"source": [
"def plot_best_prices(name: str, df: pd.DataFrame) -> so.Plot:\n",
" return (\n",
" so.Plot(\n",
" data=df.reset_index(names=\"Date\")[[\n",
" \"Date\",\n",
" \"SteamDB · Steam\",\n",
" \"ITAD · Best Price\",\n",
" ]].melt(\n",
" id_vars=[\"Date\"],\n",
" value_vars=[\n",
" \"SteamDB · Steam\",\n",
" \"ITAD · Best Price\",\n",
" ],\n",
" var_name=\"Data service\",\n",
" value_name=\"Price\"\n",
" ),\n",
" x=\"Date\",\n",
" y=\"Price\",\n",
" color=\"Data service\",\n",
" )\n",
" .add(\n",
" so.Area(\n",
" alpha=0.3,\n",
" )\n",
" )\n",
" .scale(\n",
" x=so.Temporal()\n",
" .tick(locator=mpld.YearLocator()),\n",
" y=so.Continuous()\n",
" .tick(locator=tick.AutoLocator()),\n",
" )\n",
" .label(\n",
" title=f\"Prices over time of {name}\",\n",
" )\n",
" .theme(theme)\n",
" )\n"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:55.628275059Z",
"start_time": "2023-07-02T06:47:54.989222172Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOydd9wkRZ3/Pz1Pfp7NiYXdhV3S7sLygIoniCAgHkhawIAB8NTz9ATUO0X8eYKnIooK5jsPFSOKCggooKCIopJ0hYeVDJtzenKama7fHzPd06Fip+mZ/b5fr93neWa6q6qrq6vrG8tijDEQBEEQBEEQBEEQBNFwFOrdAIIgCIIgCIIgCIIgokFCPUEQBEEQBEEQBEE0KCTUEwRBEARBEARBEESDQkI9QRAEQRAEQRAEQTQoJNQTBEEQBEEQBEEQRINCQj1BEASRG5YuXYqVK1firLPOwhvf+EasXr2ae9wTTzyB//qv/8q4denx8MMP4+GHH3b/ruf1XXbZZTjzzDNx1VVX+T7fuHEjVqxYgZUrV+KMM87AGWecgWuvvRajo6OZtOtrX/sajjvuOKxcuRKnnnoqPvGJT6BcLkcqa+PGjTj55JO1jv3rX/+KCy+8ECeffDJe//rX461vfSt++9vfKs+78MILfffUhKeeespXx7Zt2/Dud787UlkEQRBE89Na7wYQBEEQhJfbb78dAPCjH/0IH//4x3Hbbbf5vi+VSjjiiCNwxBFH1KF18bFtG5ZlwbIs97NHHnkEAPCKV7wCAOp2fTt37sRf/vIX/PnPf+Z+P2/ePPf+DAwM4IorrsD73/9+fPvb386kfW9+85tx6aWXYnR0FOeccw5+/etf44wzzkitvtWrV+OSSy7Bl770JRx77LEAgLVr1+L+++9PrU6gItQ/8sgjOOWUUwAA++yzD771rW+lWidBEATRuJBQTxAEQeSSY489Fl/84hcBVKyehx12GFatWoWDDz4Y55xzDr7+9a/jhz/8IQDgxz/+MX7yk5/AsixMnz4dP/zhD8EYw9e//nX84Q9/wOTkJI466ihceeWVaG1txVe+8hXcc889KBQKmDFjhluOl1WrVuHqq6/GxMQEZsyYgU996lNYsmQJLrjgAlx88cWukPfNb34TQ0NDuOyyy/DXv/4V1113HcbHx9HV1YVPfvKTOPjgg3Hrrbfi7rvvhmVZ2LBhA3784x9j5syZAIDnn38eN910EwDgt7/9LS666CIsXLjQvb6HH34Y1157LRYvXownnngC8+fPx+WXX45rrrkGGzZswBlnnIH/+I//AAA899xzuPrqqzEwMIBCoYCPfvSjOProo7WubcGCBbjoooswMDCAlStX4h3veAfOOecc4f2ZPn06rrrqKpxwwgl49tlnceihhwqvX3YvLrzwQhx++OF45JFHMDw8jAsvvBAXXnihdGx0d3fjsMMOw+bNmwFULNlXXnklNm/ejJaWFnzwgx/EiSeeCKCiMPnCF76AiYkJtLS04Etf+hJaW2vLn6GhIVx88cU49dRT8ba3vc1Xzw033IDzzz/fvdcAsHjxYvzLv/yLW++HPvQhjIyMYHJyEv/6r/+Kc889N9Te66+/Hr/5zW8wOTmJ+fPn45prrsGsWbMAhMfuN77xDXz1q1/F6OgoVq5cidNOOw1nnXUWLrroItx3330AgN/85jf43//9X9i2jfb2dnz3u9/F1KlTpX1GEARBNDGMIAiCIHLCoYce6v7+jW98g51//vmMMcYuuOAC9sEPfpCVy2XGGGMPPfQQu+CCCxhjjP3lL39hZ555JtuzZw9jjLHdu3czxhi75ZZb2Oc+9zlm2zZjjLErrriC/eQnP2F79uxhp512mltWf39/qB0TExPshBNOYH//+98ZY4zdeeed7PWvfz1jjLGf/exn7KMf/ah77Ote9zr2zDPPsD179rA3vOENbnmrVq1ib3rTm9y2vPzlL2dbtmzhXvdXv/pV9tWvftX923t9Dz30EDviiCPYmjVrGGOM/du//Rt705vexEZHR9nQ0BB7xStewbZu3cqKxSJ7/etfzzZt2sQYY2zDhg3spJNOcq9f59qcc3iIvjv77LPZnXfeqbx+3r1grHJv3/e+97Fyucz27NnDTjrpJPbUU09J+2jXrl3stNNOY88++yxjjLFLLrmEXX/99YwxxtatW8de+cpXsp07d7Ldu3ez4447zi1vfHycjYyMuNeybds2dt5557G77rqLe82ve93r2L333sv9jjHGxsbG2OjoKGOMsYGBAfaa17zGHYcXXHABe+ihhxhjtTHJGGPf/va32ec+9znGmHzsXn755e453r5//vnn2atf/Wq2efNmxhhjQ0NDbHJyUthGgiAIovkhSz1BEASRK1auXAnGGPbbbz987nOfcz8/++yzUSiEU8H88Y9/xHnnnYcZM2YAgGsBv//++/HUU0/hL3/5CwBgfHwcPT09mDp1Krq7u/Ff//VfOPbYY3HSSSeFynzxxRcxY8YMHHXUUQCA008/HZ/4xCcwPDyM0047DV/+8pcxMTGB5557Dm1tbTj00ENx//33Y926dbjooovccgYGBtzfjznmGMyfPz9SnyxfvhyLFy92fy+Xy+jq6gIAHHDAAdiwYQMGBwfxwgsv4N///d/d84rFInbt2oU5c+ZoXVsUGGMAgMcee0x4/aJ74XDuuee6XhOnnHIKHnnkESxbtixU10033YR77rkHa9aswbnnnotDDjkEQCUnwWc+8xkAwP77748jjzwSjz/+OCzLwooVK9yyOjo6AAC7d+/G8PAwLrjgAvz3f/83XvnKV2pd68UXX4z169ejvb0dt9xyC0qlEj7zmc9g9erVsCwLu3btwtq1a92+dfj73/+O66+/HsPDw5iYmMD+++8PQDx2ZTz44IM45ZRTsO+++wIApkyZotV2giAIonkhoZ4gCILIFU7MdpDu7m7jsj70oQ/htNNOC31+00034a9//SseeOABfOlLX8IvfvELV7BSMXXqVLz85S/H7373Ozz22GNYuXIlgIpw+5KXvAT/93//l1j7Hdrb293fW1pa0NLS4v5dKBRQLpfBGMOCBQuE/ZcGQ0NDWL9+PQ455BBs3LhRev2ie2GCE1O/YcMGnH/++XjNa17jutmb0tnZiWXLluH+++8XCvXLli3D6tWr3dj2b3zjG9i4caOruPje976HlpYW/OIXv0BrayvOO+88TExM+MqYnJzE5Zdfjp/+9Kc48MADcd999+G73/1upDYTBEEQBA/Kfk8QBEE0NCeccAJuvfVW1yq8Z88eAMCJJ56IG2+80c3O3t/fjw0bNmB4eBj9/f049thj8eEPfxidnZ3YunWrr8wDDzwQ/f39ePzxxwEAd999Nw444ADXKrpy5Ur84he/wK9//WuceeaZAICjjjoKTz75JP7xj38AqCTEe/LJJ7WuYcqUKZEt5Q5LlixBsVj0JXHj7R6gujZdBgcHccUVV+Doo4/GIYccIr1+0b1wuP3222HbNgYGBnDfffe5CQNFLFq0CB/84Afx1a9+FUDFC+LnP/85AGDDhg3o6+vDkUceiaOOOgqrV6/G008/DQCYmJhw29Da2orrrrsO27Ztc638Qd7xjnfgpptuchMZAhUvA4ehoSHMmzcPra2tePzxx916vExMTMC2bcybNw/lchk333yz+51o7MrGw7HHHovf/va32LJlCwBgeHgYxWJR2l8EQRBEc0OWeoIgCKKhOfbYY/HmN78Zb3vb29DS0oIZM2bg+9//Ps477zxs374d559/PgCgra0NH/vYx9DW1oZLL70U4+PjYIzhxBNPxNKlS31ltre340tf+hI+/elPu8nkvvCFL7jfH3/88fjYxz6G5cuXY968eQAqrtNf+cpX8OlPfxqjo6MoFov453/+Zxx22GHKazjllFNwySWX4JxzzsGFF16IhQsXGvdDW1sb/ud//gdXXXUVrrvuOhSLRRx11FH47Gc/a3RtMrZv346VK1eiVCoBAE466SS8733vAyC/ftG9WLRoEQBgwYIFeMMb3oDh4WG8/e1vD90PHq9//etxww034A9
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_best_prices(\"Deep Rock Galactic\", df_deeprockgalactic).show()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:56.094097288Z",
"start_time": "2023-07-02T06:47:55.628702529Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAByM0lEQVR4nO3deXxU9fX/8fedSUJIWIIgoLiAG2IBQYtIUZS6IRZR6opKte7717prxa3utVW7WWtb1GK1ooJr60pr1R+ugCiglX1LCBAgISSZuff3x2QmRDJL7ty5y8zr+Xh8v5bMcj8zc+fOPfecz/kYlmVZAgAAAAAAgRPyegAAAAAAAMAegnoAAAAAAAKKoB4AAAAAgIAiqAcAAAAAIKAI6gEAAAAACCiCegAAvqN///4aP368xo0bp5NPPlnz5s1r835ffPGFbr75ZpdHlzuzZs3SrFmzEv/28vVde+21+tGPfqRf/OIX2922fv16XXPNNTriiCN01FFH6aKLLtLy5csTt5911lkaOnSo6uvrE3976aWX1L9/f73wwguJv7366qsaN26cjj32WI0ZM0ZPPvlk4rZZs2Zp6NChGj9+vMaOHavzzjtPlZWVidt/+MMfasWKFU6/bAAA2q3I6wEAAOBHM2bMkCT97W9/089//nNNnz691e2RSESDBg3SoEGDPBhd9kzTlGEYMgwj8bePPvpIkjR8+HBJ8uz1VVdX64MPPtD777/f5u2XX365DjzwQD3wwAMyDEPPPPOMfvrTn+rVV19VSUmJJKlv37564403NH78eEnS9OnT9b3vfS/xHB988IF++ctf6q9//av69u2r6upqnXvuuerYsaNOPvlkSdLAgQP11FNPybIsXXPNNfrd736nO+64I8evHgCA9iFTDwBACiNGjNCSJUskxTLA99xzj04++WTdcsstmjVrls4666zEfZ9++mmNGzdOxx9/fOLvlmXpN7/5jU466SQdf/zxmjx5siKRiCTp4Ycf1nHHHadx48a1ep5tffbZZzrppJMS91m8eLEk6cwzz9SHH36YuN+jjz6qBx54QJL0ySefaOLEiZowYYLOOOMM/e9//5MkvfDCCzr//PN1wQUX6LjjjlNNTU3i8f/73//0zDPP6JlnntH48eP1/PPPt3p9s2bN0imnnKLrrrtOxx57rM455xwtWLBA55xzjo488kj9+te/TjzXN998o3POOUcTJkzQSSedpE8++STj19bY2KhJkyZp48aNGj9+/HYXU2bNmqVVq1bpyiuvTFyQOO2009S9e3e98sorifudcMIJiQszlZWV2rhxo/bZZ5/E7X/4wx908cUXq2/fvpKkHj166LrrrtMf/vCH7cZpGIYOPPBArV69us3XAQCAl8jUAwCQwr/+9S/tu+++iX9XVVXp2WefVSgUalWq/uGHH+rvf/+7nnrqKVVUVGjDhg2SpBdffFFbtmzRc889J8MwNHnyZE2bNk1jxozRP//5T7366qsKhULauHHjdttubGzUVVddpYcfflhDhgzRa6+9pmuvvVbTpk3T+PHj9dJLL2nEiBGSYuXlDz30kGpqanTffffp8ccfV9euXfX555/r5ptv1rPPPitJmjNnjl566SX17t271bb22msvnXbaaZJimXBJrV6fJC1YsED333+/+vbtqwsvvFC33nqrpkyZomg0qiOPPFITJ05U9+7ddeONN+qRRx7RzjvvrBUrVmjSpEl6++23W1UFpHptjz32mCZNmpQIyrf19ddfa7/99lM4HG7190GDBunrr79O/HvffffV9OnTVVlZqRkzZmjcuHFasGBBq+cZPHjwds+xcuVK1dbWtvp7U1OT3nvvPY0ZM2a78QAA4DWCegAA2jB+/HhZlqWdd95Z9957b+Lvxx9/vEKh7Qvd/vOf/2jChAmqqKiQJHXr1k2SNHPmTM2fP18ffPCBJGnr1q0qLy9X586dVVZWpptvvlkjRozQ6NGjt3vORYsWqaKiQkOGDJEkjR07Vrfeeqtqa2s1ZswYPfTQQ2poaNA333yj4uJi7bPPPpo5c6aWLl2qSZMmJZ5n2wsGBx988HYBfaYGDBiQyGwPGDBA0WhUHTt2lCTtvvvuWr58uTZt2qRvv/1WF198ceJxTU1NWrdunXr06JHRa3PK8ccfr5deekmvvPKK/vrXv7YK6jMxb948jR8/XqtWrVKfPn00duxYx8YGAIBTCOoBAGhDW1liSSorK2v3c1199dVtZnmfeeYZffLJJ3rvvff061//Wi+++GLiokA6nTt31rBhw/T2229r9uzZibnjlmVp6NCh+uMf/+jY+OPi89UlKRwOt8qWh0IhRaNRWZalPn36JH3/srXPPvvoL3/5i6LRaKvtf/HFFzrllFNa3XfcuHEaP368Bg0apO7du2/3PHPnzm1VhfHFF1+oT58+6tSpk6SWOfX19fW64IIL9Mgjj+j666/PyesCAMAu5tQDAOCAUaNG6YUXXkhkxePl94cffrimTp2qLVu2SJJqamq0fPly1dbWqqamRiNGjNA111yj0tJSrVmzptVz7rHHHqqpqdGcOXMkSa+//rp23333RNA5fvx4vfjii/rnP/+pH/3oR5KkIUOG6KuvvtKXX34pKdYQ76uvvsroNXTq1CnrTHm/fv3U1NSkmTNnJv7W1uoB6V5bMsOHD1fv3r318MMPy7IsSbGLI9XV1Yn3IK5Hjx66+uqrddlll233PBdddJH+8Ic/JPolVFdX64EHHmhVYRDXsWNH3XbbbXr22We1bt26lOMDAMBtZOoBAHDAiBEjdNppp+mMM85QOBxWRUWFnnjiCU2YMEFVVVU69dRTJUnFxcW66aabVFxcrMsvv1xbt26VZVk6/PDD1b9//1bPWVJSol//+te688471dDQoIqKikQzPEk69NBDddNNN2nAgAHq2bOnpFjZ/8MPP6w777xTW7ZsUVNTk44++mjtt99+aV/DkUceqcsuu0wnnHCCzjrrLO2yyy7tfh+Ki4v1+9//Xr/4xS/0q1/9Sk1NTRoyZIjuueeedr22VH7729/q7rvv1hFHHKFQKKQ99thDf/7zn1tVEsRNmDChzecYOXKkfvazn+myyy5TJBKRZVk6/fTTE53vv2vPPffUscceq7/85S+69tprMxonAABuMKz4ZW4AAAAAABAolN8DAAAAABBQBPUAAAAAAAQUQT0AAAAAAAHl+0Z5pmkqEokoFArJMAyvhwMAAAAAgKssy5JpmioqKlIo1Do37/ugPhKJ6IsvvvB6GAAAAAAAeGrQoEHbrfbi+6A+fhVi0KBBCofDHo8mO/PmzdPAgQO9HgYAFBSOvQDgLo67gPOi0ai++OKL7bL0UgCC+njJfTgcDnxQbxhG4F8DAAQNx14AcBfHXSB32pqSTqM8AAAAAAACiqAeAAAAAICAIqgHAAAAACCgCOoBAAAAAAgognoAAAAAAAKKoB4AAAAAgIAiqAcAAAAAIKAI6gEAAAAACCiCegAAAAAAAoqgHgAAAACAgCKoBwAAAAAgoAjqAQAAAAAIKIJ6AAAAAAACiqAeAAAAAICAIqgHAAAAACCgCOoBAAAAAAgognoAAAAAAAKKoB4AAAAAgIAiqAcAAAAAIKAI6gEAAAAACCiCegAAAAAAAqrI6wHkmy/e+48i/3687RstS5+/ZLg7oAzUlnTXodf9WpI068s1evT5OR6PCG46+0f76bADdm33475etkH3TPkoByMC0nv85qMUDrf/uvTjM+bp/TkrHRvHEcN205nHDkh6+21/+lBLV29ybHvZGrz3jrrq9AOS3v7ub+9SRc1CF0dUeDb1PlCHnXdlux+3tTGii+99OwcjglOO/UFfnXJk/6S3//wP72vl2lpHtnX2j76nww7YJentF937thoaI45sK+4XF41Un56d2v24V/67SM+/842jYwmivXfrppvOPijp7X95aZ7em+3c7xMyc9rR/XXMwX29HkbWCOod1lRfpwqjTss69pdCxa1ua2xsUElJB49G1rbd6uYp0tQyzrr6JlVv3KrDU/xQIH/M/GyFNm1psvXY+oaIqjdu1bD
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_best_prices(\"OMORI\", df_omori).show()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:56.463485475Z",
"start_time": "2023-07-02T06:47:56.096174005Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAC73UlEQVR4nOzdd7wkRbk38F/1zJy4eZddlrhLXmQRRJJIUnwvQUkioCBXRAmKKCKCqCiiKCqK6V4MVwEBAYmCYADEBJKXJS4oLGzOZ/fkmemu94+e7jlhzkzVTIeqOb/v53PvyjlzZmpSdz/1PPWUkFJKEBEREREREZF1nLQHQERERERERET1YVBPREREREREZCkG9URERERERESWYlBPREREREREZCkG9URERERERESWYlBPRDRO7bzzzjjmmGPwvve9Dx/4wAfw/PPPV7zdc889hy9+8YsJjy4+jz32GB577LHwv9N8fhdeeCHe+9734utf//qwny9duhS77bYbjjnmGLz3ve/FaaedhiVLllS9rySe15NPPolTTz0V73nPe/D+978f55xzDhYvXqx9PzfeeCMOP/xwnHzyyXjppZfwwAMPaP39o48+ip133hkPP/zwsJ+/613vwtKlS6v+7c4776w7XGUqr/kdd9xRdYzXXnst3vve9+Loo4/GEUccgV/96lfK961j6dKleNe73lXzdg888ABeeumlyB6XiIiil017AERElJ67774bAHDDDTfgS1/6Eu66665hvy8Wi5g/fz7mz5+fwuga53kehBAQQoQ/e/zxxwEA++67LwCk9vzWrl2LRx55BP/85z8r/n7mzJnh+3PllVfiW9/6Fn7yk5+MeX9xP6+XXnoJ5557Lq6++mrst99+APxAc82aNZgzZ86w2xaLRWSzY19i3HDDDfjJT36C7bffHnfccQcef/xxHHbYYcpjufPOO7HPPvvgrrvuwiGHHFLP04mFymt+5513Ysstt8RWW2016ncLFy7E7bffjltuuQWdnZ3I5/N48803le87Dg888AD22WcfzJs3T+vvan0GiIgoOjzaEhER9t9/f3z3u98FAHz4wx/Grrvuiqeffho77LADjj32WPz4xz/Gr3/9awDATTfdhN/85jcQQmDy5Mn49a9/DSklfvzjH+Ovf/0r8vk89thjD1x66aXIZrP4wQ9+gD/96U9wHAdTpkwJ72eop59+GldccQUGBwcxZcoUfO1rX8PcuXNx6qmn4pOf/CT2339/AMA111yD7u5uXHjhhXjyySfxve99DwMDA2hvb8dll12GHXbYAXfccQfuv/9+CCGwZMkS3HTTTZg6dSoA4N///jduvvlmAH6wctppp2GrrbYKn99jjz2Gq666CnPmzMFzzz2HzTffHBdddBGuvPJKLFmyBEcddRTOP/98AMCrr76KK664Ahs3boTjOLj44ovx9re/Xem5bbnlljjttNOwceNGHHPMMTj99NNx7LHHjvn+7Lfffvjb3/4GALj11ltx/fXXQwiBXXbZBV/5ylewcuXKqs8LAH784x+Hr8t+++2Hiy++GNlsFhdffDE6OzuxaNEirFy5Eu973/vw6U9/etQYfvGLX+DEE08MA3oAw4LMnXfeGZ/61Kfw0EMP4f3vfz+23XZb/PCHP0Q+n0cmk8FXv/pVzJ8/H5///OexZMkSfOpTn8I73vEOPPDAA+jr68MxxxyDww8/HOecc86YrwMA9Pb24m9/+xvuvvtuHH300di0aRMmTZo06naLFi3C17/+dWzcuBEAcOmll4bvz89+9jP84Q9/QF9fH6688kq89a1vBQD85je/wW233QbXdbHtttviG9/4BiZMmICLL74Y7e3tePXVV7F06VKcfvrp6OjowC233IJNmzbhyiuvxJ577onHHnssfM3/85//4JJLLsHg4CAKhQLOO+889Pf34/nnn8eXvvQldHR04Nvf/vawyoFVq1Zh0qRJaG9vBwC0tLRghx12AIBh963zOd15552xaNEiAH52/rTTTsNDDz007LXK5/M466yzsHHjRgwMDODYY4/FmWeeiUceeQQPPfQQ/vWvf+G6667D5z73Oey333741re+FVaFHHXUUeF7NvLY8c1vfrPqe0lERBGRREQ0Lu20007h//7JT34iTzrpJCmllKeeeqr8zGc+I13XlVJK+a9//UueeuqpUkopH3nkEfne975XbtiwQUop5fr166WUUt5+++3yW9/6lvQ8T0op5Ze//GX5m9/8Rm7YsEEefvjh4X11dXWNGsfg4KA86KCD5DPPPCOllPL3v/+9fP/73y+llPLWW2+VF198cXjbI444Qi5atEhu2LBBnnDCCeH9Pf300/LEE08Mx7L33nvLFStWVHzeP/zhD+UPf/jD8L+HPr9//etfcv78+fL111+XUkp55plnyhNPPFH29fXJ7u5uue+++8qVK1fKQqEg3//+98tly5ZJKaVcsmSJPPTQQ8Pnr/Lcgr+pZOjvXNeVX/rSl+RnP/tZ+dJLL8lDDz1Urlu3Tkop5aWXXiqvvPLKms/rwQcflMcdd5zs6+uTxWJRnnXWWfKGG26QUkp50UUXydNPP13m83nZ3d0t99tvP7ly5cpRYzriiCPkn//854rjldL/PAX3KaX/Xgfv+8KFC+Xxxx8f/u7QQw+VS5YskVL679dFF1007L4+9rGPyYULF1Z8nNtvv11+5jOfkVJKecEFF8ibb7551P3m83l52GGHyb///e9SSikLhYLctGlTOM477rhDSinlPffcI08//fTw9frMZz4jC4WClFLKa665Rn73u98NX6OPfvSjslAoyFWrVsk99thD/vSnP5VSSvm73/1u2H0Er/nll18u77nnHimllJ7nhY9/6qmnyn/9618Vn1tvb688/vjj5SGHHCIvvPBCeeedd8p8Pj/qvlU/p8HzDQz9XI38jAXfpcHBQXncccfJV155JXzut99+e3gf119/vTzrrLNksViUfX198rjjjpMPP/xw+NyGHjuIiCgZzNQTEY1jxxxzDKSU2GKLLfCtb30r/PnRRx8NxxndduVvf/sbjj/+eEyZMgUAwgz4ww8/jJdeegmPPPIIAGBgYACdnZ2YOHEiOjo68MUvfhH7778/Dj300FH3+dprr2HKlCnYY489AABHHnkkvvKVr6CnpweHH344rr76agwODuLVV19FLpfDTjvthIcffhhvvPEGTjvttPB+gows4Ge2N99887pek3nz5oXl5PPmzYPrumHmdNttt8WSJUuwadMm/Oc//xmWVS4UCli3bh1mzJih9NxqWb16dfj+7Ljjjrj44otx//33493vfjemTZsGADj55JOV1lk/9thjOProo8PnccIJJ+Duu+/GKaecAgB4z3veg1wuh1wuh7lz52LJkiWYNWtW7RdrhKHVBmvXrsWFF16I5cuXI5PJ4LXXXlO+n5///Odj/u7OO+/EGWecAQA47rjj8KMf/QgnnXTSsNu8/vrraGtrwzvf+U4AQDabxcSJE8PfH3nkkQCA3XffHT/4wQ8A+J/hZ555Bu9///sB+O/n0Cz6e97zHmSzWcycOROTJk0Klwu85S1vwQ9/+MNR43zb296G//3f/8WSJUvwzne+U6l0vqOjA7/97W/x7LPP4oknnsDPfvYz3HPPPfi///u/UbdV+Zyqvoee5+F//ud/8Oijj0JKiVWrVuGVV17BjjvuOOq2jz32GE444QRkMhm0t7fj6KOPxqOPPoqDDz4YwNjHDiIiig+DeiKicSxYsz1SR0eH9n1dcMEFOPzww0f9/Oabb8aTTz6Jv//97/j+97+PO++8M5wUqGXixInYe++98eCDD2LBggU45phjAABSSuy555746U9/Gtn4Ay0tLeH/zmQyyGQy4X87jgPXdSGlxJZbbjnm6xeFoWvq49ba2hr+70wmA9d1R91m3rx5eO6556qufe/s7Az/91e/+lUcf/zxOO6449DT04O99tqr4XEuW7YMzzzzDC677DJ87Wtfg5QSa9aswRtvvIFtt91W+X6C5xu8n4EPf/jD4YTBSCM/F8F/j/V6HXnkkdhjjz3
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_best_prices(\"Potion Craft: Alchemist Simulator\", df_potioncraft).show()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:56.888455862Z",
"start_time": "2023-07-02T06:47:56.465340036Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAADp4UlEQVR4nOydd5weVb3/P/NszW7KppBAAiSREkCIFCEg0iz3Ioo0AUFFEcWCol7FDggoCIj9+kPvvUoRUECaCl7bxYogQgihhJbes9nNbrbv85zfH/PMPO2UOWXmzMye9+sFefZ5Zk6bc86cbznf4xFCCBwOh8PhcDgcDofD4XBkjoLtAjgcDofD4XA4HA6Hw+FQwwn1DofD4XA4HA6Hw+FwZBQn1DscDofD4XA4HA6Hw5FRnFDvcDgcDofD4XA4HA5HRnFCvcPhcDgcDofD4XA4HBnFCfUOh8PhsMKiRYtwyimn4OSTT8aZZ56J5cuXU697+umn8aUvfSnh0sXHo48+ikcffTT822b9LrnkErztbW/DV7/61ZrvH330UbznPe+p+e6ee+7B5z//eWGa99xzD9atWxf+fccdd+COO+4I062uOy2fKLznPe+pSaeaF154ARdeeCHe8IY34PTTT8c73vEO3HXXXdJ5mCSNZXI4HA5Hfmi2XQCHw+FwTFzuv/9+AMBPf/pTfPnLX8Z9991X8/v4+DgOOuggHHTQQRZKp0+pVILnefA8L/zuscceAwAsWbIEAKzVb9u2bfj73/+Ov/3tb0bTvffeezFv3jzsvvvuAIBzzjkn/K2+7qbZuHEjzjvvPFx22WU46aSTAACbN2/GPffcE0t+WS2Tw+FwOPKFE+odDofDYZ2jjjoK3/jGNwD4VtgDDjgATzzxBPbee2+ceuqp+P73v49bb70VAHD77bfjjjvugOd5mDZtGm699VYQQvD9738ff/rTnzA6OoqDDz4Yl112GZqbm/Gd73wHv/3tb1EoFNDV1RWmU80TTzyBq6++GiMjI+jq6sKVV16JhQsX4t3vfjcuuugiHHXUUQCAG2+8Ef39/bjkkkvw+OOP45vf/CaGh4cxadIkXHHFFdh7771xzz334KGHHoLneVi7di1uv/12TJ8+HQDw0ksv4Wc/+xkA4Pe//z3OO+887L777mH9Hn30Udxwww1YsGABnn76aey666743Oc+h2uvvRZr167FW9/6VnzqU58CALz44ou4+uqrsWPHDhQKBXz+85/Ha1/72kh1mzdvHs477zzs2LEDp5xyCs4//3yceuqpkZ/X9773Paxbtw5bt27FunXrcNhhh+Gaa67Bfffdh+XLl+PLX/4yOjo6cN111+G3v/0tAOAtb3kLte7V3HHHHbj77rtRLBYxf/58fO1rX8PkyZOxceNGfPazn0V3dzf22WcfjIyMUMt1++234/Wvf30oPAPAnDlz8JGPfCT8+84778Qtt9wCz/Ow33774fLLL8fkyZOxc+dOXH755XjhhRcAAO9973vxjne8A6VSCZdffjmeeOIJFAoFLFq0CN/4xje4fU6mTKOjo/jQhz6EHTt2YHh4GKeeeiouvPBCAMDnP/95TJo0CS+++CLWrVuH888/Hx0dHfj5z3+Ovr4+XHvttTjkkEO4bedwOByOCQBxOBwOh8MC++67b/j5P//zP8nZZ59NCCHk3e9+N/nkJz9JisUiIYSQf/zjH+Td7343IYSQv//97+Rtb3sb6enpIYQQsn37dkIIIb/4xS/I17/+dVIqlQghhFx66aXkjjvuID09PeTEE08M0+rt7W0ox8jICDn22GPJk08+SQgh5Ne//jU544wzCCGE3HnnneTzn/98eO1b3vIWsmLFCtLT00Pe8Y53hOk98cQT5KyzzgrLcvjhh5ONGzdS6/3d736XfPe73w3/rq7fP/7xD3LQQQeRlStXEkIIufDCC8lZZ51FBgcHSX9/P1myZAnZtGkTGRsbI2eccQZZv349IYSQtWvXkhNOOCGsf5S6BffQqC5TwC9+8Qvyuc99LqzD2972NrJz504yOjpK3vrWt5J//etfhBD/+f3jH/+g1ldU909+8pNkbGyMEELIjTfeSL7xjW8QQgi56KKLyI9//GNCCCFPPfUU2W+//WryCPjABz5AfvKTn1DrRAghzz33HDnhhBNId3c3IYSQyy67jFx77bWEEEKuueYacvnllxNCCOnu7iYnnHACef7558ny5cvJ+9///jCN4Jmz+pxsmYrFYpjmyMgIOe2008gLL7xACCHkc5/7HHn/+99PxsbGyObNm8nBBx9MfvjDHxJCCHnggQfI+eefL2w7h8PhcOQfZ6l3OBwOhzVOOeUUEEIwd+5cfP3rXw+/f/vb345CoTHsy5///Gecfvrp6OrqAoDQAv7www/jueeew9///ncAwPDwMDo7OzFlyhR0dHTgS1/6Eo466iiccMIJDWm+8sor6OrqwsEHHwwAOOmkk3D55Zdj586dOPHEE/Htb38bIyMjePHFF9HS0oJ9990XDz/8MFavXo3zzjsvTGfHjh3h5yOPPBK77rqrUpvsv//+WLBgQfi5WCxi0qRJAID58+dj7dq16Ovrw8svv1xjgR4bG0N3dzdmzZoVqW48qrcLsL4/7rjj0NnZGZZz7dq1OPTQQ6XrG/Dwww/jySefxBlnnBHWZ9GiRQD8vffXXHMNAGDx4sXh9yKuuOIKPPHEE9i2bRv+9re/4bHHHsMb3/hGzJgxAwDwzne+M4xn8Oijj+Lqq68GAMyYMQNvfOMb8dhjj+GUU07Bhg0bcOWVV2LJkiU47rjjwvLS+pxsmUqlEn7wgx/gkUceASEEmzdvxgsvvIB99tkHAPDmN78Zzc3NmD17NqZOnYo3velNAIBXv/rV+O53vytsO4fD4XDkHyfUOxwOh8MawZ76ejo6OqTT+vSnP40TTzyx4fuf/exnePzxx/GXv/wF3/rWt3DvvfeGSgERU6ZMweGHH44//OEPWLp0KU455RQAACEEhxxyCH74wx8aK39Aa2tr+LmpqQlNTU3h34VCAcViEYQQzJs3j9l+ukyfPh29vb013/X29oZKFABoa2urKWexWNTO9z3veQ8uuOAC5fv3228/PPPMM+Hfl19+OQBoCbhTp07Fvffei0ceeQQPP/wwvve974XtzupzMmX65S9/iVdeeQV33nkn2tvb8fGPf7xme0F9fwj+rm9z3bZzOBwOR3Zx0e8dDofDkRmOPfZY3HPPPaFVvKenBwBw/PHH47bbbsPg4CAAXwBdu3Ytdu7cid7eXhx11FH4zGc+g/b2dmzatKkmzVe96lXo7e3FU089BQB46KGHMH/+/HA/8imnnIJ7770Xv/nNb/C2t70NAHDwwQfj2WefDYW1UqmEZ599NlIdgv3bOixcuBBjY2N4+OGHw+9opweI6sZi/vz5GBgYwNKlSwEAg4ODePDBB/G6171OWLbOzk5m/Xh1P+6443DPPfdg+/btYZ4vv/wyAD+w3i9+8YuwnitWrKCmcc455+DPf/4zfvOb34TfDQ0NhZ+POOII/OEPfwj7zV133YUjjzwSgO9dEUSk7+npwR/+8AccccQR2L59O0ZHR3HCCSfgC1/4AjZv3oyBgQFmn5MtU39/P2bMmIH29nasXbtWKXAhr+0cDofDkX+cpd7hcDgcmeGoo47CO9/5TrzrXe9CU1MTurq6cPPNN+P000/Hli1bcPbZZwMAWlpa8MUvfhEtLS34+Mc/juHhYRBCcPzxxzdYbVtbW/Gtb30LV111VRhM7vrrrw9/P+aYY/DFL34R+++/P2bPng3At2R/5zvfwVVXXYXBwUGMjY3h3/7t33DAAQcI6/CmN70JH/vYx3DqqafiPe95T0OwuCi0tLTgBz/4Ab761a/im9/8JsbGxnDwwQeHLupR68aitbUV3/72t3HNNddgcHAQhBCceuqpeP3rXy+898wzz8T111+P7373u7juuutqfuPV/cgjj8T555+P973vfSCEAAA+9rGPYa+99sKXvvQlXHLJJbjrrruwzz77ME8LmDt3Lm6++WbccMMNuO666zBz5ky0trb
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_best_prices(\"Untitled Goose Game\", df_untitledgoosegame).show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si può osservare come:\n",
"\n",
"- i prezzi tendano ad essere costanti o con piccoli aumenti nel tempo\n",
"- vi sono frequenti valli sparse coincidenti ai periodi in cui i prodotti sono in sconto\n",
"- IsThereAnyDeal abbia spesso prezzi minori rispetto a quelli ottenuti direttamente da Steam"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si realizza lo stesso grafico per Factorio, al fine di evidenziarne le differenze per l'ultima volta:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:57.653217941Z",
"start_time": "2023-07-02T06:47:56.889235591Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAABME0lEQVR4nO3deZyd490/8M/MZJNFEkuixWMXlNRSlfwsFUXtIbVVSXlaWpQuqnRBUWopRbX1dLWUqp1aWlvRqlL1RMT+1L4lQhJZJzNz7t8fSaY0ssk5Z3JP3u/Xi9fMWe7re883Yj7nuu7rbiiKoggAAABQOo0dXQAAAADwwQj1AAAAUFJCPQAAAJSUUA8AAAAlJdQDAABASQn1AJBk0KBBGT58eHbffffss88+GTNmzPu+7rHHHst3vvOdOldXOw8++GAefPDB9u878vyOPfbY7Lbbbvn+97//nsdfeeWVbLjhhhk+fHj7P4888sgiH/+6667LK6+88oFqu+uuu3L++ed/oPcCQC01uKUdAMwK9U8//XSS5Le//W2uueaa3HDDDe95TWtra7p06dIB1VVHpVJJQ0NDGhoa2h/78Y9/nCQ56qijOqqsJMn48eMzfPjw3H///XM998orr2TkyJG5++67F2uMgw46KF/+8pezxRZbLNL7yt53ADo3/4cCgP8wdOjQ/PCHP0wyKwhusMEGeeSRR7L22mtnzz33zIUXXpjLLrssSXLFFVfkd7/7XRoaGtK3b99cdtllKYoiF154Ye69997MnDkzG2+8cU488cR06dIl559/fm6//fY0NjamX79+7cd5t0ceeSSnn356mpub069fv5xyyilZY401cuCBB+bII4/M0KFDkyQXXXRRJk+enGOPPTYPP/xwzj333MyYMSPLLLNMTj755Ky99tq57rrrctttt6WhoSEvv/xyrrjiivTv3z9J8n//93+58sorkyR33nlnRo4cmVVWWaX9/B588MGcc845WX311fPYY49lpZVWynHHHZczzzwzL7/8cnbdddd87WtfS5I8++yzOf300zNp0qQ0Njbm+OOPz8c+9rGFOreVV145I0eOzKRJkzJ8+PAccsgh2XPPPefbo5kzZ+aLX/xiJk2alBkzZmTPPffMYYcdliSZOHFiTj311DzzzDNJkr333jt9+/bNmDFj8t3vfjc9e/bMWWedlZVXXjknnXRS++s+97nPZe+9906SbLfddtltt91y//33Z6uttspqq62Whx56KGeccUZaWlpyxhlntK9w2HXXXXP44Ycv5J8uAKiyAgAo1l133favf/KTnxT77bdfURRFceCBBxZf/epXi7a2tqIoiuLvf/97ceCBBxZFURR/+9vfit12262YMGFCURRF8fbbbxdFURTXXnttccYZZxSVSqUoiqI44YQTit/97nfFhAkTip122qn9WBMnTpyrjubm5mKbbbYp/vd//7coiqK45ZZbik9/+tNFURTFVVddVRx//PHtr915552Lp59+upgwYUKx9957tx/vkUceKfbdd9/2WjbffPPi9ddff9/zvuCCC4oLLrig/ft3n9/f//73YqONNiqef/75oiiK4rDDDiv23XffYtq0acXkyZOLLbbYonjjjTeKlpaW4tOf/nTx6quvFkVRFC+//HIxbNiw9vNfmHOb85738/LLLxcf+chHij322KPYY489iv32269oa2trP9/m5uZir732Kp555pmiKIriG9/4RnHuuee2v39OXw488MDi73//e/vjP/jBD4qTTjqpKIqieOutt4phw4YVTz31VFEURTFs2LDizDPPbH/ttddeWxx33HFFURTFpZdeWnzxi18sWltbi2nTphV77bVXcc8997xv7QBQa2bqAWC24cOHpyiKfPjDH84ZZ5zR/vgee+yRxsa5t6G57777MmLEiPTr1y9J2mfA77nnnjz55JP529/+liSZMWNGevXqlT59+qRnz575zne+k6FDh2bYsGFzHfO5555Lv379svHGGydJdtlll5x00kmZMmVKdtppp5x33nlpbm7Os88+m65du2bdddfNPffckxdffDEjR45sP86kSZPavx4yZEhWWmmlD/QzWX/99bP66qu3f93W1pZlllkmSbLaaqvl5ZdfzjvvvJN//etf75mtbmlpyVtvvZUVVlhhoc5tQQYMGJAbb7yx/fvW1tb89Kc/zQMPPJCiKDJ27Ng888wzWWeddXLfffflT3/6U/tr5/TlPz344IM5/fTTkyTLLbdcPvnJT+ahhx7KoEGDkmSeqwUefPDB7L333mlqasoyyyyTPfbYIw888EA+8YlPLPA8AKDahHoAmO3dofHdevbsucjHOuaYY7LTTjvN9fiVV16Zhx9+OH/5y1/yox/9KNdff337hwIL0qdPn2y++ea56667MmrUqAwfPjxJUhRFNtlkk/zP//xP1eqfo1u3bu1fNzU1pampqf37xsbGtLW1pSiKrLzyyvP8+dXCH/7whzz33HO56qqr0qNHjxx11FFpbm6u6hiL83MDgHqx+z0AfEDbbLNNrrvuuvZZ8QkTJiRJtt1221x++eWZNm1aklnXeL/88suZMmVKJk6cmKFDh+Yb3/hGevTokTfeeOM9x1xzzTUzceLEPProo0mS2267Lauttlp69+6dZNZqguuvvz5//OMfs9tuuyVJNt544zzxxBN5/PHHk8zaEO+JJ55YqHPo3bv3Qs2Uz88aa6yRlpaW3HPPPe2Pvd/dAxZ0boti8uTJWW655dKjR4+8/PLL79lgb5tttslvfvOb9u/n9KVXr17vOdchQ4bk6quvbn/NXXfdlY9//OMLHHvIkCG59tpr09bWlunTp+cPf/hD+z4HAFBvZuoB4AMaOnRo9t9//3z2s59NU1NT+vXrl0suuSQjRozIuHHjst9++yVJunbtmm9/+9vp2rVrjjrqqMyYMSNFUWTbbbdtX+o9R7du3fKjH/0op556avtmcmeffXb781tvvXW+/e1vZ/3118+AAQOSzFpefv755+fUU0/NtGnT0tLSkh133DEbbLDBAs9h++23z5e//OXsueeeOeigg7LKKqss8s+ha9eu+elPf5rvf//7Offcc9PS0pKNN944P/jBDxbp3BbF8OHD86c//Sm77rprVl111feE8e985zs59dRTs+uuu6apqSl77713Ro4cmX322Sdnn312Lrjggpx11lk58sgjc9JJJ2X33XdPkhxxxBFz9eP97Lfffnn++efbV0rsuuuult4D0GHc0g4AAABKyvJ7AAAAKCmhHgAAAEpKqAcAAICSWuI3yqtUKmltbU1jY2MaGho6uhwAAACoq6IoUqlU0qVLlzQ2vndufokP9a2trXnsscc6ugwAAADoUBtttFG6dev2nseW+FA/51OIjTbaKE1NTTUda8yYMdlwww1rOgYdS487N/3t/PS489Pjzk+POzf97fz0uGO0tbXlsccem2uWPilBqJ+z5L6pqanmob6hoaHmY9Cx9Lhz09/OT487Pz3u/PS4c9Pfzk+PO9b7XZJuozwAAAAoKaEeAAAASkqoBwAAgJIS6gEAAKCkhHoAAAAoKaEeAAAASkqoBwAAgJIS6gEAAKCkhHoAAAAoKaEeAAAASkqoBwAAgJIS6gEAAKCkhHoAAAAoKaEeAAAASkqoBwAAgJIS6gEAAKCkhHoAAAAoKaEeAAAASkqoBwAAgJIS6gEAAKCkhHoAAAAoqS4dXQAAAACdw9fOuzcT35lRteNt1/BgVm4YV7XjvVu3jXbMVsP3qMmx60moBwAAoCrenDAtM1sq2eIjK1XleINefysrNL+ecT1Wq8rx5hgw48W8+s7Yqh6zowj1AAAAVEWlUmTrjVeuWqjv+07XzFx2/fRY8xNVOd4c0/7+66oeryO5ph4AAICqqBRJQ0M1D1ip8gE7H6EeAACAqiiKIo1VDeHV/pSg8xHqAQAAqIqiyhm8oaikiFA/P0I9AAAAVVGpVHmmvrD8fkGEegAAAKqiKIo0VDXUFxFb589PBwAAgKqoFEV1J9arvZ6/ExLqAQAAqIpZGbyq298L9Qsg1AMAAFA
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_best_prices(\"Factorio\", df_factorio).show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si osserva che:\n",
"\n",
"- il suo prezzo è sempre costante e con piccoli aumenti nel tempo\n",
"- non è presente nemmeno una valle; il prezzo è monotono crescente"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si scarta il dataset relativo a Factorio; non sarà più usato per il resto di questa relazione."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:57.667581855Z",
"start_time": "2023-07-02T06:47:57.655711829Z"
}
},
"outputs": [],
"source": [
"del df_factorio"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sovrapposizione di giocatori concorrenti e prezzo"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si ipotizza che i picchi nel numero di giocatori concorrenti possano coincidere con periodi in cui il relativo videogioco è in sconto."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si realizzano grafici che li comparano visivamente:"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:57.802395700Z",
"start_time": "2023-07-02T06:47:57.670855693Z"
}
},
"outputs": [],
"source": [
"def plot_discount_overlap(df: pd.DataFrame) -> so.Plot:\n",
" return (\n",
" so.Plot(\n",
" data=df.reset_index(names=\"Date\")[[\n",
" \"Date\",\n",
" \"SteamDB · Relative concurrent players\",\n",
" \"SteamDB · Relative Steam price\",\n",
" ]].melt(\n",
" id_vars=[\"Date\"],\n",
" value_vars=[\n",
" \"SteamDB · Relative concurrent players\",\n",
" \"SteamDB · Relative Steam price\",\n",
" ],\n",
" var_name=\"Data\",\n",
" value_name=\"·\"\n",
" ),\n",
" x=\"Date\",\n",
" y=\"·\",\n",
" )\n",
" .facet(\n",
" row=\"Data\",\n",
" )\n",
" .add(\n",
" so.Area(\n",
" alpha=0.6,\n",
" )\n",
" )\n",
" .scale(\n",
" x=so.Temporal()\n",
" .tick(locator=mpld.YearLocator()),\n",
" y=so.Continuous()\n",
" .tick(locator=tick.AutoLocator()),\n",
" )\n",
" .theme(theme)\n",
" )\n"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:58.462676946Z",
"start_time": "2023-07-02T06:47:57.685270843Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 2 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdeXxcd3kv/s+ZRftuW/LuJHZ2W9kTwhJCHJKUAqG0vUBp0vZe4N6WlrY3FOgGLy5Q4NeWC4X2lqWFGy4FEiAsgSZkdxIcO4kXebcsy7LWkTT7crbv8vvje86ZGWlmNCNrpJH0vF8viC2Nzpw5cyTr+T7P93k0KaUEIYQQQgghhBBClh3fUp8AIYQQQgghhBBC5oeCekIIIYQQQgghZJmioJ4QQgghhBBCCFmmKKgnhBBCCCGEEEKWKQrqCSGEEEIIIYSQZYqCekIIITXnZz/7Ge69917ce++9uOeee/D5z38eAJBIJPCtb31r0c7jRz/6EW6++Wa84x3vwN13343f/u3fxkMPPeR9ft++fbjuuutw77334u1vfzt+4zd+Ay+//HLFz3PHHXfgLW95C97+9rfjrW99K5588smyzu1jH/vYnI/71re+hUQi4f39S1/6Ep566qmKz3E12bdvH/bt2zevr7388ssX+GwIIYSQ0gJLfQKEEEJIrlAohL//+7/HI488gjVr1oBzjv7+fgAqqH/wwQfx+7//+4t2PnfccQc+97nPAQAGBgbwoQ99CLFYDB/4wAcAADt37sS3v/1tAMBzzz2Hz372s/jRj35U8fN87Wtfw+bNm/H888/jQx/6EF5++WUEAhf+z/SDDz6IO++8E21tbQCAP/3TP73gY9Yixtis61XoY+XYv38/AOCWW25ZkHNbaPN9XYQQQlYm+heBEEJITQmHw6irq0NraysAwO/344orrgAAfPrTn8bk5CTuvfdebN68Gf/8z/+M/v5+/N3f/R3i8Th8Ph8+9rGP4cYbb0QoFMIDDzyAdDoNy7Lwvve9D7/xG78BALjvvvuwa9cuHDhwABMTE/jIRz6CoaEh/PKXvwRjDF/+8pdx0UUXzTq37du346/+6q/wwAMP4P3vf/+szyeTSbS3t1/Q67/pppuQyWQQj8exZs0avPLKK/jCF74AwzDQ2NiIT37yk9ixY0fe15w4cQKf/OQnYZomOOf48Ic/jNtuuw1f+9rXMDk5iQ984AMIBoP41re+hc9//vO4+eabcdNNN+H3fu/38NRTT0HTNADA3XffjX/5l3/BJZdcgq985St47rnnYFkWrr32Wnz84x+fFUhKKfHlL38ZTzzxBDRNw6WXXop//Md/RCqVwic+8QmcPn0aAPB7v/d7+K3f+i0AapHkN37jN7Bnzx5EIhH81V/9FXbv3g0AePzxx/F//s//gRACdXV1+OY3v4knnngC+/fv9xZWvvzlLwMA/uRP/gRf/vKXce7cOUxOTiIej+Nf/uVf8Lu/+7t405vehAMHDuBDH/oQtm7dWvD+2LdvH77whS/goosuwrFjx9Da2op//ud/RiQSwfe+9z0AwJNPPon7778fv/mbv5n3uu+44w689a1vxZ49e6DrOv78z/8c99xzz6z38s/+7M9w/vx5GIaB1772tfibv/kb6LqON7/5zfjFL37hLbTcd999+MM//EO89rWvxXe/+1384Ac/AOcc27Ztw2c+8xm0tLTgYx/7GOrq6nD69Gk0Nzfj85//PP7n//yfiMfjYIzh3e9+N+67777533iEEEKWLQrqCSGE1JQrrrgC27dvx+23346bb77ZK39vamrC3/zN3+D+++/HT37yEwAqY/mXf/mX+Kd/+ids3LgRIyMjuP/++/HUU0+hvb0dX//619HY2IhEIoF3vvOdeNOb3oSOjg4AKuv/ve99D0eOHMF9992HT37yk3jkkUfwr//6r/i3f/s3fOpTnyp4frt27UI0GkU4HAYAHD16FPfeey90Xcf09DS+8Y1vXNDrf/rpp3HTTTdhzZo1iMVi+PznP49vfOMbaG9vx8GDB/HXf/3X+P73v5/3NVu2bMG3v/1tBINBjI+P43d+53fw9NNP4wMf+AC+973veVUAM7+mp6cHr7zyCm666SYcPnwYzc3N2L59O370ox8hk8ng4YcfhqZp+PjHP44f/OAHePe73513jB/84Ac4ePAgHn74YTQ0NCAajQIAvvKVr6C1tRU/+9nPEIlE8Fu/9VvYtWuXV5quaRoefvhhHDx4EB/72Mewe/duDAwM4LOf/Sy++93vYsOGDUilUqivr5/zeh09ehQPP/ww2traMDIygvHxcdx+++34xCc+4QW7he4PQC2G/N3f/R22b9+Oj3/843jooYfwP/7H//Be55/8yZ8Ufd5MJoMf//jHGBkZwbve9S7vPcv1iU98Ap2dnRBC4IMf/CCeffZZ3H777bjnnnvwk5/8BPfddx/Onj2LyclJ3Hrrrdi3bx/279+P73//+wgEAvjqV7+Kr371q3jggQcAqEqRBx980FvweN3rXof//t//OwAgHo/Pea0IIYSsTBTUE0IIqSk+nw9f/epXcfLkSezbtw8//vGP8d3vfhc//OEPZz12cHAQAwMD+MM//EPvY7ZtIxwOo6GhAZ/5zGdw9OhRaJqGcDiMc+fO4dprrwWgstIAcNVVV0HXdfzar/0aAODqq6/GSy+9VPT8pJQA4GW3c8vvX3nlFfzZn/0ZHn/8cTQ2NuZ93Xe/+11MTk4WLX//wAc+AMuyMDExgX//938HABw6dAhDQ0O4//77vccVCt7S6TT++q//GmfOnEEgEMDU1BSmp6exbt26oq8DAO6991789Kc/xU033YSf/vSnePvb3w4AePbZZ3HixAn86le/AgAYhoHm5uZZX//888/jPe95DxoaGgAAnZ2dANSe9L/7u78DAHR1dWH37t3Yv3+/F9S717q3txfDw8MAgL179+LOO+/Ehg0bAAAtLS0lz911xx13eBlvAOjo6MAb3/hGAKXvDyC7gASoxZpDhw6V9ZwAvMqDzZs349prr8WhQ4e8igPXQw89hP/8z/8E5xyRSATXXXcdbr/9drznPe/Bn/3Zn+G+++7DQw89hN/+7d+Gpml49tlncfDgQa8ywLbtvD36v/Zrv4a6ujoA6tr99V//NXRdx6233lqzWwUIIYRUHwX1hBBCatIVV1yBK664Au95z3vw2te+Fv39/bNK26WU2LRpk5e5z/WVr3wFfr8fjzzyCAKBAN75znfCNE3v825w5Pf7Z/2dc170vI4dO4auri50dXXN+tyNN94Ixhj6+/vR29ub97n3vOc9JV+vm03/zne+g4985CN4/PHHIaXEddddh69+9aslv/aLX/wiLr30Unzxi1+Epmm45ZZb8l5rMW95y1vwla98BZlMBo8//jh+/OMfe5974IEHCpaULwQ3Az/XtXYfI4Tw/m6aZl4Gv6mpKe/xuYsPpe6PgYGBvOOUcy6V2L9/P37xi1/g//2//4fW1lZ87nOf896T7du3o6urC3v37sWjjz6Kn/70p97X3Xffffhv/+2/FTxm7mu94YYb8B//8R/Ys2cPvva1r+HnP/85/tf/+l8Ldv6EEEKWD+p+TwghpKaEQiEcPnzY+/vg4CBs20ZPTw9aWlqQTqe9bPnFF18M27bx7LPPeo8/evQoALW/vbu7G4FAAIcPH8bJkycv+NzOnj2Lz372s/iDP/gDL1Ofq7+/H6lUCps2bZr3c7z3ve/Fhg0b8NBDD+Haa6/F8ePHcezYMQCAEALHjx+f9TXJZBIbNmyApml47LHHEIvFvM81NzcjlUoVfK62tjZcf/31+NSnPoUrr7wSa9euBQDcfvvt+M53voNMJgMAiMViXkY91xve8AZ897vfhWEYAOCV37/mNa/Bww8/7H3sqaeews0331zydd9666148sknMT4+DgBIpVKwbRtbtmzBiRMnwBhDOp3Gc889V/I4uUrdH6W0tLQUvWYut3JkbGwMhw8f9ipAXMlkEm1tbWhpaUE0GsUvf/nLvM//zu/8Dj760Y/i5ptv9haI3vjGN+JHP/oRIpE
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_discount_overlap(df_deeprockgalactic).show()"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:58.979320131Z",
"start_time": "2023-07-02T06:47:58.464572423Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 2 Axes>",
"image/png": "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
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_discount_overlap(df_omori).show()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:59.446836217Z",
"start_time": "2023-07-02T06:47:58.979773389Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 2 Axes>",
"image/png": "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
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_discount_overlap(df_potioncraft).show()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:47:59.986535745Z",
"start_time": "2023-07-02T06:47:59.448328580Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 2 Axes>",
"image/png": "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
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_discount_overlap(df_untitledgoosegame).show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si osserva che la maggior parte dei picchi coincidono con uno sconto."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Coefficienti di correlazione dei precedenti valori"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si utilizza il metodo `pd.DataFrame.corr` per calcolare il coefficiente di correlazione di Pearson tra le due serie mostrate sui precedenti grafici:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:00.111200894Z",
"start_time": "2023-07-02T06:47:59.991849300Z"
}
},
"outputs": [
{
"data": {
"text/plain": "-0.3117441811277705"
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_deeprockgalactic.corr()[\"SteamDB · Relative concurrent players\"][\"SteamDB · Relative Steam price\"]"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:00.111974652Z",
"start_time": "2023-07-02T06:48:00.013758837Z"
}
},
"outputs": [
{
"data": {
"text/plain": "-0.2742322328932592"
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_omori.corr()[\"SteamDB · Relative concurrent players\"][\"SteamDB · Relative Steam price\"]"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:00.112599922Z",
"start_time": "2023-07-02T06:48:00.029518794Z"
}
},
"outputs": [
{
"data": {
"text/plain": "-0.3115367960263604"
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_potioncraft.corr()[\"SteamDB · Relative concurrent players\"][\"SteamDB · Relative Steam price\"]"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:00.114623169Z",
"start_time": "2023-07-02T06:48:00.087739021Z"
}
},
"outputs": [
{
"data": {
"text/plain": "-0.783411760483506"
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_untitledgoosegame.corr()[\"SteamDB · Relative concurrent players\"][\"SteamDB · Relative Steam price\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si osserva che in tutti i casi esiste una correlazione negativa tra le due serie, con intensità più o meno forte a seconda del prodotto."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sovrapposizione di giocatori concorrenti e annunci"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si ipotizza anche che i picchi possano essere corrispondenti alla pubblicazione di un annuncio da parte dello sviluppatore."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si realizzano grafici che li comparano:"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:00.114944140Z",
"start_time": "2023-07-02T06:48:00.088101690Z"
}
},
"outputs": [],
"source": [
"def plot_news_overlap(name: str, df: pd.DataFrame) -> so.Plot:\n",
" cdf = df.reset_index(names=\"Date\")[[\n",
" \"Date\",\n",
" \"SteamDB · Relative concurrent players\",\n",
" \"Steam · Is there News?\",\n",
" ]]\n",
" cdf[\"Steam · Is there News?\"] = cdf[\"Steam · Is there News?\"].astype(int)\n",
"\n",
" return (\n",
" so.Plot(\n",
" data=cdf.melt(\n",
" id_vars=[\"Date\"],\n",
" value_vars=[\n",
" \"SteamDB · Relative concurrent players\",\n",
" \"Steam · Is there News?\",\n",
" ],\n",
" var_name=\"Data\",\n",
" value_name=\"·\"\n",
" ),\n",
" x=\"Date\",\n",
" y=\"·\",\n",
" color=\"Data\",\n",
" )\n",
" .add(\n",
" so.Area(\n",
" alpha=0.6,\n",
" )\n",
" )\n",
" .scale(\n",
" x=so.Temporal()\n",
" .tick(locator=mpld.YearLocator()),\n",
" y=so.Continuous()\n",
" .tick(locator=tick.AutoLocator()),\n",
" )\n",
" .label(\n",
" title=f\"Overlap of concurrent players and publishing of news for {name}\",\n",
" )\n",
" .theme(theme)\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:00.776465214Z",
"start_time": "2023-07-02T06:48:00.088334336Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOy9d7wdRf3//9pzzm3JTW+SEDohBBIRlFAjEJpICqEIAoJKl6I/pPlFUIrAB1AIiCgiXZqEooAIoX2kBD+0AIaWRgqk5+bWU3bm98c5Z8/unpndmS2n3Pt+PpScuzvzfr+nz+zOvNfgnHMQBEEQBEEQBEEQBFF3JKptAEEQBEEQBEEQBEEQwaBFPUEQBEEQBEEQBEHUKbSoJwiCIAiCIAiCIIg6hRb1BEEQBEEQBEEQBFGn0KKeIAiCIAiCIAiCIOoUWtQTBNFn6e7uxq9//WtMnToVBx98ME488UR89NFHkeqYN28eTjzxxEhlyvjXv/6F73znO5gxYwY2bdpUEZ3V5u677w6U1jlz5uDiiy+OwaLqccstt+CWW26piLyLL74Yc+bMAQDcfPPNmDt3rlTO8uXLccABBwjvzZ07FzfffHN4YxV4++23cfjhh2PmzJn4/PPPK6JThcWLF2PmzJmYOXMmXn/99cBy5syZg9133x0zZ87EIYccgqOPPhqPPPJIhJZ6c+KJJ+Kggw7C9OnTceihh+Lhhx8OLEunfT766KOYNm0aDj30UMycORNnnXUWPv30U994O+ywQ2D7XnjhBSxYsMD6u5L1mCAIQkSq2gYQBEFUi8suuwyGYeCf//wnGhoa8PLLL+OUU07B008/jaFDh4aWn8vlIrBSnUceeQQXX3wxvv3tb1dUry65XA6pVEr6tw733nsvDjzwQAwcODAq8yIlTNrqhfPOOy9w3KlTp2Lq1KkRWiPnqaeewve//318//vfr4g+VZ5//nnsvffeuOCCC7TimaaJZDLpuHbAAQfg2muvBQAsXLgQ5557LjZu3IjTTjstMnu9uOqqqzB58mR8/vnnmDlzJvbbbz+MGjUqNn333XcfHnnkEdx2220YO3YsAOCNN97AkiVLMG7cuNj0vvDCC9h9992x4447AqhsPSYIghDRu2caBEEQEpYtW4YXXngBr776KhoaGgAA++23H/baay888MADmDlzJk466STMnTsXhmEAAA455BDcdttt2GabbXDrrbfilVdeQSaTwS677ILLLrsMqVQKJ554IiZMmIB33nkH2223HWbOnGnpXLVqFc4//3x0dnYik8nglFNOwRFHHAEg/5Zrp512wltvvYWOjg6ceOKJwjf8HR0duPzyy603USeddBKOOuoo3HDDDXj77bexdOlSPPbYY5g9e7Yj3sqVK/HrX/8aK1euBACceeaZOOyww/DOO+/gN7/5DdLpNAYPHowrrrgCW2+9NebNm4ff/va32GqrrfDRRx9hwIAB+P3vf4+hQ4cinU7juuuuw1tvvYVEIoF99tkHF154IU488UScffbZmDx5MoD8AuPee+/F5ptvjgMOOACHH344XnvtNeyzzz5IpVJYsmQJVq9ejba2Njz11FN48MEH8be//Q2maWLLLbfE1VdfjdbWVlx88cXo378/PvnkE3z11VeYNm0azjvvPPzpT3/C6tWrcdppp6GhoQF33303hgwZYqV53rx5uPHGG7HZZpvh888/x9ChQ3HDDTeULTIWLFiAX//610in0zBNEz//+c8xZcoUPPXUU3j55Zfx29/+1qozJ510El544QW0t7fjyiuvxJIlS5DJZHDcccfhuOOOA5B/A3jOOefgxRdfxJFHHomRI0di9uzZSCQSYIw5FiBFnnjiCdx///3I5XLo378/rrnmGmyxxRZYvnw5TjzxRBx88MF44403YBgGZs+ejS233BKZTAaXX3453nnnHQwfPhybbbYZttxyy7I6U5QxZcoUvP3222hqasK1116L7bffHnPmzMFbb71lLQSLb+bPOeccAMDSpUtx/PHHY+3atdhtt93wq1/9Co2NjQ75F198MXbffXfMmjULDz74IB544AEkEgkkk0k88MADAADOOa655pqyNNj1z5kzB//617+QTCaxaNEibLnllpg9ezYaGxvx5Zdf4oILLsCGDRuwww47YPny5Tj//POtulYkm83i2muvxbx58wAA3/3ud3HmmWfi3nvvxbPPPotXXnkFTz31FB566KGyNIjqGAB89tln+M1vfoO2tjYkEglcfPHF+OY3v4lzzz0XRx11FKZMmYLLLrsMH3/8MR555BGsX78exxxzDF544QU8//zznmX/z3/+E/fccw8A4N///jfuu+8+fP7559I2ecMNN2Ds2LH47LPPcN1112HChAll5V1k2223xS9+8Qucf/75OPXUU2EYhrSNtbW1+dbn5557DpxzXH755fjWt74l1QsA2223HQYOHIhVq1Zh1KhR0n4GAP7617/iwQcfhGEYGDRoEO677z6HrE8//RTnn38+rrjiCnzjG99w3PvjH/+I//mf/3Hk6Z577mn9/ve//43Zs2cjk8kgmUziV7/6FSZOnFhm709/+lN88cUX6OnpwV577YVLL70UAIR93T777IMXX3wRb775Ju655x78/Oc/x5o1a6x6zDnHLbfcgueffx6GYWD77bfHjTfe6JlfBEEQoeEEQRB9kLlz5/IZM2aUXb/rrrv42WefzTnn/Nhjj+VvvfUW55zz9957jx9xxBGcc84fe+wxfu2113LGGOec81/+8pf8wQcf5JxzfsIJJ/Cf/vSn3DRNzjnnb775Jj/hhBM455x3d3fzrq4uzjnnbW1tfOrUqXzDhg1WvLPOOoubpsk3bNjA999/f75gwYIy+6655hp++eWXc845X7duHd9///35xx9/bMl48803hek97rjj+MMPP8w555wxxjds2MDT6TSfMmUKf/fddznnnD/99NP8yCOPtOyeOHEi//zzz600/uEPf+Ccc/673/2OX3jhhTyXy3HOOV+/fr1Q//7778+XLVtm/b7uuuuse7Nnz+YHH3wwb2trs/T99Kc/5dlslnPO+e23385vuOEGzjnnF110Ef/hD3/IM5kMb29v53vssQf/6quvynS4efPNN/n48eP5+++/zznn/M477+TnnHMO5zxfhhdddBHnnPP29naeyWQ455yvXLmS77fffpwxZuXPunXrOOec33jjjfz3v/+9ZdPcuXM555z39PTwGTNmWHk1btw4fv/991t2HH744XzVqlVW2O7u7jJbi3nIOefPPvusZeeyZcv4uHHjrHy9/fbb+aWXXso55/yee+7hZ555pqPOzJ49u0x2UcZzzz3HOef8n//8p6MuF/OhWC5FGbNnz+b7778/37BhAzdNk5955pn8vvvus9L/2GOPlf2eMmWKlb729naey+U802DX/9hjj/G99tqLr1mzhjPG+I9+9CP+1FNPcc45/8lPfsLvvfdezjnnH3zwAR8/frywrt9777389NNP57lcjnd1dfEjjjiCv/zyy2V2upHVsWw2y4888ki+YsUKKy/3339/zhjj999/P7/++us555zPmDGDz5gxg7e3t/NnnnmGX3LJJZxztbK357lfm5wwYYKwX3DnZZG2tjY+btw4vmbNGt825lWf//KXv3DOOX///ff5lClTeDqdLtNvb//vvPMOP+SQQ3g6nfZM0+uvv84PP/xwqx8stoNiWv7zn//www8/nH/22Wdl+tauXcvHjRtn9SEiNm7caPXF8+fP57NmzbLujRs3zvpd1GuaJj/jjDP4Sy+9xDmX93XuumTP+0ceeYSffPLJVlnb2zZBEERc0Jt6giAICTNmzMBTTz2Fb33rW3jqqacwffp0AMDLL7+MBQsWWOdfe3p60L9/fyve9OnTkUiUuyzJ5XK4+uqr8eGHH8IwDKxbtw5LlizBLrvsAgA44ogjkEgkMHjwYBx44IF46623MH78eIeMefPm4Te/+Q0AYOjQoZg6dSreeustz/OhHR0d+OSTT3DMMccAAAzDwODBg/Hxxx9j8ODBlv7DDjsMl19+OTo6OgA
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_news_overlap(\"Deep Rock Galactic\", df_deeprockgalactic).show()"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:01.311087277Z",
"start_time": "2023-07-02T06:48:00.776166565Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdd5xcddU/8M8tM1tTSaFFOgklEUEJEIhAEBBIMSCggNioAuoPKTZQFAkPKlIe9BH0QUBBkUCCQqTDI0JQWgik190k23enz9z2/f1x596dujuzO+XO7uf9einZmdnZO7uzd7/nnvM9RxJCCBARERERERFRzZGrfQBERERERERENDQM6omIiIiIiIhqFIN6IiIiIiIiohrFoJ6IiIiIiIioRjGoJyIiIiIiIqpRDOqJiKosFovhxz/+MebNm4dTTz0VF110ET788MOSfo2VK1fioosuKulz5vPcc8/hs5/9LBYuXIhgMFiRr1ltDz744JBe69KlS3HjjTeW4Yiq55577sE999xTkee78cYbsXTpUgDAXXfdhRdffDHv87S2tuLkk0/Oed+LL76Iu+66a/gHW4C3334bZ511FhYtWoSNGzdW5GsWYsuWLVi0aBEWLVqEf/3rX8N6rg8//BAXXXQRTj31VMybNw8//vGPEYvF3PunT5+OL33pS2mf84Mf/ADTp09Ha2srAMA0Tdx11134zGc+g9NPPx1nn3122nHdc889mDNnDhYuXIjTTjsNN998M0zTBDDwz5qIaCRiUE9EVGU33XQTIpEIVqxYgeeeew5f+9rX8PWvfx09PT0leX7DMEryPIX6y1/+ghtvvBHLli3D2LFjK/q1i5H5fRnO9+mhhx7y9AWMSr8HquGb3/wm5s2bN6TPnTdvHr75zW+W+IhyW758Ob74xS/iqaeewoEHHliRr1mI559/HnPmzMFTTz2F4447ruDPcwJpR09PD77+9a/jq1/9Kp577jmsWLECkUgEN910U9rjwuEwdu3aBQCIx+P497//jalTp7r333PPPXj//ffx1FNPYcWKFbj55pvx//7f/8OmTZvcx5x//vlYtmwZnnzySbzxxhtYsWLFUF46EVHNU6t9AEREo1lLSwteeOEFvPbaa/D5fACAE088Eccddxz++Mc/YtGiRbj44ovx4osvQpIkAMBpp52G++67D/vvvz/uvfdevPrqq9A0DUcccQRuuukmqKqKiy66CIceeijeeecdHHjggVi0aJH7Ndvb23HttdciEolA0zR8/etfx+c+9zkAwEUXXYTDDjsMb731FsLhMC666KKcGf5wOIybb74Z69evBwBcfPHFOOecc/Dzn/8cb7/9NrZt24YnnngCd999d9rn7dy5Ez/+8Y+xc+dOAMAVV1yBM844A++88w5+9rOfIZFIYPz48bjllluw3377YeXKlfjlL3+JfffdFx9++CHGjBmD//7v/8bEiRORSCRw++2346233oIsyzj++ONx/fXX46KLLsJVV12F2bNnAwBOPvlkPPTQQ9h7771x8skn46yzzsLrr7+O448/HqqqYuvWrejo6EAgEMDy5cvx6KOP4q9//StM08Q+++yDW2+9Fc3NzbjxxhvR1NSEdevWoa2tDfPnz8c3v/lN/Pa3v0VHRwcuvfRS+Hw+PPjgg5gwYYL7mleuXIlf/OIX2GOPPbBx40ZMnDgRP//5z9MCGABYs2YNfvzjHyORSMA0TXznO9/B3LlzsXz5crzyyiv45S9/6b5nLr74YrzwwgsIhUL4yU9+gq1bt0LTNHzhC1/AF77wBQB2NvTqq6/GSy+9hLPPPhtTpkzB3XffDVmWYVkW7rvvPkybNi3tGJ566ik88sgjMAwDTU1NuO222/Cxj30Mra2tbub1jTfegCRJuPvuu7HPPvtA0zTcfPPNeOeddzBp0iTsscce2GeffbLeM85zzJ07F2+//Tbq6uqwZMkSHHTQQVi6dCneeustLFmyBADczPzVV18NANi2bRsuuOACdHV14aijjsKPfvQj+P3+tOe/8cYbcfTRR2Px4sV49NFH8cc//hGyLENRFPzxj38EAAghcNttt2W9htSvv3TpUjz33HNQFAWbN2/GPvvsg7vvvht+vx+7du3Cddddh97eXjerfO2117rvNYeu61iyZAlWrlwJADjzzDNxxRVX4KGHHsKzzz6LV199FcuXL8djjz2W9RpyvccAYMOGDfjZz36GQCAAWZZx44034pOf/CSuueYanHPOOZg7dy5uuukmrF27Fn/5y1/Q09ODc889Fy+88AKef/75AX/2K1aswB/+8AcAwD//+U88/PDD2LhxY97fyZ///OeYNm0aNmzYgNtvvx2HHnqo+1x//OMfcdxxx+Gkk04CAPh8PvzgBz/Apz/9abS0tLhfd+HChVi2bBkuv/xyvPDCCzjxxBPx/PPPA7CD/N///vdYvnw5mpqaAACzZs3Ceeedh/vvv999nzgaGxtx6KGHuucVIqJRRxARUdW8+OKLYuHChVm3/+///q+46qqrhBBCnH/++eKtt94SQgjx3nvvic997nNCCCGeeOIJsWTJEmFZlhBCiB/+8Ifi0UcfFUIIceGFF4pvfetbwjRNIYQQb775prjwwguFEELEYjERjUaFEEIEAgExb9480dvb637elVdeKUzTFL29veKkk04Sa9asyTq+2267Tdx8881CCCG6u7vFSSedJNauXes+x5tvvpnz9X7hC18Qf/7zn4UQQliWJXp7e0UikRBz584V7777rhBCiL///e/i7LPPdo975syZYuPGje5r/PWvfy2EEOLOO+8U119/vTAMQwghRE9PT86vf9JJJ4mWlhb337fffrt739133y1OPfVUEQgE3K/3rW99S+i6LoQQ4je/+Y34+c9/LoQQ4oYbbhBf+cpXhKZpIhQKiWOOOUa0tbVlfY1Mb775ppgxY4Z4//33hRBC/O53vxNXX321EML+Gd5www1CCCFCoZDQNE0IIcTOnTvFiSeeKCzLcr8/3d3dQgghfvGLX4j//u//do/pxRdfFEIIEY/HxcKFC93v1cEHHyweeeQR9zjOOuss0d7e7j42FotlHavzPRRCiGeffdY9zpaWFnHwwQe739ff/OY34gc/+IEQQog//OEP4oorrkh7z9x9991Zz+08xz/+8Q8hhBArVqxIey873wfn5+I8x9133y1OOukk0dvbK0zTFFdccYV4+OGH3df/xBNPZP177ty57usLhULCMIwBX0Pq13/iiSfEcccdJzo7O4VlWeKrX/2qWL58uRBCiG984xvioYceEkII8cEHH4gZM2bkfK8/9NBD4rLLLhOGYYhoNCo+97nPiVdeeSXrODPle4/pui7OPvtssWPHDvd7edJJJwnLssQjjzwi7rjjDiGEEAsXLhQLFy4UoVBIPPPMM+K73/2uEKKwn33q93yw38lDDz0053lBCCGuuuoq8eCDD2bdvmDBAve9evDBB4vu7m5x1llnCSGE+NrXviY++ugj9/do7dq14pOf/GTWczz//PPueyb1eLu7u8Xpp58u1q9fn/b9ISIaLVh+T0TkcQsXLsTy5csB2KW7CxYsAAC88soreOGFF7Bo0SIsXLgQK1euxLZt29zPW7BgAWQ5+zRvGAZuueUWzJ8/HxdeeCG6u7uxdetW9/7Pfe5zkGUZ48ePxymnnIK33nor6zlWrlyJ8847DwAwceJEzJs3L+fjUoXDYaxbtw7nnnsuAECSJIwfPx6bN2/G+PHjccQRRwAAzjjjDGzbtg3hcBgAMGPGDBxwwAEAgJkzZ6KlpQUA8Nprr+FLX/oSFEUBgLTs+EBSqxYAO5PvbBN45ZVX8O677+Lss892M4nOHl8A+MxnPgOfz4fm5mbst99+7rEMZvr06Zg1axYA4POf/zzefPPNrMdEIhF85zvfwZlnnonLL78cnZ2d6Orqgt/vx4IFC/Dkk09C13UsW7YM55xzjnu8d911FxYuXIhzzz0XwWAQmzdvzvlaZ8+ejRtvvBGPPPIIurq6UF9fn3UMW7ZswUUXXYSzzjoLd999t1uJAQCTJk1yM9K
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_news_overlap(\"OMORI\", df_omori).show()"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:01.633792316Z",
"start_time": "2023-07-02T06:48:01.310704540Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAADRO0lEQVR4nOzdeXxcVf3/8fe9s2TtktI2bJUdytLKohQoFqEICLQpBRGVRZHdlS+yyE9BQaUVlfULKvgVAQUEyiaCQAuUtQillELpvqRb0jZ7Mvs9vz8mM02abZrMTWZuXs/HQ2kykzsnk9ne93PO51jGGCMAAAAAAJB37IEeAAAAAAAA6B1CPQAAAAAAeYpQDwAAAABAniLUAwAAAACQpwj1AAAAAADkKUI9ANeEQiH98pe/1OTJk3XSSSfpvPPO0yeffJLV25g3b57OO++8rB6zKy+99JK++tWvqqKiQg0NDf1ymwPtgQce6NXvOmvWLF133XUujGjg3HXXXbrrrrv65XjXXXedZs2aJUm64447NHv27C6Ps27dOp1wwgmdXjZ79mzdcccdfR9sBj744AOdfvrpmjZtmpYvX94vt5mJVatWadq0aZo2bZrefvvtXh9n1qxZOvLII1VRUaFTTjlF1113naLRaI8/s27duvTXjzzyiB555JFej6Ezjz/+uE4//XSdeuqpOuOMM3TjjTcqFArt8HGuvvpqnX766frVr36lV155RYsXL96hn7/99tt1yCGHqL6+Pv297h6bKW6/hmdyn3f3vI5EIvp//+//6fTTT9eUKVM0depUvfPOOxkfe0f09XVz8eLFeuWVV7I2HgD5wz/QAwDgXTfccIMsy9KLL76oQCCg1157TRdddJGef/55jRgxos/Hj8fjWRhl5v75z3/quuuu03HHHdevt7uj4vG4/H5/l1/viAcffFAnnniihg4dmq3hZVVffrd88aMf/ajXPzt58mRNnjw5i6Pp2rPPPqtvfvOb+uY3v9kvt5epl19+WRMnTtTVV1+9Qz+XSCTk8/nafe+EE07QjBkzFI1Gdf755+uRRx7RBRdc0OUxnnrqKe22227afffdJUnf+MY3dvwX6MY//vEPPfLII/rjH/+o3XffXcYY/fvf/1Zzc7OKiop6/H1StmzZorfffltvvfWWpORJpSOPPFIHHnhgRuMwxujZZ5/VYYcdpueffz6nHgOZ3Od33323fvCDH3R62YMPPigp+fi2bVu1tbXpkybZ/nv21eLFi/Xee+/pxBNP3KGfGwyvo4DX8QwG4IrKykq98sormjt3rgKBgCTpy1/+so455hj9/e9/17Rp03TBBRdo9uzZsixLknTyySfrnnvu0d577627775br7/+uqLRqA499FDdcMMN8vv9Ou+883TQQQdp/vz52nfffTVt2rT0bVZVVemqq65Sc3OzotGoLrroIp1xxhmSpPPOO08HH3yw3nvvPTU1Nem8887rtDrU1NSkG2+8UUuXLpUkXXDBBTrrrLP0u9/9Th988IHWrFmjJ598UnfeeWe7n9uwYYN++ctfasOGDZKkyy+/XKeeeqrmz5+v3/zmN4pEIho+fLhuuukm7bXXXpo3b57+8Ic/aM8999Qnn3yiIUOG6H//9381YsQIRSIRzZw5U++9955s29axxx6ra665Ruedd56+//3va8KECZKSAePBBx/U7rvvrhNOOEGnn3663nrrLR177LHy+/1avXq1qqurVV9fr2effVaPPPKInnjiCSUSCe2xxx769a9/rdLSUl133XUqKSnRkiVLtGnTJk2ZMkU/+tGP9Oc//1nV1dW65JJLFAgE9MADD6isrCz9O8+bN0+///3vtcsuu2j58uUaMWKEfve736m8vLzdfbN48WL98pe/VCQSUSKR0E9+8hNNmjRJzz77rF577TX94Q9/SD9mLrjgAr3yyitqbGzUzTffrNWrVysajeob3/hG+gP0AQccoB/84AeaM2eOzjzzTI0ePVp33nmnbNuW4zi65557NGbMmHZjePrpp/Xwww8rHo+rpKREt9xyiz73uc9p3bp1Ou+883TSSSfpnXfekWVZuvPOO7XHHnsoGo3qxhtv1Pz58zVy5Ejtsssu2mOPPTo8ZlLHmDRpkj744AMVFBRoxowZ2m+//TRr1iy99957mjFjhqRtFcFUgFizZo2+9a1vacuWLTriiCP0i1/8QsFgsN3xUwFr+vTpeuSRR/T3v/9dtm3L5/Pp73//u6RkqLrllls6/A5tb3/WrFl66aWX5PP5tHLlSu2xxx668847FQwGtXHjRl199dWqra3VAQccoHXr1umqq65KP9ZSYrGYZsyYoXnz5kmSTjvtNF1++eV68MEH9cILL+j111/Xs88+q0cffbTD79DZY0ySli1bpt/85jeqr6+Xbdu67rrr9IUvfEE//OEPddZZZ2nSpEm64YYb9Nlnn+mf//ynampqdPbZZ+uVV17Ryy+/3O3f/sUXX9Tf/vY3SdKbb76phx56SMuXL+/yOfm73/1OY8aM0bJlyzRz5kwddNBBHf7ekhQMBnXEEUdo9erVXd4nTz/9tBYtWqSf/exnKi4u1m9/+1u99NJL6b9/V681UvK5fcYZZ2ju3LmqqanR9ddf3+nJmXvvvVe33HJL+qSBZVk67bTTJKnT3+fNN9/Uf/7zH0WjUe28886aOXOmSktLdf7556u+vl4VFRX6zne+ozlz5ujdd9/V3/72N/3kJz/Rl770pU7vh5R58+apvLxcV1xxhW677bYuQ/1//vMf3XvvvXIcR8FgUH/9618lSdFoVNdee22nr4W//e1v9dFHHykajWry5Mnpx80JJ5ygiooKvfnmm6qpqdFvfvMbvfzyy5o3b56Ki4t17733asSIEe2ec509XlKPj4qKCgWDQT3++OPtxlxVVaWRI0fKtpOTW8vKytKvg22Pfdddd6myslJbtmzR6tWrdfLJJ+vII4/Un/70J1VXV+v666/XiSeeqHnz5unuu+/WQw89JEkdXiNSunrdlKRf//rXmj9/viKRiA444ID04/nOO+9US0tLejbJ5Zdfrn/+85968MEHZVmWxo4dqxtvvFGlpaW66667OrxHAMhjBgBcMHv2bFNRUdHh+3/961/N97//fWOMMeecc4557733jDHGLFiwwJxxxhnGGGOefPJJM2PGDOM4jjHGmJ///OfmkUceMcYYc+6555of//jHJpFIGGOMeffdd825555rjDEmFAqZlpYWY4wx9fX1ZvLkyaa2tjb9c1dccYVJJBKmtrbWHH/88Wbx4sUdxnfLLbeYG2+80RhjzNatW83xxx9vPvvss/Qx3n333U5/32984xvmscceM8YY4ziOqa2tNZFIxEyaNMl8+OGHxhhjnn/+eXPmmWemxz1u3DizfPny9O947733GmOMue2228w111xj4vG4McaYmpqaTm//+OOPN5WVlel/z5w5M33ZnXfeaU466SRTX1+fvr0f//jHJhaLGWOM+eMf/2h+97vfGWOMufbaa813vvMdE41GTWNjoznqqKPMpk2bOtzG9t59910zduxY89FHHxljjPnLX/5ifvCDHxhjkn/Da6+91hhjTGNjo4lGo8YYYzZs2GC+/OUvG8dx0vfP1q1bjTHG/P73vzf/+7//mx7T7NmzjTHGhMNhU1FRkb6v9t9/f/Pwww+nx3H66aebqqqq9HVDoVCHsabuQ2OMeeGFF9LjrKysNPvvv3/6fv3jH/9ofvaznxljjPnb3/5mLr/88naPmTvvvLPDsVPH+M9//mOMMebFF19s91hO3Q+pv0vqGHfeeac5/vjjTW1trUkkEubyyy83Dz30UPr3f/LJJzv8e9KkSenfr7Gx0cTj8W5/h7a3/+STT5pjjjnGbN682TiOYy688ELz7LPPGmOM+d73vmcefPBBY4wxH3/8sRk7dmynj/UHH3zQXHrppSYej5uWlhZzxhlnmNdee63DOLfX1WMsFouZM88806xfvz59Xx5//PHGcRzz8MMPm1tvvdUYY0xFRYWpqKgwjY2N5t///rf56U9/aozJ7G/f9j7v6Tl50EE
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_news_overlap(\"Potion Craft: Alchemist Simulaator\", df_potioncraft).show()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:02.049846021Z",
"start_time": "2023-07-02T06:48:01.636116396Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdeZwcVbk38F9Vd89MNkhCFhaRHcKSyKKENZIE2UMwIKKAKJdNFNTLFVARlEWCqMgicAWvCCjKvsiisr8gBFlCCCQQSICsk2TW3ruW8/5RXdX7zHR3narqmt/389GQmUl3TVdX9XnO85znKEIIASIiIiIiIiJqOarfB0BEREREREREjWFQT0RERERERNSiGNQTERERERERtSgG9UREREREREQtikE9ERERERERUYtiUE9Ew0I6ncbPf/5zzJ49G4cddhhOPfVUvPvuu64+x4IFC3Dqqae6+pi1/POf/8SRRx6JuXPnor+/35Pn9Nsdd9zR0O/64IMP4uKLL5ZwRP658cYbceONN3ryeBdffDEefPBBAMD111+PZ555pubjrFq1CrNmzar6vWeeeQbXX3998wc7BG+88QaOOeYYHHfccfjwww89ec6hWLFiBY477jgcd9xx+Pe//93w41Q7X8XnabB/W+wnP/kJ3nnnHQDWtbJq1aoBn2codtlll5rfe/rpp3HCCSfgsMMOw7x58/Ctb30Lr7/+et3P4aYgHhMRUT2ifh8AEZEXLr30UiiKgqeeegqxWAzPP/88zjjjDDz++OMYP35804+v67oLRzl09957Ly6++GJ88Ytf9PR566XrOqLRaM2/1+POO+/EoYceik022cStw3NVM79bq/je977X8L+dPXs2Zs+e7eLR1Pboo4/i61//Or7+9a978nxD9a9//QsHHnggfvjDH9b17wzDQCQSceUYbrrpJpx33nnO36+66irnvx966CFstdVW+MxnPuPKc5V79tlnceWVV+KWW27BrrvuCgB499138d577+Hzn/+8lOdsxWMiIqpXuEcfREQAVq5ciaeffhovvvgiYrEYAOCQQw7BAQccgD//+c847rjjcNppp+GZZ56BoigAgMMPPxw333wztt9+e9x000144YUXkMvlsOeee+LSSy9FNBrFqaeeit122w1vvvkmdtxxRxx33HHOc3Z2duKCCy5AMplELpfDGWecgS9/+csAgFNPPRW77747XnvtNSQSCZx66qlVM/yJRAKXXXYZPvjgAwDAaaedhhNOOAG/+tWv8MYbb+CTTz7BAw88gBtuuKHk361ZswY///nPsWbNGgDAt7/9bRx11FF488038Ytf/ALZbBZjx47F5Zdfju222w4LFizAb37zG2y77bZ49913MWbMGPzud7/D+PHjkc1mcc011+C1116Dqqo46KCDcOGFF+LUU0/Fd7/7XUyfPh0AMGvWLNx55534zGc+g1mzZuGYY47Byy+/jIMOOgjRaBQff/wx1q9fj76+Pjz66KO45557cP/998MwDGyzzTa46qqrMHr0aFx88cUYNWoU3n//faxbtw5z5szB9773Pfz+97/H+vXrcdZZZyEWi+GOO+7AuHHjnN95wYIF+PWvf40tttgCH374IcaPH49f/epXmDx5cslrs2TJEvz85z9HNpuFYRj4n//5H8yYMQOPPvoonn/+efzmN79x3jOnnXYann76acTjcVxxxRX4+OOPkcvl8LWvfQ1f+9rXAFgZyfPOOw/PPvssjj/+eEyaNAk33HADVFWFaZq4+eabsfXWW5ccw8MPP4y7774buq5j1KhRuPrqq/HZz34Wq1atwqmnnorDDjsMr7zyChRFwQ033IBtttkGuVwOl112Gd58801MmDABW2yxBbbZZpuK94z9GDNmzMAbb7yB9vZ2zJ8/HzvttBMefPBBvPbaa5g/fz6AQsbWDvA++eQTnHzyydi4cSP22Wcf/OxnP0NbW1vJ41988cXYd999MW/ePNxzzz3485//DFVVEYlE8Oc//xkAIITA1VdfXfE7FD//gw8+iH/+85+IRCJYvnw5ttlmG9xwww1oa2vD2rVr8cMf/hA9PT3YZZddsGrVKlxwwQXOe82maRrmz5+PBQsWAACOPvpofPvb38add96JJ598Ei+88AIeffRR/PWvf634Haq9xwBg2bJl+MUvfoG+vj6oqoqLL74Yn//853H++efjhBNOwIwZM3DppZdi6dKluPfee9Hd3Y0TTzwRTz/9NP71r38NeO6feuop/OlPfwIAvPTSS7jrrrvw4Ycf1rwmf/WrX2HrrbfGsmXLcM0112C33XarON+1nHrqqfjc5z6H119/3bluTjrpJFx55ZUAgLlz56KtrQ333Xefcy2vXbsWixcvxiWXXIKRI0fil7/8ZcljZrNZ/PKXv8Tbb7+NXC6H2bNnO6/bggULcPnll0NVVRx++OE1j+t///d/8Z3vfMcJngFg9913x+677z7gOQWAjz76CJdddhn6+vrQ0dGBSy65BJ/73OewceNG/Pd//zf6+vqg6zpOOukknHrqqejr66t53dZzTLXuGYB135s7dy5eeukldHd34xe/+AX+9a9/YcGCBRg5ciRuueUW5z5a67UjInKFICIKuWeeeUbMnTu34ut//OMfxXe/+10hhBAnnXSSeO2114QQQixcuFB8+ctfFkII8cADD4j58+cL0zSFEEL89Kc/Fffcc48QQohTTjlFfP/73xeGYQghhHj11VfFKaecIoQQIp1Oi1QqJYQQoq+vT8yePVv09PQ4/+7cc88VhmGInp4eMXPmTLFkyZKK47v66qvFZZddJoQQoqurS8ycOVMsXbrUeYxXX3216u/7ta99Tfztb38TQghhmqbo6ekR2WxWzJgxQ7z11ltCCCEef/xxcfzxxzvHPXXqVPHhhx86v+Mtt9wihBDiuuuuExdeeKHQdV0IIUR3d3fV5585c6ZYuXKl89/XXHON870bbrhBHHbYYaKvr895vu9///tC0zQhhBC33nqr+NWvfiWEEOKiiy4S3/rWt0QulxPxeFzst99+Yt26dRXPUe7VV18VU6ZMEW+//bYQQog//OEP4rzzzhNCWOfwoosuEkIIEY/HRS6XE0IIsWbNGnHIIYcI0zSd16erq0sIIcSvf/1r8bvf/c45pmeeeUYIIUQmkxFz5851Xqudd95Z3H333c5xHHPMMaKzs9P52XQ6XXGs9msohBBPPvmkc5wrV64UO++8s/O63nrrreKSSy4RQgjxpz/9SXz7298uec/ccMMNFY9tP8Y//vEPIYQQTz31VMl72X4d7PNiP8YNN9wgZs6cKXp6eoRhGOLb3/62uOuuu5zf/4EHHqj47xkzZji/XzweF7quD/g7FD//Aw88IA444ACxYcMGYZqmOP3008Wjjz4qhBDiO9/5jrjzzjuFEEK88847YsqUKVXf63feeac4++yzha7rIpVKiS9/+cvi+eefrzjOcrXeY5qmieOPP16sXr3aeS1nzpwpTNMUd999t7j22muFEELMnTtXzJ07V8TjcfHEE0+IH/3oR0KIoZ374td8sGtyt912q3pfKH+c4t/L/p1POeUUcfHFFwvTNMWaNWvE3nvv7VxvO++8c8m/K76Wy6/r8veIfV50XRdnnHGGePHFF0U2mxUHH3xwybVX/hy2adOmiffee6/q94QY+Jx++ctfFo8//rgQQog333xTHHLIISKbzYr/+7//E7feeqvzGL29vc7rUeu6reeYat0zhLDuSfZ94sknnxR77rmn+M9//iOEEOKSSy5x7qO1XjsiIrcwU09EBCtz9eijj+ILX/gCHn30URx77LEAgOeffx5Llixx1r9mMhmMGjXK+XfHHnssVLWyPYmu67jqqquwePFiKIqCrq4ufPzxx9hzzz0BAF/+8pehqirGjh2LQw89FK+99hqmTJlS8hgLFizAL37xCwDA+PHjMXv2bLz22msDrldNJBJ4//33ceKJJwIAFEXB2LFjsXTpUowdO9Z5/qOOOgqXXXYZEokEAGDKlCnYYYcdAABTp07FwoULAQAvvvgirrjiCqf0tzg
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_news_overlap(\"Untitled Goose Game\", df_untitledgoosegame).show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si osserva che alcuni dei picchi coincidono, ma solo raramente."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sovrapposizione di giocatori concorrenti e avvenimenti"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si ripete l'indagine, stavolta includendo anche le date di inizio sconto fra gli eventi:"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:02.066580001Z",
"start_time": "2023-07-02T06:48:02.052991838Z"
}
},
"outputs": [],
"source": [
"def plot_happening_overlap(name: str, df: pd.DataFrame) -> so.Plot:\n",
" cdf = df.reset_index(names=\"Date\")[[\n",
" \"Date\",\n",
" \"SteamDB · Relative concurrent players\",\n",
" \"Cumulative · Is something happening?\",\n",
" ]]\n",
" cdf[\"Cumulative · Is something happening?\"] = cdf[\"Cumulative · Is something happening?\"].astype(int)\n",
"\n",
" return (\n",
" so.Plot(\n",
" data=cdf.melt(\n",
" id_vars=[\"Date\"],\n",
" value_vars=[\n",
" \"SteamDB · Relative concurrent players\",\n",
" \"Cumulative · Is something happening?\",\n",
" ],\n",
" var_name=\"Data\",\n",
" value_name=\"·\"\n",
" ),\n",
" x=\"Date\",\n",
" y=\"·\",\n",
" color=\"Data\",\n",
" )\n",
" .add(\n",
" so.Area(\n",
" alpha=0.6,\n",
" )\n",
" )\n",
" .scale(\n",
" x=so.Temporal()\n",
" .tick(locator=mpld.YearLocator()),\n",
" y=so.Continuous()\n",
" .tick(locator=tick.AutoLocator()),\n",
" )\n",
" .label(\n",
" title=f\"Overlap of concurrent players and happenings for {name}\",\n",
" )\n",
" .theme(theme)\n",
" )\n"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:02.773450089Z",
"start_time": "2023-07-02T06:48:02.068134721Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOydd8AcRfnHv3t3b08IaQRCJ5BQkoggBEINHSGEYkEhoNKrItIUiHQQBKQJ0rvSQxOlowjBn5RQE2pIgfS8efvd7c7vj7vd292burt3771vno+S93Zn5plnZp5puzOzFmOMgSAIgiAIgiAIgiCIPkeqtxUgCIIgCIIgCIIgCCIaNKknCIIgCIIgCIIgiD4KTeoJgiAIgiAIgiAIoo9Ck3qCIAiCIAiCIAiC6KPQpJ4gCIIgCIIgCIIg+ig0qScIgkiArq4uXHDBBdh9992x1157YerUqfjwww8TjWPGjBmYOnVqojJF/POf/8S+++6LKVOmYOXKlVWJs7e56667IqX1sccew9lnn10BjXqP66+/Htdff33Z/Xnz5mG33XbrBY30+d3vfof333+/4vGcccYZ2H///XHxxRfHkjNmzBhMmTIF+++/P/bee2/8/ve/x7JlyxLSUs5jjz2GbbfdFlOmTME+++yDX/3qV+jo6Igsb8yYMVr+Zs+ejWOPPRa77bYbDj74YPzgBz/Aww8/rAx39tln47HHHouk27x588rCTpkyJZIsgiCIWoMm9QRBEAlw/vnno6OjA8899xz++c9/4qijjsLRRx+d2OA8n88nIkeXhx56CGeffTamT5+O1VZbrapxmxDOlzj5dM8999T0A4xq20Bf5ZJLLsG4ceMqGseSJUvwn//8B08//TTOPfdc7XCiMpw+fTqefvppTJ8+HalUCkceeWTVynu33XbD9OnT8dRTT2Hx4sW4//77KxrfN998gyOOOAIHHnggXnrpJTz22GO48cYbsWTJkorGO3/+fDz++OOBe9OnT69onARBENUi09sKEARB9HXmzp2LF154Aa+99hrq6uoAALvuuismTpyI+++/HwceeCCOPPJIvPjii7AsCwCw995746abbsJGG22EG264Aa+++iqy2Sy23HJLnH/++chkMpg6dSo233xzvP3229h4441x4IEHenEuXLgQp59+Ojo6OpDNZnH00UfjoIMOAgBMnToVW2yxBd566y20t7dj6tSp3Df87e3tmDZtGmbPng0AOPLII/GDH/wAV111Ff73v/9hzpw5ePTRR3HdddcFwi1YsAAXXHABFixYAAA44YQT8P3vfx9vv/02Lr30UvT09GD11VfHhRdeiA033BAzZszA1VdfjQ022AAffvghBg4ciBtvvBFDhgxBT08PrrjiCrz11ltIpVLYcccdceaZZ2Lq1Kk4+eSTMWHCBACFicc999yDddZZB7vtthv2339/vP7669hxxx2RyWTw1VdfYdGiRWhtbcWTTz6JBx98EI888ghs28b666+PSy65BAMGDMDZZ5+NlpYWzJo1C99++y0mT56MX/7yl/jLX/6CRYsW4dhjj0VdXR3uuusuDB482EvzjBkz8Mc//hFrrbUWPvvsMwwZMgRXXXUVRowYEcibjz/+GBdccAF6enpg2zZ+85vfYOedd8aTTz6JV155BVdffbVnM0ceeSReeOEFtLW14aKLLsJXX32FbDaLn/zkJ/jJT34CoPDm85RTTsFLL72EQw45BGussQauu+46pFIpOI6Dm266Ceuuu25AhyeeeAL33Xcf8vk8WlpacNlll2G99dbDvHnzMHXqVOy111544403YFkWrrvuOqy//vrIZrOYNm0a3n77bQwbNgxrrbUW1l9/fa69M8Zw2WWXlckQpd0tv/333x+vvfYaurq6cNppp2GfffYJpPEf//gHGGOYNm0attlmGwDA888/j1tvvRW5XA5DhgzBpZdeihEjRuD666/HvHnzsHjxYsybNw9bb701LrvsMs/+XduZOnUqvvOd7+D//u//vPI99NBDAQDPPvss/vSnP6GlpQU77bQTnnrqKbz00ktYsmQJfv3rX6O1tRX5fB6HHnpooP5ks1kcccQRaG1txZQpU/Dzn/8ce+yxB7cu+dPu2utpp53GzVcAaGxsxG9/+1vstdde+Ne//oVJkybh008/xaWXXorW1lakUimcffbZ+N73vgcAUjtvaGjAxx9/jBUrVmDvvffG6aefLowXAOrq6rDlllt69VrUPgDArFmzcPHFF6O1tRVA4aGmq5ObR2eccQbWW2+9sngfeOAB7Ljjjvj+97/v3RsxYgROOOEEL+xxxx2H1tZWdHd348ADD8Sxxx5bpq/IzgHgH//4B/785z/DcRzU19fjzjvvxMUXX4x58+ZhypQp2GqrrTBt2jSMGTMGs2bNAgC89dZbuPLKK9HT04N0Oo1rrrkGG2ywgTTPCIIgagZGEARBxOLFF19kU6ZMKbt/5513spNPPpkxxtihhx7K3nrrLcYYY++++y476KCDGGOMPfroo+zyyy9njuMwxhg777zz2IMPPsgYY+zwww9nv/rVr5ht24wxxt588012+OGHM8YY6+rqYp2dnYwxxlpbW9nuu+/Oli9f7oU78cQTmW3bbPny5WzSpEns448/LtPvsssuY9OmTWOMMbZ06VI2adIk9sknn3gy3nzzTW56f/KTn7C//e1vjDHGHMdhy5cvZz09PWznnXdm77zzDmOMsWeeeYYdcsghnt7jxo1jn332mZfGP//5z4wxxq655hp25plnsnw+zxhjbNmyZdz4J02axObOnev9vuKKKzy36667ju21116stbXVi+9Xv/oVy+VyjDHGbr75ZnbVVVcxxhg766yz2M9//nOWzWZZW1sb22677di3335bFkeYN998k2266absvffeY4wxdvvtt7NTTjmFMVYow7POOosxxlhbWxvLZrOMMcYWLFjAdt11V+Y4jpc/S5cuZYwx9sc//pHdeOONnk4vvvgiY4yx7u5uNmXKFC+vRo8eze677z5Pj/33358tXLjQ89vV1VWmq5uHjDH297//3dNz7ty5bPTo0V6+3nzzzezcc89ljDF29913sxNOOCFgM9ddd12ZbJkMUdrdvL3ooos8GRMnTmRLlizx0njHHXcwxhh777332M4778x6enrYl19+yaZOncq6u7sZY4w99dRT7LTTTmOMFcp8//33Z+3t7SybzbL99tuP/e9//2OMBW3n8MMPZ2effTZzHIctWLCAbbXVViyXy7HFixezHXbYgX3zzTeMMcYuvvhiNmnSJMYYY3fccQe7+eabvTSvWLGCmw+uf8bkdSlsr2FGjx5ddu+EE05gt9xyC8vlcuyQQw5h8+fPD8TrOI7Szn/wgx+w7u5u1t3dzQ455BD20ksvlcXjt9329nb2wx/+kL3++uvSNGWzWbbHHnuwf/3rX4wxxnK5HFu5cqWXlra2NnbkkUeyO++8k5veo48+WujGGGO2bXt53tPTww466CA2e/ZsL12PPvooY0xs55999hnbZZdd2IIFCxhjJbv0t58ubt4vW7aM7bDDDl472d3dzTo6OoQ6EgRB1Br0pp4gCKIKTJkyBU8++SS22WYbPPnkkzjggAMAAK+88go+/vhj/Oc//wEAdHd3o6WlxQt3wAEHIJUq3ymVz+dxySWX4IMPPoBlWVi6dCm++uorbLnllgCAgw46CKlUCquvvjr22GMPvPXWW9h0000DMmbMmIFLL70UADBkyBDsvvvueOutt6T7Ytvb2zFr1iz86Ec/AgBYloXVV18dn3zyCVZffXUv/u9///uYNm0a2tvbAQCbbropRo0aBQAYN24c3n33XQDAa6+9hosuugjpdBoAAm/HZfhXLQCFt6HuNoFXXnkF77zzDg455BAAQC6XC6Rpzz33RF1dHerq6rDhhhti7ty5ZW/ceYwZMwbjx48HAPzwhz/EzTffXOano6MDv/vd7/DZZ58hk8lg8eLFWLJkCYYPH44DDjgAjz/+OI444ghMnz7d20Ps2sCf/vQnAEBbWxu++OILL7/8aZ0wYQLOPvts7Lb
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_happening_overlap(\"Deep Rock Galactic\", df_deeprockgalactic).show()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:03.168959621Z",
"start_time": "2023-07-02T06:48:02.773051253Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdd5gb5dU28HtmJG1zW2Nsejem2ZAQcKgB04uxKSEEQkiBhJBAQggttDd0QgrthQQI4YUQklCNCRB6+CgxoRqDwYALXpe1196irinP98doRl0aaTWzI+n+XVeId6WVHo1GozlzznMeSQghQEREREREREQNRx7pARARERERERFRbRjUExERERERETUoBvVEREREREREDYpBPREREREREVGDYlBPRERERERE1KAY1BMRNZF4PI5f/epXOOigg3DooYfi1FNPxYcffljX55g3bx5OPfXUuj5mKc8++yyOOOIIzJo1C0NDQ54850i79957a3qtjz76KC666CIXRjRybr31Vtx6660Fv+/p6cGMGTNGYETOXXLJJfjggw9cf57zzz8fRx99NK6++uphPU6lY8dFF12EHXbYAStWrLB/9/bbb2PKlCk579Ebb7yB448/HocffjgOOeQQ3HTTTdB1HYD5vu2yyy6YNWsWjj76aHzzm9/EZ599Zv/tqaeeinnz5g3rdRARtSIG9URETeTyyy9HNBrFM888g2effRbf//73cfrpp2P9+vV1eXxN0+ryOE794x//wEUXXYQ5c+ZgzJgxnj53NfK3y3C203333efrCxhe7wON6pprrsHUqVNdfY6+vj68/vrrePLJJ3HppZc6/rti76GTY8eOO+6IOXPm2D8//vjj2Hnnne2fP//8c5x77rm4/PLL8cwzz+Dxxx/H/Pnzc4L+iRMnYs6cOXjyySfxla98Bdddd121L5uIiPIERnoARERUH8uXL8fzzz+PV155BcFgEABwwAEHYO+998YDDzyA2bNn47TTTsMLL7wASZIAAIcddhhuv/12bLPNNrjtttvw73//G6lUCrvtthsuv/xyBAIBnHrqqdhpp53wzjvvYLvttsPs2bPt5+zt7cV5552HaDSKVCqF008/HcceeywAM+u28847480330QkEsGpp55aNMMfiURwxRVXYNGiRQCA0047DSeccAJ+85vf4O2338ayZcvwyCOP4JZbbsn5u5UrV+JXv/oVVq5cCQD40Y9+hCOPPBLvvPMOrr32WiSTSYwbNw5XXnkltt56a8ybNw+/+93vsNVWW+HDDz/E6NGj8b//+78YP348kskkbrjhBrz55puQZRn77rsvLrjgApx66qn4yU9+gunTpwMAZsyYgfvuuw+bbbYZZsyYgaOPPhqvvfYa9t13XwQCASxduhRr1qzB4OAgnnjiCTz44IN4+OGHoes6ttxyS1xzzTUYNWoULrroInR1deGTTz7B6tWrMXPmTPz0pz/FnXfeiTVr1uAHP/gBgsEg7r33XnR3d9uved68efjtb3+LjTfeGJ999hnGjx+P3/zmN5g0aVLOtlm4cCF+9atfIZlMQtd1/OIXv8D++++PJ554Ai+//DJ+97vf2fvMaaedhueffx7hcBhXXXUVli5dilQqhW9+85v45je/CQCYMmUKzj77bLz44os4/vjjMXHiRNxyyy2QZRmGYeD222/H5ptvnjOGxx9/HH/5y1+gaRq6urpw3XXXYYsttkBPTw9OPfVUHHrooXjjjTcgSRJuueUWbLnllkilUrjiiivwzjvvYMKECdh4442x5ZZbFt3fhRC47rrrCh6j1Gu33r+jjz4ar7zyCuLxOM4991wcfvjhOa/xX//6F4QQuOKKK7DHHnsAAJ577jncddddUFUV48ePx7XXXotJkybh1ltvRU9PD9auXYuenh7svvvudpCave+ceuqp2HXXXfHWW2/Z7+9JJ50EAHjqqadw8803o6urC/vttx/mzp2LF198EX19ffj5z3+OwcFBaJqGk046Kefzk0ql8O1vfxuDg4OYNWsWvvvd7+Lggw8u+lnKfu3W/nruuefaj1Xp2HH22WcDAI4++mg89thjOOuss5BMJvHmm2/a2w8A7rrrLnzjG9/ArrvuCgDo6urC5ZdfjmOOOQY/+tGPCt7Dr3zlK3jhhReKvr9EROQcg3oioibx6aefYsstt8To0aNzfj916lS8/fbb2HzzzTFp0iS89dZb2GOPPfD++++jq6sL2267LR599FHEYjE89NBDkCQJl19+OR5++GE78FizZg3+/ve/Q5blnPLYsWPH4q677kJHRweGhoZw3HHH4cADD8S4ceMAmMHCww8/bN+2xx57YIcddsgZ32233YbRo0dj7ty5WL9+PU444QRMnToVv/jFL/D+++/nBNXZfvGLX2D27Nk48cQTIYTA4OAgUqkUzj33XNx8883Ybbfd8NRTT+H888/Hww8/DMAMdq+99lpsu+22uPzyy/GPf/wDZ555Ju644w5Eo1HMmTMHiqKgv7/f0TbXNA2PPPIIALNUfMGCBXjooYcwZswYzJs3D2+++Sb+/ve/IxAI4I9//CP++Mc/4rzzzgMALFmyBH/+85+RTCZxyCGH4KSTTsIPfvAD/O1vf8Odd96JzTbbrOhzfvDBB7j00ksxbdo03HPPPbjmmmsKLnhsvvnmuP/++xEMBrFq1SqcfPLJePHFF3H44Yfjt7/9LdavX4/x48fjoYcewgknnABZlnHdddfhyCOPxIwZM5BMJvGNb3wDe+65J7bddlsAQHd3Nx599FEAwMyZM/GnP/0JEydORDKZhBCiYJxf+9rX7AtAzzzzDH7zm9/Y41y5ciVmzJiBiy++GH/84x9x991346qrrsLf/vY3DA4O4umnn7b3mVJBfanHKPXarQtZsVgMjz/+OHp6evCNb3wDe+yxBzbYYAMAZhA6d+5czJ8/H2effTaee+45rFy5Evfffz/uv/9+tLW14cknn8QNN9xgXxj56KOP8Le//Q2hUAjHHnss3nnnHXz5y18uGO+6devw4IMPYvXq1Tj66KNxwgknYGBgANdeey0efvhhbLTRRrjmmmvs+8+dOxf77LMPfvjDHwIABgcHcx4vFArhzjvvxLe//W07e3799dcX/SxNmTIFQO7+mq3SscPS3d2NzTffHO+99x5WrlyJ/fffH4FA5lRy0aJFOPjgg3MeY6uttkIoFMLSpUvR1dVl/14IgZdffjnnogAREdWGQT0RUQuZNWsWnnjiCeyxxx544okncMwxxwAAXn75ZSxcuBCvv/46ACCRSOScgB9zzDGQ5cIZW5qm4ZprrsGCBQsgSRLWrVuHpUuXYrfddgMAHHvssZBlGePGjcPBBx+MN998syConzdvHq699loAwPjx43HQQQfhzTfftAORYiKRCD755BOceOKJAABJkjBu3Dh8/PHHGDdunP38Rx55JK644gpEIhEAwA477GAHqVOnTsV7770HAHjllVdw1VVXQVEUAMjJjpeTXbUAmNlQa5rAyy+/jHfffRfHH388AEBV1ZzXdMghhyAYDCIYDGLrrbfG8uXLCzLuxUyZMgXTpk0DAHz961/HH/7wh4L7RKNRXHLJJfjss88QCASwdu1a9PX1YcMNN8QxxxyDxx57zA4GH3roIXu8CxcuxM033wwACIfDWLx4sb29sl/r9OnTcdFFF2HGjBk48MADsemmmxaMYcmSJTjnnHPQ398PwzBgGIZ924QJE+wLNdOmTcMbb7wBwNwXjjvuuJx9ppRSj1HutQOwM9ebbbYZdtttN7z33ns46KCDcm6bNm0auru7sXjxYrz99tv4/PPP7X3NMIycz8bXvvY1++cdd9wRy5cvLxrUH3HEEZAkCRtvvDFGjRqFvr4+LFiwALvtths22mgjAMDxxx9vZ66nTZuGSy65BPF4HHvttVfRC1v5Kn2W8vfXWhx77LF4/PHHsWLFCpx77rlVZ9rXrFmDWbNmYe3atQgGg/aFIiIiqh2DeiKiJjF58mQsW7YM4XA4J+P2wQcfYPvttwdgBrm33XYbYrEY/vWvf+Hxxx+373feeee
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_happening_overlap(\"OMORI\", df_omori).show()"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:03.535812218Z",
"start_time": "2023-07-02T06:48:03.169970894Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOydd9wUxf3HP3v3FOABpQmCvVCMosZEEeyAokYERY0NS6JGjTVGxUqCGrHEqBhrNHYTK9hIVLD8bA8xFtTQFFDqQ4enX9n5/XF3+9zt7e7M7s7szu7N+/WC5+52d+Y7dec73+/MaIQQAoVCoVAoFAqFQqFQKBSRIxG2AAqFQqFQKBQKhUKhUCi8oZR6hUKhUCgUCoVCoVAoIopS6hUKhUKhUCgUCoVCoYgoSqlXKBQKhUKhUCgUCoUioiilXqFQKBQKhUKhUCgUioiilHqFQhE5Wltb8cc//hEjR47EEUccgQkTJuDbb7/lGkd9fT0mTJjANUw73nrrLRx11FEYO3YsNm/eHEicYfP44497SuvLL7+MiRMnCpAoPKZOnYqpU6eW/b5s2TKMGDEiBInYue666/D1118Lj+fKK6/EMcccg5tvvtlXOIMGDcLYsWMxZswYnHjiifjmm28c7587dy7eeecd43tDQwPOPfdcXzKYWbhwIc4991yMHDkS48ePx1lnnYU5c+a4Dqe4H5k7dy5efvllV8//8MMPGDRoEJ555pmS3ydMmID6+nrHZ0eMGIFly5a5lpkFljx/5513MHfuXNvrr732GsaOHYuxY8fiyCOPxG233cYctlsGDRpEvae+vp6apwqFQuGGqrAFUCgUCrfceOON0DQN//rXv1BdXY333nsP55xzDt544w307NnTd/iZTIaDlOw8//zzmDhxIg455JBA43VLJpNBVVWV7Xc3PPnkkxg1ahS22GILXuJxxU/aKolbbrlFeBxr167Fxx9/jI8++sjVc3ZlOH36dADA008/jeuvvx7Tpk2zDWPu3LmYPXs2Ro0aBQDo27cvHnnkEVdyONHQ0IAzzjgDN9xwA44++mgAwJIlS7B48eKye2l1srgfqa+vxyuvvILjjz+eWZZp06Zhv/32w7Rp03Daaae5T4wgWPL8nXfewX777Yfddtut7FpDQwPuuOMOvPLKK+jVqxey2SwWLlzIHLYIZs+eDQAYOnSoq+dUv6RQKOxQPYNCoYgUS5cuxTvvvIMPPvgA1dXVAIBDDz0Uw4cPxzPPPINx48bhzDPPxMyZM6FpGgBg9OjRuP/++7Hzzjvjvvvuw/vvv49UKoW9994bN954I6qqqjBhwgT85Cc/weeff45dd90V48aNM+JsaGjAFVdcgebmZqRSKZxzzjk47rjjAOSsWLvvvjtmz56NpqYmTJgwwdLC39TUhEmTJmHBggUAgDPPPBMnnHAC7rzzTvz3v//FDz/8gJdeegn33ntvyXMrVqzAH//4R6xYsQIAcMEFF+Doo4/G559/jj/96U9ob29H9+7dMXnyZOy0006or6/HXXfdhR133BHffvstunXrhr/+9a/o2bMn2tvbcdttt2H27NlIJBI48MADcdVVV2HChAm46KKLjAHmiBEj8OSTT2LbbbfFiBEjcMwxx+Cjjz7CgQceiKqqKixZsgSrV6/Gpk2b8Oqrr+K5557Diy++iGw2ix122AG33HILunbtiokTJ6Kurg7z58/HqlWrMGbMGFx66aV4+OGHsXr1apx33nmorq7G448/jh49ehhprq+vx5///Gf069cP3333HXr27Ik777wTffv2LcmbuXPn4o9//CPa29uRzWbx+9//HgcffDBeffVVvPfee7jrrruMOnPmmWfinXfeQWNjI2666SYsWbIEqVQKp5xyCk455RQAOQvbxRdfjFmzZmH8+PHo06cP7r33XiQSCei6jvvvvx/bbbddiQzTpk3D008/jUwmg7q6Otx6663YfvvtsWzZMkyYMAFHHHEEPvnkE2iahnvvvRc77LADUqkUJk2ahM8//xy9e/dGv379sMMOO1jWd0IIbr311rIw7NJeKL9jjjkGH3zwAVpbW3H55ZfjyCOPLEnjv//9bxBCMGnSJOy7774AgLfffhuPPPII0uk0evbsiT/96U/o27cvpk6dimXLlmHNmjVYtmwZfvazn+HWW2816n+h7kyYMAF77bUXPvvsM6N8Tz75ZADAm2++iXvuuQd1dXU46KCD8Nprr2HWrFlYu3Ytfve732HTpk3IZDI4+eSTS9pPKpXCGWecgU2bNmHs2LE4++yzMWrUKMu2VJz2Qn29/PLLLfMVAIYNG4Y777wTADBz5kzce++90HUd22yzDW666SbU1tbi3nvvRUtLi2HhHTNmDM444wzMmjULQE6RfvLJJ6FpGgYPHoxJkyaha9eujnlWzDPPPIPhw4cbCj0A7Ljjjthxxx0t03PkkUdalru5H1m8eDGWLVuGsWPHYp999sGkSZNs86FQz6ZPn45HH30Uv/rVr/D9999jl112KbvPrj8CgFdeeQUffPAB1q9fj2uvvRYjR46k1qulS5di7dq1WLJkCUaPHo399tsPDz30EFavXo1rr70Wo0aNwrJly4w8t6ovu+yyC2bNmoVPP/0UTzzxBH7/+9/joIMOMmRet24dampq0K1bNwBAMpnE4MGDAaAk7EKbHTVqFD799FNUV1fj1ltvxd13341FixZh7733Niz8xX0kkGtX8+fPL8uvyy67DD/++CPa2towfPhwXH/99fjuu+/wj3/8A0BuMuKMM87A+PHjcd9992HGjBnQNA37778/Jk6ciKqqKkycOBE1NTVYsGAB6urq8OijjzqWpUKhqFCIQqFQRIiZM2eSsWPHlv3+97//nVx00UWEEEJOPvlkMnv2bEIIIV9++SU57rjjCCGEvPTSS2TKlClE13VCCCE33HADee655wghhJx++unksssuI9lslhBCyKeffkpOP/10Qgghra2tpKWlhRBCyKZNm8jIkSPJhg0bjOcuvPBCks1myYYNG8hhhx1G5s6dWybfrbfeSiZNmkQIIWTdunXksMMOI/PmzTPC+PTTTy3Te8opp5B//vOfhBBCdF0nGzZsIO3t7eTggw8mX3zxBSGEkDfeeIOMHz/ekHvIkCHku+++M9L4wAMPEEII+ctf/kKuuuoqkslkCCGErF+/3jL+ww47jCxdutT4fNtttxnX7r33XnLEEUeQTZs2GfFddtllJJ1OE0IIefDBB8mdd95JCCHk6quvJmeffTZJpVKksbGR7L///mTVqlVlcZj59NNPyeDBg8lXX31FCCHk0UcfJRdffDEhJFeGV199NSGEkMbGRpJKpQghhKxYsYIceuihRNd1I3/WrVtHCCHkz3/+M/nrX/9qyDRz5kxCCCFtbW1k7NixRl4NHDiQPP3004YcxxxzDGloaDDubW1tLZO1kIeEEDJjxgxDzqVLl5KBAwca+frggw+S66+/nhBCyBNPPEEuuOCCkjpz7733loXtFIZd2gt5e9NNNxlhDB8+nKxdu9ZI42OPPUYIIeSrr74iBx98MGlvbyeLFy8mEyZMIG1tbYQQQl577TVy+eWXE0JyZX7MMceQpqYmkkqlyC9+8Qvy3//+lxBSWndOP/10MnHiRKLrOlmxYgXZZ599SDqdJmvWrCEHHHAAWblyJSGEkJtvvpkcdthhhBBCHnvsMfLggw8aad64caNlPhTuJ8S5LZnrq5mBAwcan//617+SX/7yl2TNmjVk2LBh5McffySEEPLQQw+RSy65hBBSWt/MssydO5ccdthhRj278cYbjbid8qyYc845h/z973+3ldecHqdyLy6L4v6rwLXXXkveeecdy3g+/fRTcuKJJxJCCLnrrrvIn//8Z+NacbhW/VFBzqlTpxJCCPn888/JEUccQQgh1Ho1ZswY0tLSQlpaWsiwYcOMevvf//7XCKM4z+3qy9VXX01eeukly7Rls1ly3nnnkWHDhpFLL72UPPPMM6S5ubks7EJ7+89//kMIIeSPf/wjGTlyJFm3bh1Jp9Pk6KOPNsrQ3H8V16viz4X+IZv
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_happening_overlap(\"Potion Craft: Alchemist Simulator\", df_potioncraft).show()"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:03.981442428Z",
"start_time": "2023-07-02T06:48:03.536218218Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOydd7wdRfn/P3vOuTc3NwmQALkC0ktASERUQi8B6YEAFgQCFlCkWZAu8JUaxEZRECw0RelFQTryAyWIlFASagJJIDft9nLO2d35/bFn9/Q9W2Z2Zs553r4MyTm7M888OztnnnmeecZgjDEQBEEQBEEQBEEQBKEdKdkCEARBEARBEARBEAQRDTLqCYIgCIIgCIIgCEJTyKgnCIIgCIIgCIIgCE0ho54gCIIgCIIgCIIgNIWMeoIgCIIgCIIgCILQFDLqCYIgQjIyMoKf/vSn2GeffbDffvth9uzZePPNN7nWMXfuXMyePZtrmfV47LHHcOCBB+Kwww5Df39/InXK5uabb47U1nvvvRfnnHOOAInkce211+Laa6+t+nzJkiWYMWOGBImCc/755+P1118XXs+ZZ56JQw45BJdeemnkMmrpM+h7/sQTT2D+/Pnev5988klcffXVAID58+fjiSee8K0nCOeccw7uvffemt99/PHH+OEPf4gZM2bg8MMPx+GHH44bb7wxdB08UVEmgiAIWWRkC0AQBKEbF154IQzDwD//+U+0tbXhmWeewQknnIB//OMfmDRpUuzyTdPkIGVw7rzzTpxzzjnYc889E603LKZpIpPJ1P13GG699Vbsu+++WGONNXiJx5U4bWslLrvsMuF1rFy5Ev/+97/x/PPPh7qP5zN84oknsOOOO2KbbbYBAOyzzz7YZ599ADhG/Ysvvoh9992XS12VDA4O4thjj8Xs2bPxy1/+EoZhoL+/H3/4wx+E1KerTARBEDKhGQNBEEQIFi9ejCeeeALPPvss2traAAB77bUXdtllF/z5z3/GrFmzcPzxx+PJJ5+EYRgAgP333x+//e1vsdlmm+G6667Dv/71L+RyOWy//fa48MILkclkMHv2bHzmM5/Byy+/jC222AKzZs3y6uzu7sYZZ5yBoaEh5HI5nHDCCTj88MMBALNnz8a2226LF198EYODg5g9e3ZNz9/g4CAuuugivPPOOwCA448/Hl/+8pfx85//HP/73//w4Ycf4p577sE111xTdt/HH3+Mn/70p/j4448BAN/73vdw0EEH4eWXX8bll1+ObDaLtdZaCxdffDE23XRTzJ07F7/85S+xySab4M0338SECRPwm9/8BpMmTUI2m8WVV16JF198EalUCrvtthvOOusszJ49G6eeeiqmT58OAJgxYwZuvfVWfPrTn8aMGTNwyCGH4Pnnn8duu+2GTCaDRYsWYfny5ejr68ODDz6IO+64A3fffTcsy8LGG2+Myy67DOPHj8c555yDcePG4e2338ayZcswc+ZMfP/738eNN96I5cuX4zvf+Q7a2tpw8803Y+LEiV6b586di1/84hdYb7318N5772HSpEn4+c9/jq6urjLdzJ8/Hz/96U+RzWZhWRZ+/OMfY4899sCDDz6IZ555Br/85S+9PnP88cfjiSeewMDAAC655BIsWrQIuVwOX//61/H1r38dADBlyhScdtppeOqpp3DkkUdi8uTJuOaaa5BKpWDbNn77299iww03LJPh/vvvx+233w7TNDFu3DhcccUV2GijjbBkyRLMnj0b++23H/7zn//AMAxcc8012HjjjZHL5XDRRRfh5ZdfxjrrrIP11lsPG2+8cc3+zhjDFVdcUVVGvba7z++QQw7Bs88+i5GREfzwhz/EAQccUNbGRx99FIwxXHTRRfjiF78IAHj88cdx0003IZ/PY9KkSbj88svR1dWFa6+9FkuWLMGKFSuwZMkSfP7zn8cVV1zh9X+378yePRuf/exn8dJLL3nP96ijjgIAPPzww7j66qsxbtw47L777njooYfw1FNPYeXKlfjRj36Evr4+mKaJo446quz9yeVyOO6449DX14fDDjsM3/zmN7HvvvvWfJdK2+721x/+8Ic19VqLe++9F4899hjS6TQ++OADbLzxxrjmmmvw0ksv4amnnsILL7yAW265BT/+8Y+xYsUKvPjiizjvvPNwzTXXYHh4GIcddhgOOOAAzJw5s6zcenrt7+/H2WefjUWLFmH99devuwDx97//HV1dXfjmN7/pfbbGGmuUte3JJ5/ENddcA9u2scEGG+CSSy7Buuuui3w+jzlz5mDu3LkAgIMPPhjf+973AABXX301HnvsMaRSKay11lq47bbbAKDu+xxWph/84Af46KOPMDo6il122QU/+clPADiRKYsXL8bKlSuxaNEi7L///thxxx3xu9/9DsuXL8d5553nLZDU0x1BEIRyMIIgCCIwTz75JDvssMOqPv/Tn/7ETj31VMYYY0cddRR78cUXGWOMvfrqq+zwww9njDF2zz33sDlz5jDbthljjF1wwQXsjjvuYIwxduyxx7If/OAHzLIsxhhjL7zwAjv22GMZY4yNjIyw4eFhxhhjfX19bJ999mE9PT3efSeffDKzLIv19PSwvffem82fP79KviuuuIJddNFFjDHGVq1axfbee2+2YMECr4wXXnihZnu//vWvs7/97W+MMcZs22Y9PT0sm82yPfbYg73yyiuMMcb+8Y9/sCOPPNKTe+rUqey9997z2nj99dczxhj71a9+xc466yxmmiZjjLHVq1fXrH/vvfdmixcv9v5+5ZVXet9dc801bL/99mN9fX1efT/4wQ9YPp9njDF2ww03sJ///OeMMcbOPvts9s1vfpPlcjk2MDDAdtppJ7Zs2bKqOip54YUX2NZbb81ee+01xhhjf/jDH9hpp53GGHOe4dlnn80YY2xgYIDlcjnGGGMff/wx22uvvZht255+Vq1axRhj7Be/+AX7zW9+48n05JNPMsYYGx0dZYcddpinq6222ordfvvtnhyHHHII6+7u9q4dGRmpktXVIWOMPfLII56cixcvZltttZWn1xtuuIH95Cc/YYwxdsstt7Dvfe97ZX3mmmuuqSrbr4x6bXd1e8kll3hl7LLLLmzlypVeG//4xz8yxhh77bXX2B577MGy2SxbuHAhmz17NhsdHWWMMfbQQw+xH/7wh4wx55kfcsghbHBwkOVyOXbwwQez//3vf4yx8r5z7LHHsnPOOYfZts0+/vhjtsMOO7B8Ps9WrFjBdt11V/bJJ58wxhi79NJL2d57780YY+yPf/wju+GGG7w29/b21tSDez1j/u9SZX/1K4ex8vf8nnvuYbvssgtbsWIFs22bfetb32IPPvggY8zpN/fcc493X2k/LP17ZT1+er388svLntPnPve5sjpcLrroInbppZfWbBNjjK1YsYLtvPPO7KOPPmKMMfa73/2OnX766Ywxxm699Vb23e9+l5mmyYaHh9nhhx/OnnnmGdbT08MOOOAAb7xz9e73PoeRibHiu2FZFjvppJPY008/zRhz+tPMmTPZ8PAwGx4eZjvvvLOnh//9739sv/32a6g7giAI1SBPPUEQBGcOO+wwPPjgg/jiF7+IBx98EIceeigA4JlnnsH8+fPx73//GwAwOjqKcePGefcdeuihSKWqU52YponLLrsMb7zxBgzDwKpVq7Bo0SJsv/32AIDDDz/c83btu+++ePHFF7H11luXlTF37lxcfvnlAIBJkyZhn332wYsvvogpU6bUbcfg4CDefvttfPWrXwUAGIaBtdZaCwsWLMBaa63l1X/QQQfhoosuwuDgIABg6623xuabbw4AmDp1Kl599VUAwLPPPotLLrkE6XQaAMq8436URi0AjjfUDZt/5pln8Morr+DII48EAOTz+bI2felLX0JbWxva2tqw6aabYvHixYE8bVOmTMG0adMAAF/5yldwww03VF0zNDSE888/H++99x4ymQxWrFiBlStXYt1118Whhx6K++67D8cddxweeOAB3HXXXZ688+fP9/ZDDwwM4IMPPvD0VdrW6dOn45xzzsGMGTOw995
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_happening_overlap(\"Untitled Goose Game\", df_untitledgoosegame).show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si osserva come ora come ci sia quasi perfetta corrispondenza tra picchi ed eventi."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Correlazione tra giocatori concorrenti e trend di ricerca"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si verifica la presenza di correlazione tra il numero di giocatori concorrenti e i trend di ricerca su Google."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si creano grafici che sovrappongono le due misure:"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:03.996934934Z",
"start_time": "2023-07-02T06:48:03.984212192Z"
}
},
"outputs": [],
"source": [
"def plot_trends_overlap(name: str, df: pd.DataFrame) -> so.Plot:\n",
" return (\n",
" so.Plot(\n",
" data=df.reset_index(names=\"Date\")[[\n",
" \"Date\",\n",
" \"SteamDB · Relative concurrent players\",\n",
" \"Google Trends · Score\",\n",
" ]].melt(\n",
" id_vars=[\"Date\"],\n",
" value_vars=[\n",
" \"SteamDB · Relative concurrent players\",\n",
" \"Google Trends · Score\",\n",
" ],\n",
" var_name=\"Data\",\n",
" value_name=\"·\"\n",
" ),\n",
" x=\"Date\",\n",
" y=\"·\",\n",
" color=\"Data\",\n",
" )\n",
" .add(\n",
" so.Area(\n",
" alpha=0.3,\n",
" )\n",
" )\n",
" .scale(\n",
" x=so.Temporal()\n",
" .tick(locator=mpld.YearLocator()),\n",
" y=so.Continuous()\n",
" .tick(locator=tick.AutoLocator()),\n",
" )\n",
" .label(\n",
" title=f\"Comparision of concurrent players and Google search trends for {name}\",\n",
" )\n",
" .theme(theme)\n",
" )\n"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:04.742821495Z",
"start_time": "2023-07-02T06:48:03.999152996Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdd5wb1fU28GdG2r4ua8CLwQYDBgwY0zHNBtt0MAYDoYSWhB4gEIohAUzH4AABQ+CFkB8YErohEEpCJzQTWhYTqhvubfuqTLn3/WOKRlrVXWk10j7ffAi7K2l0NTMSOnPOPVeRUkoQERERERERUclRiz0AIiIiIiIiIuoZBvVEREREREREJYpBPREREREREVGJYlBPREREREREVKIY1BMRERERERGVKAb1RFRSNE3DbbfdhoMOOghTp07FtGnT8MgjjxR7WN3cfffdePPNN1Pevnr1apx11ll9MpbPPvsMRx55JI4++mj8+OOPffKcxTZ37lwsW7Ys58fNmzcPp556agFGVDxz587FlVdemfS2aDSK22+/HQcddBCmTJmCo446CjNmzEB7e3tBxnLllVdi7ty5Bdl2Pk2aNCmr86en51mutt1225zuf8cdd+Cwww7DRRdd1KvnnTRpEg4//HBMmTIFBx98MC6//HIsXbq0V9vM1rx587DLLrtg6tSpOPzww3HmmWdi9erVPd5etsd0xYoVuOSSSzBp0iQcc8wxOOaYY/Dggw9mfNzs2bMxe/bsHo2tvb2923/HzjrrrF69XiLqX4LFHgARUS6uuOIKAMCLL76ImpoaRCIRPP/880UeVTzDMPCb3/wm7X0aGxvx0EMP9cl4XnzxRZx88sk4+eST++T5esowDASDsf8sCSGgKAoURcl5W88//zw23XRTDB8+PJ9DzJvE11osl112GSoqKvDCCy+grq4OhmHg6aefxtq1azFw4MBiD6+g8nEM0p1nxTzGjz76KD755BNUV1dn/ZhU433wwQcxfPhwmKaJhx56CCeffDL+8Y9/YNCgQfkcclJjxozBY489BiklLrvsMtx333244YYbCvZ8nZ2dOOWUU3DqqafizjvvhKIoaG9vx8MPP1yw5wSsoH7OnDk444wz3L/11X8fiKg8FP8bBRFRlhYtWoR33nkH7733HmpqagAA1dXVOOmkkwBYX8hmzJiB77//HgBw+umn47jjjgNgZWmmTp2K999/H83Nzbjlllvw+uuvY968eaitrcX999+PIUOGYPbs2ViyZAlWrlyJdevWYbfddsN1112HyspKvPDCC3j88cdhGAbq6upw6623YrPNNsOyZctwyimnYOLEifj8889x0UUX4fXXX8eee+6JadOm4YknnsBf//pXqKqKQCCAv/71r2hubsZpp52Gt956CwDw9NNPY86cOVAUBaNHj8aMGTNQX1+P2bNnY9myZVi7di2WLVuG3XbbDbfeemu3faPrOmbOnIl58+YBAI444gicd955mDNnDl599VW8++67ePHFF/Hkk0/GPa61tRU33niju8+OO+44nH766ViwYAFmzJiBtrY2VFdX4+qrr8ZOO+2EZcuW4dRTT8XBBx+Mjz76CIqi4J577sHmm28OKSVmz56N119/HYqiYOutt8Ydd9yBK6+80t0XAHDqqafiggsuwLhx43Dqqadi++23x+eff45Ro0Zhjz32wKuvvgpFUbB06VL87W9/w6effoqHHnoIuq5jyJAhuOWWW9DY2Jhy37zwwguYP38+rr76atTW1uL222+Py3Q6r2HChAn47LPPUFVVhZkzZ2LrrbeO2zerV6/GpZdeiq6uLmiahjPPPBPHHHMMPvvsM9x+++146qmnAABdXV045JBD8Oqrr6KyshK33347/vvf/0LTNEyePNm9wDNp0iQceeSR+OCDD7Dffvth/PjxuOWWW2CaJkzTxA033IBdd901bgzvv/8+7rnnHmiahkAggOuuuw477rgjACt7e+mll+K1115DKBTCbbfdhp122gkAcPvtt+ONN97AoEGDsP322yd9Py1cuBDvv/8+3nvvPdTV1QEAgsFg3MWfVOdBunO2vb0dV1xxBX766ScMHz4ciqLgkEMOcY+/o62tDTfeeCMWL14MTdNw0kknue9lr2Tvn9raWrz++utJz4tM++zCCy/EW2+9hWOPPRYTJ07E9ddfjxUrVgAAzjvvPBx++OEArID9vffeQ3NzM373u99h8uTJceNKdp7961//wuLFi7FmzRq0tbXhxRdfxBNPPIFnn30Wpmli8803x80334z6+npceeWVqKurw3fffYdVq1ZhypQp7rkyb9483HDDDVBVFYcccoj7nOFwGJdddhmWLl0KKSUmTJiAyy+/PG5cZ5xxBqLRKE444QQcccQR+MUvfpH0swFAt/dfss8WRyAQwLnnnot33nkHL730Ek455RSsXLkSN9xwA9asWQPTNPHrX/8aBx10EACkPD7pPmNTURQFu+22G95++20AqT/vACvTnuqYAoCUErfeeitaW1txyy23xF3I+Mc//oHGxkb84he/cP82cOBAXHLJJe7vF198MX766SdEIhHss88+uPrqq7uNN905+Mknn2DWrFmIRqMIBAK46667MHPmTKxZswZTp07F8OHDcd9992HSpEmYM2cOhg8fju+++w433XQT2traAADXXnstdt9995T7i4j6IUlEVCJefvlledRRR6W8/dZbb5UzZsyQUkq5fv16OXHiRPntt99KKaWcOHGivO+++6SUUr766qty5513lv/5z3+klFJeffXV8v7775dSSnnPPffIiRMnypaWFmmapjzvvPPkY489JqWUsrm52X2uV199VV544YVSSimXLl0qt9lmG/nOO++4t0+fPl0+99xzUkopJ0yYIMPhsJRSyo6ODmkYhly6dKmcOHGilFLKb775Rk6cOFGuX79eSinltddeK2+77TZ3PEceeaTs7OyUmqbJI444Qn722WfdXvucOXPkOeecIw3DkKFQSB5zzDHueLxjSXTZZZfJO++80/3deY3HHHOMfPnll6WUUn7++efygAMOkNFo1H2tH3/8sZRSygceeEBeffXVUkopn376aXnGGWe4r9XZVuLzn3LKKe7jTznlFHnxxRdL0zSllFI+99xzco899pArV66UUkq5aNEieeqpp8pIJCKllPKll16Sl1xyScZ9432ORM5r+Oc//ymllPK1116TxxxzjJRSyo8//liecsopUkopw+GwDIVCUkop29ra5OTJk2VLS4uUUsqjjjrKPbeefPJJ+bvf/c4d05w5c6SUUhqGIc8880z53nvvSSmtc9A5rlJKec4558jPP/9cSimlruuyo6Oj21hbW1vdfdPU1CSnTZvm3rbNNtvIuXPnuvvlF7/4hZRSyjfeeEMed9xxMhKJyEgkIo899lg5ffr0btvO9H6SMvV5kO6cveWWW+Stt94qpZRy+fLlcpdddnGPv/dcmD59unzzzTellFJGIhE5depU+eOPP3YbQ7L3T7rzItM+e/zxx93fTzrpJPnUU09JKaUUQrjHd+LEiXL27Nnu6z744IOT7p/E8+yee+6RBx98sGxra5NSWufTxRdfLHVdl1Ja75c//OEP7uv/xS9+ITVNkx0dHXKvvfaSq1atktFoVI4fP17+97//lVJK+fDDD8ttttlGSinlP//5T3nNNde4z9fa2pp0XM79pUz/2ZD4/ks0ceJEuXTp0ri/3XTTTfLaa6+VUkp5+umny//973/uWCZPnixbW1szvm9TfcZ6ed+LmqbJc889Vz777LMZX1O6Y7po0SL529/+Vt56661SCNHtOWfMmCFvuummpPvC4XyumaYpzz33XPn222+7r+uee+5x90Wyc7C5uVnuu+++8ptvvpFSWud9V1dX3H8PEve9pmnywAMPlP/+97+llNZnRXt7e9oxElH/w0w9EZWNefPm4ZZbbgEADBkyBJMnT8Ynn3ziZmkPPfRQAMD222+Puro6N9Oxww474KuvvnK3c+CBB2Lw4MEAgGnTpuGFF17AKaecgkWLFuGiiy5CS0sLhBAQQriPGTx
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_trends_overlap(\"Deep Rock Galactic\", df_deeprockgalactic).show()"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:05.177520825Z",
"start_time": "2023-07-02T06:48:04.743237333Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdd5xcZfU/8M9tM7Mlm00hoQUTShoQkZKEkkAIRYEEQkepKioIWChBBELv6BdQgR+iiCBNelMRKYISBIQQCaGk92T79Hvv8/z+uHPvzuzM7M7s7p2y+3m/XrzI7rS7u1Puec55zlGklBJEREREREREVHXUch8AEREREREREfUOg3oiIiIiIiKiKsWgnoiIiIiIiKhKMagnIiIiIiIiqlIM6omIiIiIiIiqFIN6IqIiJZNJ3HzzzTj00ENx9NFH49hjj8UDDzxQ7sPKcscdd+DVV1/Ne/nGjRtx9tlnl+RY3n//fRx11FE45phj8MUXX5TkMcvtqaeewpo1a4q+3cKFC3Haaaf5cETl89RTT+HSSy/NeVkikcAtt9yCQw89FHPmzMHcuXOxYMECtLe3+3Isl156KZ566ilf7rs/HXzwwQU9f3r7PCvWhAkTirr+7bffjm984xu44IIL+vS4tm3jjjvuwKGHHoqvf/3rOO644/Cvf/3Lu/yuu+7ChAkT8J///Mf73vr16zFp0qSM59z//vc/nHbaaTjssMMwe/ZsXH311YjFYt7lEyZMwNFHH405c+Zg3rx5eO+997zLquU5Q0SDl17uAyAiqjaXXHIJAOC5555DTU0N4vE4nn766TIfVSbLsvCjH/2o2+uMHj0a9913X0mO57nnnsM3v/lNfPOb3yzJ4/WWZVnQ9c6PRiEEFEWBoihF39fTTz+N7bbbDttvv31/HmK/6fqzlstFF10EwzDwzDPPoK6uDpZl4fHHH8fmzZvR0NBQ7sPzVX/8Dbp7npXzb/yHP/wB7777LkKhUMG3yXW8d911FxYtWuQ9PxYtWoTvfe97ePjhh7HTTjsBACZPnoxnnnkG++yzDwDg2WefxaRJk7z7aG5uxne/+13ccMMNmDVrFkzTxM9//nNceeWVuPXWW73rPfvsswCARx99FJdffjn+8pe/9PrnJyIqpfJ/mhMRVZHly5fj9ddfx5tvvomamhoAQCgUwimnnAIACIfDWLBgAT777DMAwBlnnIHjjz8egJN5O/roo/HWW2+hubkZN9xwA1555RUsXLgQtbW1uPvuuzF8+HDcddddWLlyJdavX48tW7Zgr732wlVXXYVAIIBnnnkGDz30ECzLQl1dHW688UbssMMOWLNmDU499VTMmjULH3zwAS644AK88sormDp1Ko499lg88sgjePjhh6GqKjRNw8MPP4zm5macfvrp+Mc//gEAePzxx/Hggw9CURRMnDgRCxYsQH19Pe666y6sWbMGmzdvxpo1a7DXXnvhxhtvzPrdmKaJm266CQsXLgQAHHnkkTjnnHPw4IMP4uWXX8Ybb7yB5557Do8++mjG7VpbW3Httdd6v7Pjjz8eZ5xxBr788kssWLAAbW1tCIVCuPzyy/HVr34Va9as8TJu//73v6EoCu6880585StfgZQSd911F1555RUoioJddtkFt99+Oy699FLvdwEAp512Gs477zxMmzYNp512GiZPnowPPvgAO++8M/bZZx+8/PLLUBQFq1evxp/+9Ce89957uO+++2CaJoYPH44bbrgBo0ePzvu7eeaZZ7B48WJcfvnlqK2txS233JKR6XR/hpkzZ+L9999HMBjETTfdhF122SXjd7Nx40ZceOGFiEQiSCaT+O53v4t58+bh/fffxy233ILHHnsMABCJRHD44Yfj5ZdfRiAQwC233IKPPvoIyWQSs2fP9hZ4Dj74YBx11FF4++23ccABB2DGjBm44YYbYNs2bNvGNddcgz333DPjGN566y3ceeedSCaT0DQNV111FXbffXcATnbzwgsvxF/+8hdEo1HcfPPN+OpXvwoAuOWWW/D3v/8dQ4cOxeTJk3O+npYtW4a33noLb775Jurq6gAAuq5nLP7kex5095xtb2/HJZdcglWrVmH77beHoig4/PDDvb+/q62tDddeey1WrFiBZDKJU045xXstp8v1+qmtrcUrr7yS83nR0+/s/PPPxz/+8Q8cd9xxmDVrFq6++mqsW7cOAHDOOefgiCOOAOAE7G+++Saam5tx2WWXYfbs2RnHlet59re//Q0rVqzApk2b0NbWhueeew6PPPII/vznP8O2bXzlK1/B9ddfj/r6elx66aWoq6vD0qVLsWHDBsyZM8d7rixcuBDXXHMNVFXF4Ycf7j1mLBbDRRddhNWrV0NKiZkzZ+Liiy/OOK4zzzwTiUQCJ510Eo488kicddZZOd8bAGS9/tLfW+LxOH73u9/hueee854fU6ZMwUknnYT77rsPN910EwBg5syZePnll5FIJBAMBvHiiy/imGOOweeffw4AePjhh7Hffvth1qxZAADDMHD55ZfjwAMPxOrVqzFmzJiM499nn31yvscREVUsSUREBXvxxRfl3Llz815+4403ygULFkgppWxqapKzZs2Sn376qZRSylmzZslf//rXUkopX375ZbnHHnvI//znP1JKKS+//HJ59913SymlvPPOO+WsWbNkS0uLtG1bnnPOOfKPf/yjlFLK5uZm77Fefvllef7550sppVy9erUcP368fP31173L58+fL5988kkppZQzZ86UsVhMSillR0eHtCxLrl69Ws6aNUtKKeWSJUvkrFmzZFNTk5RSyiuvvFLefPPN3vEcddRRMhwOy2QyKY888kj5/vvvZ/3sDz74oPz+978vLcuS0WhUzps3zzue9GPp6qKLLpK/+MUvvK/dn3HevHnyxRdflFJK+cEHH8iDDjpIJhIJ72d95513pJRS3nPPPfLyyy+XUkr5+OOPyzPPPNP7Wd376vr4p556qnf7U089Vf74xz+Wtm1LKaV88skn5T777CPXr18vpZRy+fLl8rTTTpPxeFxKKeXzzz8vf/KTn/T4u0l/jK7cn+Gvf/2rlFLKv/zlL3LevHlSSinfeecdeeqpp0oppYzFYjIajUoppWxra5OzZ8+WLS0tUkop586d6z23Hn30UXnZZZd5x/Tggw9KKaW0LEt+97vflW+++aaU0nkOun9XKaX8/ve/Lz/44AMppZSmacqOjo6sY21tbfV+N4sWLZLHHnusd9n48ePlU0895f1ezjrrLCmllH//+9/l8ccfL+PxuIzH4/K4446T8+fPz7rvnl5PUuZ/HnT3nL3hhhvkjTfeKKWUcu3atfJrX/ua9/dPfy7Mnz9fvvrqq1JKKePxuDz66KPlF198kXUMuV4/3T0vevqdPfTQQ97Xp5xyinzssceklFIKIby/76xZs+Rdd93l/dyHHXZYzt9P1+fZnXfeKQ877DDZ1tYmpXSeTz/+8Y+laZpSSuf1ctttt3k//1lnnSWTyaTs6OiQ06dPlxs2bJCJRELOmDFDfvTRR1JKKe+//345fvx4KaWUf/3rX+UVV1zhPV5ra2vO43KvL2X37w1dX3/pPv30U7n33ntnff+VV17xXi933nmnvPPOO+W1114rX3jhBfnhhx/Kc845Rz755JPec+68886TDzzwQNb9zJ071/v7px/vvffeKy+55BLv6+7ev4iIKgEz9URE/WjhwoW44YYbAADDhw/H7Nmz8e6773pZ2q9//esAnHLRuro67L333gCAXXfdFR9//LF3P4cccggaGxsBAMceeyyeeeYZnHrqqVi+fDkuuOACtLS0QAgBIYR3m8bGRhx44IE5j2vSpEm45JJLMGPGDMyaNQv19fUZl7/77ruYPXs2hg8fDgA4+eST8fOf/9y7/MADD/QyZZMmTcLq1auzMroLFy7E8ccfD03TUFNTg7lz5+Lf//533mNyvfnmm/jrX//qfT1s2DCEw2GsXr3ay1h+7WtfQ0NDA5YvX466ujqMHDkS06ZNA+Bk7v79738DAP75z3/ilFNO8Up+hw0b1u1ju+bOnQtV7WwzM33
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_trends_overlap(\"OMORI\", df_omori).show()"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:05.556985976Z",
"start_time": "2023-07-02T06:48:05.178640741Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAADgLklEQVR4nOzdeXhcZfn/8c85s2bpXhq2QstWthYEbVkrpcjeFgqyCYgKKgiIooAKlJ0iIrK4ov6w+AUFKfuirBYQioBQCm0p3dd0yZ5MZjvP74/JTJNmbeZM5kzm/bouL2kyOXkySSbzmft+7scyxhgBAAAAAICCY+d7AQAAAAAAoHcI9QAAAAAAFChCPQAAAAAABYpQDwAAAABAgSLUAwAAAABQoAj1ADoVi8V0xx136Ctf+YqmTZum6dOn68EHH8z3stq555579Morr3T6/srKSl100UV9spb3339fJ598sk455RR9/vnnffI582327NlavXr1Nn/c3Llzdd555+VgRfkze/ZsXXPNNR2+LxqN6uc//7m+8pWvaMqUKZo6dapmzJihurq6nKzlmmuu0ezZs3NybTcdffTRPfr56e3P2bYaM2bMNt3+rrvu0gknnKDLL788q8979NFH68QTT9TUqVM1depUvfnmm13efvXq1e2+v9OmTctqDVtbt26drrjiCh199NGaPn26zjnnHM2ZM2ebr9P6cfGDDz7Y5r8jDQ0NOvDAA3XHHXe0eXtPfsbPO+88zZ07d1uX3GPd3edz587t8vO/9dZbOu200zRt2jQdf/zxuvLKK3t87W3Vk9+1BQsW6OWXX3b18wLIPX++FwDAu6666ipJ0tNPP62SkhI1NzfriSeeyPOq2kokEvr+97/f5W0qKir0wAMP9Ml6nn76aZ1zzjk655xz+uTz9VYikZDfv+VPgOM4sixLlmVt87WeeOIJ7bTTTtp5553dXKJrtv5a8+VHP/qRAoGAnnzySZWVlSmRSOjRRx/Vxo0bNXDgwHwvL6fc+B509XOWz+/xX/7yF7377rsKh8M9/pjO1vuHP/xBO++8s1577TVdeeWVevvtt2XbHddf1qxZoyeeeELTp0/PvO2pp57a9i+gE42NjTrvvPN0zjnn6Fe/+pWk1Auk7733Xrvbdnf/t35cXL16tWbNmqULLrigx2t58cUXNXbsWD377LP60Y9+JJ/Pt61fTs50d5+/++67kqQJEya0e18ikdCVV16pv/3tbxo1apSkVKju6bVzYcGCBXr33Xd1zDHHbNPHeeVxFihW/PYB6NCyZcv0+uuva86cOSopKZEkhcNhnX322ZJSlZMZM2bos88+kyR9/etf1+mnny4pVQ2YNm2a3nzzTVVVVem2227TSy+9pLlz56q0tFS//e1vNXToUN13331asWKF1q1bp02bNunggw/WDTfcoGAwqCeffFJ//etflUgkVFZWpttvv1277LKLVq9erXPPPVeTJk3SBx98oMsvv1wvvfSSxo8fr+nTp+uRRx7R//3f/8m2bfl8Pv3f//2fqqqqdP755+vVV1+VJD366KOaNWuWLMvS3nvvrRkzZqi8vFz33XefVq9erY0bN2r16tU6+OCDdfvtt7e7b+LxuGbOnJmpvpx00km6+OKLNWvWLL3wwgv697//raefflp/+9vf2nxcTU2Nbr755sx9dvrpp+vrX/+6lixZohkzZqi2tlbhcFjXXnutDjjgAK1evVrnnXeejj32WL399tuyLEv33nuvdt11VxljdN999+mll16SZVnac889ddddd+maa67J3BdSqkp16aWXasKECTrvvPO077776oMPPtAee+yhL33pS3rhhRdkWZZWrVqlhx9+WO+9954eeOABxeNxDR06VLfddpsqKio6vW+efPJJzZ8/X9dee61KS0v185//vE2lM/01TJw4Ue+//75CoZBmzpypPffcs819U1lZqSuvvFKNjY2KxWK68MILdeqpp+r999/Xz3/+c/3973+XlAoaxx13nF544QUFg0H9/Oc/10cffaRYLKbJkydnXuA5+uijdfLJJ+utt97SEUccoSOPPFK33XabksmkksmkbrrpJh100EFt1vDmm2/q3nvvVSwWk8/n0w033KCxY8dKSlVvr7zySr344otqamrSHXfcoQMOOECS9POf/1wvv/yyBg0apH333bfD36elS5fqzTff1Jw5c1RWViZJ8vv9bV786eznoKuf2bq6Ol111VVauXKldt55Z1mWpeOOO65N0JOk2tpa3XzzzVq+fLlisZjOPvvszO9yax39/pSWluqll17q8Oeiu/vssssu06uvvqrTTjtNkyZN0o033qi1a9dKki6++GKdeOKJklKBfc6cOaqqqtJPf/pTTZ48uc26Ovo5+9e//qXly5drw4YNqq2t1dNPP61HHnlE//jHP5RMJrXrrrvq1ltvVXl5ua655hqVlZVp0aJFWr9+vaZMmZL5WZk7d65uuukm2bat4447LvM5I5GIfvSjH2nVqlUyxmjixIn68Y9/3GZdF1xwgaLRqM4880yddNJJ+sY3vtHhY4Okdr9/HT22pB166KGqqalRTU2Nli9frttuu03RaFSDBw/WTTfdpNGjR+uWW27R6tWrNW3aNB100EGaMWOGxowZo0WLFkmSXnnlFd17771yHEc77bSTbr75Zm233XaaPXu2/vWvf8nn82np0qXaddddde+99yoYDLZZw7PPPqvhw4frm9/8ZuZtFRUVOumkkzr8eq644ooOf4e3flwcPHiwNmzYoGnTpmnnnXfWr3/9607vh9bf/0suuUT333+/3nrrLU2cOLHdbTp7fJWkN954Q3fffbc2bNigb3/72zrrrLMkSe+9955++ctfqrm5WSUlJbrxxhu1xx57ZO4j27b1+eefa+zYsTrvvPP0i1/8QmvXrtW3vvUtfe1rX5OkzH3e0c/Lqaeemvk78PLLL+v888/XaaedlllzY2OjotGohgwZknnbPvvsk/nv1t/PMWPG6Ic//KFefPFFNTc36xe/+IUefPBBffLJJ9pxxx31m9/8RsFgsM1jvpR6LJw1a1a7F8NuvfVWffDBB4pGoxozZkzmZ+zee+9VU1NTpnPg4osv7vJv5ta/gwDyxABAB5577jkzderUTt9/++23mxkzZhhjjNm8ebOZNGmSWbhwoTHGmEmTJplf//rXxhhjXnjhBXPggQea//73v8YYY6699lrz29/+1hhjzL333msmTZpkqqurTTKZNBdffLF56KGHjDHGVFVVZT7XCy+8YC677DJjjDGrVq0ye+21l3n99dcz77/66qvN448/bowxZuLEiSYSiRhjjKmvrzeJRMKsWrXKTJo0yRhjzIIFC8ykSZPM5s2bjTHGXH/99eaOO+7IrOfkk082DQ0NJhaLmZNOOsm8//777b72WbNmme985zsmkUiYpqYmc+qpp2bW03otW/vRj35kfvnLX2b+nf4aTz31VPPcc88ZY4z54IMPzFFHHWWi0Wjma33nnXeMMcb87ne/M9dee60xxphHH33UXHDBBZmvNX2trT//ueeem/n4c88911xxxRUmmUwaY4x5/PHHzZe+9CWzbt06Y4wxy5YtM+edd55pbm42xhjzzDPPmB/84Afd3jetP8fW0l/DP//5T2OMMS+++KI59dRTjTHGvPPOO+bcc881xhgTiURMU1OTMcaY2tpaM3nyZFNdXW2MMWbq1KmZn62//e1v5qc//WlmTbNmzTLGGJNIJMyFF15o5syZY4xJ/Qymv6/GGPOd73zHfPDBB8YYY+LxuKmvr2+31pqamsx9M2/ePDN9+vTM+/baay8ze/bszP3yjW98wxhjzMsvv2xOP/1009zcbJqbm81pp51mrr766nbX7u73yZjOfw66+pm97bbbzO23326MMWbNmjXmC1/4Qub73/pn4eqrrzavvPKKMcaY5uZmM23aNPP555+3W0NHvz9d/Vx0d5/99a9/zfz77LPPNn//+9+NMcY4jpP5/k6aNMncd999ma/72GOP7fD+2frn7N577zXHHnusqa2tNcakfp6uuOIKE4/HjTG
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_trends_overlap(\"Potion Craft: Alchemist Simulator\", df_potioncraft).show()"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:06.057612638Z",
"start_time": "2023-07-02T06:48:05.545203433Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdd5wU9f0/8NfM7F6nipw1KhbACLYEsKGAERsWNHZN0xiN+k1iRGNE7GKLsaR8Y/z+bNGoAVvUGGuIRjHWEwVEQaQecHX7Tvn8/pid2XK7V3fa3uv5ePgQ7o7bub3Z2Xl/3uUjCSEEiIiIiIiIiChwZK8PgIiIiIiIiIj6h0E9ERERERERUUAxqCciIiIiIiIKKAb1RERERERERAHFoJ6IiIiIiIgooBjUE5EvpdNp3HLLLfjOd76D448/HrNnz8YDDzzg9WF1cdddd+HVV18t+fnm5macd955rhzL+++/j2OPPRYnnHACvvjiC1ce02sLFy7E2rVr+/zvFi9ejLPPPtuBI/LOwoULccUVVxT9XCqVwq233orvfOc7mDVrFo477jjMmzcPnZ2djhzLFVdcgYULFzryvctp+vTpvTp/+nue9dXYsWP79PV33HEHjjrqKFxyySVlfdy1a9di+vTpPf67xYsXY/HixfbfP/nkE/z617+2v0fhOdDXnw8A7rnnHtxzzz1FP9fR0YG5c+di+vTpOP7443H88cfj1ltvhaqqfX6ccvHjMRFR5Qt5fQBERMXMmTMHAPDss8+itrYWyWQSTz31lMdHlU/TNPzP//xPt1/T2NiI++67z5XjefbZZ3HGGWfgjDPOcOXx+kvTNIRC2bcfwzAgSRIkSerz93rqqaew/fbbY4cddijnIZZN4c/qlV/+8pcIh8N4+umnUV9fD03T8MQTT2Dz5s0YOnSo14fnqHL8Dro7z7z8HT/44IN49913UVNT0+t/U87jfffddwEAkydPBgBMmDABEyZMAACsW7cOTz31FGbPnl2WxypkGAZ+9KMfYf/998dLL72EcDiMZDKJP//5z0ilUgiHw448btCOiYgGB+/vNIiICqxatQpvvPEGFi1ahNraWgBATU0NTj/9dABANBrFvHnz8PnnnwMAvve97+Hkk08GADs78uabb6K1tRU33XQTXn75ZSxevBh1dXX4wx/+gJEjR+Kee+7B6tWrsWHDBmzZsgX7778/rrnmGlRVVeHpp5/GI488Ak3TUF9fj5tvvhnf+MY3sHbtWpx11lmYNm0aPvjgA1xyySV4+eWXMWnSJMyePRuPPfYY/vKXv0CWZSiKgr/85S9obW3FOeecg9deew0A8MQTT+Chhx6CJEkYN24c5s2bh4aGBtxzzz1Yu3YtNm/ejLVr12L//ffHzTff3OW5UVUV8+fPt7NjxxxzDC644AI89NBDePHFF/Gvf/0Lzz77LP7617/m/bv29nZcf/319nN28skn43vf+x6+/PJLzJs3Dx0dHaipqcFVV12FvffeG2vXrsXZZ5+NI444Am+//TYkScLdd9+NnXbaCUII3HPPPXj55ZchSRJ233133HHHHbjiiivs5wIAzj77bFx00UWYPHkyzj77bOy555744IMPsNtuu+Hb3/42XnzxRUiShDVr1uDRRx/Fe++9h/vuuw+qqmLkyJG46aab0NjYWPK5efrpp7FkyRJcddVVqKurw6233pqXCbR+hqlTp+L9999HdXU15s+fj9133z3vuWlubsall16KWCyGdDqNc889FyeeeCLef/993HrrrXj88ccBALFYDDNnzsSLL76Iqqoq3Hrrrfj444+RTqcxY8YMe4Fn+vTpOPbYY/HWW2/h4IMPxiGHHIKbbroJuq5D13Vcd9112G+//fKO4c0338Tdd9+NdDoNRVFwzTXX2MHR2LFjcemll+If//gH4vE4brnlFuy9994AgFtvvRWvvPIKhg0bhj333LPo62nlypV48803sWjRItTX1wMAQqFQ3uJPqfOgu3O2s7MTc+bMwddff40ddtgBkiRh5syZXYK4jo4OXH/99fjqq6+QTqdx+umn26/lXMVeP3V1dXj55ZeLnhc9PWcXX3wxXnvtNZx00kmYNm0arr32Wqxfvx4AcMEFF+Doo48GYAbsixYtQmtrK6688krMmDEj77iKnWf//Oc/8dVXX2HTpk3o6OjAs88+i8ceewx/+9vfoOs6dtppJ9x4441oaGjAFVdcgfr6eixfvhwbN27ErFmz7HNl8eLFuO666yDLMmbOnGk/ZiKRwC9/+UusWbMGQghMnToVl112Wd5xff/730cqlcKpp56KY445Bj/4wQ+KXhsAdHn9Fbu2lLJ48WL85je/wc4774xPP/0UQ4YMwe9+9zu0trba15lXXnkF55xzDnbYYQfce++9ePjhh3HDDTdg7dq1OP7447Hffvth3rx5ed/3vffew29+8xskk0nU1tbi2muvxW677YZ0Oo158+bhgw8+wKhRo7Dttttip5126nJcb731FlpbWzFnzhwoigLAfJ+46KKL7K/54IMPcNNNNyGVSmH48OG47rrrsMsuuwAA7r33XvsaNGXKFFxxxRUIhUJ9Pg/7ekw33ngjPvjgA6RSKYwdOxY33XQTqqursXDhQvzzn/+ELMv44osvMGHCBJx99tm4/fbbsX79evzoRz/CmWee2e1zR0SDmCAi8pnnn39eHHfccSU/f/PNN4t58+YJIYRoaWkR06ZNE8uWLRNCCDFt2jTxu9/9TgghxIsvvij22Wcf8d///lcIIcRVV10l/vCHPwghhLj77rvFtGnTRFtbm9B1XVxwwQXi4YcfFkII0draaj/Wiy++KC6++GIhhBBr1qwRe+yxh3jjjTfsz19++eViwYIFQgghpk6dKhKJhBBCiEgkIjRNE2vWrBHTpk0TQgixdOlSMW3aNNHS0iKEEOLqq68Wt9xyi308xx57rIhGoyKdTotjjjlGvP/++11+9oceekicf/75QtM0EY/HxYknnmgfT+6xFPrlL38pfvOb39h/t37GE088UTz//PNCCCE++OADcdhhh4lUKmX/rO+8844QQog//vGP4qqrrhJCCPHEE0+I73//+/bPan2vwsc/66yz7H9/1llniZ/97GdC13UhhBALFiwQ3/72t8WGDRuEEEKsWrVKnH322SKZTAohhHjuuefEz3/+8x6fm9zHKGT9DC+99JIQQoh//OMf4sQTTxRCCPHOO++Is846SwghRCKREPF4XAghREdHh5gxY4Zoa2sTQghx3HHH2efWX//6V3HllVfax/TQQw8JIYTQNE2ce+65YtGiRUII8xy0fq9CCHH++eeLDz74QAghhKqqIhKJdDnW9vZ2+7lpamoSs2fPtj+3xx57iIULF9rPyw9+8AMhhBCvvPKKOPnkk0UymRTJZFKcdNJJ4vLLL+/yvXt6PQlR+jzo7py96aabxM033yyEEGLdunVi3333tX//uefC5ZdfLl599VUhhBDJZFIcf/zx4osvvuhyDMVeP92dFz09Z4888oj999NPP108/vjjQgghDMOwf7/Tpk0T99xzj/1zH3HEEUWfn8Lz7O677xZHHHGE6OjoEEKY59PPfvYzoaqqEMJ8vdx+++32z/+DH/xApNNpEYlExJQpU8TGjRtFKpUShxxyiPj444+FEELcf//9Yo899hBCCPHSSy+JuXPn2o/X3t5e9Lisrxei+2tD4euvu+8jhMi7br3zzjtiwoQJ9u9s7ty5edfRu+++2/53ua+r3D8XPk5bW5s4+eST7Z/rgw8+EKeccooQQogHH3xQXHDBBULXddHW1iamTZuW9xiWP/3pT+KCCy4o+vMIIUQqlRJTp04VH374oRDCfB2cdNJJQgghXn31VXHiiSeKeDwuNE0T559/vn2+9PU87MsxCZH//nLttdfaj7tgwQJx0EEHiZaWFqFpmpg1a5a46KKLhKqqYv369WK//fYTqqp2+9wR0eDFTD0RBc7ixYtx0003AQBGjhyJGTNm4N1337WztEceeSQAYM8990R9fT2+9a1vAQC++c1v4pNPPrG/z+GHH47hw4c
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_trends_overlap(\"Untitled Goose Game\", df_untitledgoosegame).show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Visivamente, sembra esserci almeno una buona correlazione tra i due valori in due dei grafici creati, mentre essa sembra essere pessima in altri due."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lo si verifica con il metodo `pd.DataFrame.corr`:"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:06.079650855Z",
"start_time": "2023-07-02T06:48:06.058210607Z"
}
},
"outputs": [
{
"data": {
"text/plain": "0.7957309422777553"
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_deeprockgalactic.corr()[\"SteamDB · Relative concurrent players\"][\"Google Trends · Score\"]"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:06.268636217Z",
"start_time": "2023-07-02T06:48:06.077512032Z"
}
},
"outputs": [
{
"data": {
"text/plain": "-0.011662611466231525"
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_omori.corr()[\"SteamDB · Relative concurrent players\"][\"Google Trends · Score\"]"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:06.269264192Z",
"start_time": "2023-07-02T06:48:06.096905840Z"
}
},
"outputs": [
{
"data": {
"text/plain": "0.6747104843444527"
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_potioncraft.corr()[\"SteamDB · Relative concurrent players\"][\"Google Trends · Score\"]"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:06.269846021Z",
"start_time": "2023-07-02T06:48:06.153100506Z"
}
},
"outputs": [
{
"data": {
"text/plain": "0.12652683216472563"
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_untitledgoosegame.corr()[\"SteamDB · Relative concurrent players\"][\"Google Trends · Score\"]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Infatti, si trova una correlazione fortemente positiva in due dei dataset, una molto debole nell'ultimo, e un valore insignificante nel secondo."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Sviluppo di una funzione con buona correlazione rispetto al numero di giocatori concorrenti - `unimore_bda_3.post.add_scores`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In questa sezione si prova a sviluppare una funzione che sfrutta le informazioni sui prezzi, sugli annunci, e sui trend per predire il numero di giocatori concorrenti in ciascun momento, e poi la si correla al valore effettivo per verificarne l'efficacia."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I risultati della funzione per ciascun giorno vengono inseriti in-place nei `pd.DataFrame` attraverso la funzione `unimore_bda_3.post.add_scores`, che viene applicata immediatamente ai dataframe e poi di cui si procede a descriverne la costruzione."
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:06.270132047Z",
"start_time": "2023-07-02T06:48:06.153865538Z"
}
},
"outputs": [],
"source": [
"from unimore_bda_3 import post"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:19.752974129Z",
"start_time": "2023-07-02T06:48:06.194168811Z"
}
},
"outputs": [
{
"data": {
"text/plain": " SteamDB · Peak concurrent players \\\n2016-12-01 11.0 \n2016-12-02 NaN \n2016-12-03 NaN \n2016-12-04 NaN \n2016-12-05 NaN \n... ... \n2023-06-25 35016.0 \n2023-06-26 30017.0 \n2023-06-27 29568.0 \n2023-06-28 28539.0 \n2023-06-29 28042.0 \n\n SteamDB · Day average of concurrent players \\\n2016-12-01 NaN \n2016-12-02 NaN \n2016-12-03 NaN \n2016-12-04 NaN \n2016-12-05 NaN \n... ... \n2023-06-25 26276.0 \n2023-06-26 22421.0 \n2023-06-27 21949.0 \n2023-06-28 21347.0 \n2023-06-29 21347.0 \n\n SteamDB · Player count flags SteamDB · Steam \\\n2016-12-01 NaN NaN \n2016-12-02 NaN NaN \n2016-12-03 NaN NaN \n2016-12-04 NaN NaN \n2016-12-05 NaN NaN \n... ... ... \n2023-06-25 NaN 9.89 \n2023-06-26 NaN 9.89 \n2023-06-27 NaN 9.89 \n2023-06-28 NaN 9.89 \n2023-06-29 NaN 9.89 \n\n SteamDB · Price flags Google Trends · Score \\\n2016-12-01 NaN 0.00 \n2016-12-02 NaN 0.00 \n2016-12-03 NaN 0.00 \n2016-12-04 NaN 0.00 \n2016-12-05 NaN 0.00 \n... ... ... \n2023-06-25 NaN 0.43 \n2023-06-26 NaN 0.43 \n2023-06-27 NaN 0.43 \n2023-06-28 NaN 0.43 \n2023-06-29 NaN 0.43 \n\n Steam · Count of News tagged no_tags \\\n2016-12-01 0.0 \n2016-12-02 0.0 \n2016-12-03 0.0 \n2016-12-04 0.0 \n2016-12-05 0.0 \n... ... \n2023-06-25 0.0 \n2023-06-26 0.0 \n2023-06-27 0.0 \n2023-06-28 0.0 \n2023-06-29 1.0 \n\n Steam · Count of News tagged patchnotes \\\n2016-12-01 0.0 \n2016-12-02 0.0 \n2016-12-03 0.0 \n2016-12-04 0.0 \n2016-12-05 0.0 \n... ... \n2023-06-25 0.0 \n2023-06-26 0.0 \n2023-06-27 0.0 \n2023-06-28 0.0 \n20
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>SteamDB · Peak concurrent players</th>\n <th>SteamDB · Day average of concurrent players</th>\n <th>SteamDB · Player count flags</th>\n <th>SteamDB · Steam</th>\n <th>SteamDB · Price flags</th>\n <th>Google Trends · Score</th>\n <th>Steam · Count of News tagged no_tags</th>\n <th>Steam · Count of News tagged patchnotes</th>\n <th>Steam · Count of News tagged hide_store</th>\n <th>Steam · Count of News tagged ModAct_1401078964_1677758714_0</th>\n <th>...</th>\n <th>Cumulative · General happening score with base 1.11</th>\n <th>Cumulative · Scaled general happening score with base 1.11</th>\n <th>Cumulative · General happening score with base 1.12</th>\n <th>Cumulative · Scaled general happening score with base 1.12</th>\n <th>Cumulative · General happening score with base 1.13</th>\n <th>Cumulative · Scaled general happening score with base 1.13</th>\n <th>Cumulative · General happening score with base 1.14</th>\n <th>Cumulative · Scaled general happening score with base 1.14</th>\n <th>Cumulative · General happening score with base 1.15</th>\n <th>Cumulative · Scaled general happening score with base 1.15</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2016-12-01</th>\n <td>11.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n </tr>\n <tr>\n <th>2016-12-02</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n </tr>\n <tr>\n <th>2016-12-03</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n </tr>\n <tr>\n <th>2016-12-04</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n </tr>\n <tr>\n <th>2016-12-05</th>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.00
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"post.add_scores(df_deeprockgalactic)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:25.553507859Z",
"start_time": "2023-07-02T06:48:19.687095009Z"
}
},
"outputs": [
{
"data": {
"text/plain": " SteamDB · Peak concurrent players \\\n2020-12-25 2354.0 \n2020-12-26 2867.0 \n2020-12-27 2931.0 \n2020-12-28 2921.0 \n2020-12-29 2757.0 \n... ... \n2023-06-25 786.0 \n2023-06-26 780.0 \n2023-06-27 718.0 \n2023-06-28 696.0 \n2023-06-29 651.0 \n\n SteamDB · Day average of concurrent players \\\n2020-12-25 NaN \n2020-12-26 NaN \n2020-12-27 NaN \n2020-12-28 NaN \n2020-12-29 NaN \n... ... \n2023-06-25 613.0 \n2023-06-26 584.0 \n2023-06-27 580.0 \n2023-06-28 566.0 \n2023-06-29 566.0 \n\n SteamDB · Player count flags SteamDB · Steam \\\n2020-12-25 NaN 16.79 \n2020-12-26 NaN 16.79 \n2020-12-27 NaN 16.79 \n2020-12-28 NaN 16.79 \n2020-12-29 NaN 16.79 \n... ... ... \n2023-06-25 NaN 16.79 \n2023-06-26 NaN 16.79 \n2023-06-27 NaN 16.79 \n2023-06-28 NaN 16.79 \n2023-06-29 NaN 16.79 \n\n SteamDB · Price flags Google Trends · Score \\\n2020-12-25 NaN NaN \n2020-12-26 NaN NaN \n2020-12-27 NaN NaN \n2020-12-28 NaN NaN \n2020-12-29 NaN NaN \n... ... ... \n2023-06-25 NaN 0.57 \n2023-06-26 NaN 0.57 \n2023-06-27 NaN 0.57 \n2023-06-28 NaN 0.57 \n2023-06-29 NaN 0.57 \n\n Steam · Count of News tagged no_tags ITAD · Best Price \\\n2020-12-25 0.0 16.79 \n2020-12-26 0.0 16.79 \n2020-12-27 0.0 16.79 \n2020-12-28 0.0 16.79 \n2020-12-29 0.0 16.79 \n... ... ... \n2023-06-25 0.0 12.59 \n2023-06-26 0.0 12.59 \n2023-06-27 0.0 12.59 \n2023-06-28 0.0 12.59 \n2023-06-29 0.0 16.79 \n\n ITAD · Best Regular Price ITAD · Worst Regular Price ... \\\n2020-12-25 16.79 16.79 ... \n2020-12-26 16.79 16.79 ... \n2020-12-27 16.79 16.79 ... \n2020-12-28 16.79 16.79 ... \n2020-12-29
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>SteamDB · Peak concurrent players</th>\n <th>SteamDB · Day average of concurrent players</th>\n <th>SteamDB · Player count flags</th>\n <th>SteamDB · Steam</th>\n <th>SteamDB · Price flags</th>\n <th>Google Trends · Score</th>\n <th>Steam · Count of News tagged no_tags</th>\n <th>ITAD · Best Price</th>\n <th>ITAD · Best Regular Price</th>\n <th>ITAD · Worst Regular Price</th>\n <th>...</th>\n <th>Cumulative · General happening score with base 1.11</th>\n <th>Cumulative · Scaled general happening score with base 1.11</th>\n <th>Cumulative · General happening score with base 1.12</th>\n <th>Cumulative · Scaled general happening score with base 1.12</th>\n <th>Cumulative · General happening score with base 1.13</th>\n <th>Cumulative · Scaled general happening score with base 1.13</th>\n <th>Cumulative · General happening score with base 1.14</th>\n <th>Cumulative · Scaled general happening score with base 1.14</th>\n <th>Cumulative · General happening score with base 1.15</th>\n <th>Cumulative · Scaled general happening score with base 1.15</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2020-12-25</th>\n <td>2354.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>16.79</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>...</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2020-12-26</th>\n <td>2867.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>16.79</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>...</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2020-12-27</th>\n <td>2931.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>16.79</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>...</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2020-12-28</th>\n <td>2921.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>16.79</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>...</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2020-12-29</th>\n <td>2757.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>16.79</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>16.79</td>\n <td>...</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"post.add_scores(df_omori)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:29.471582492Z",
"start_time": "2023-07-02T06:48:25.552685620Z"
}
},
"outputs": [
{
"data": {
"text/plain": " SteamDB · Peak concurrent players \\\n2021-09-21 4202.0 \n2021-09-22 7046.0 \n2021-09-23 6694.0 \n2021-09-24 5837.0 \n2021-09-25 6301.0 \n... ... \n2023-06-26 497.0 \n2023-06-27 504.0 \n2023-06-28 457.0 \n2023-06-29 530.0 \n2023-06-30 719.0 \n\n SteamDB · Day average of concurrent players \\\n2021-09-21 NaN \n2021-09-22 NaN \n2021-09-23 NaN \n2021-09-24 NaN \n2021-09-25 NaN \n... ... \n2023-06-26 385.0 \n2023-06-27 387.0 \n2023-06-28 367.0 \n2023-06-29 395.0 \n2023-06-30 395.0 \n\n SteamDB · Player count flags SteamDB · Steam \\\n2021-09-21 NaN 11.24 \n2021-09-22 NaN 11.24 \n2021-09-23 NaN 11.24 \n2021-09-24 NaN 11.24 \n2021-09-25 NaN 11.24 \n... ... ... \n2023-06-26 NaN 12.49 \n2023-06-27 NaN 12.49 \n2023-06-28 NaN 12.49 \n2023-06-29 NaN 8.11 \n2023-06-30 NaN 8.11 \n\n SteamDB · Price flags Google Trends · Score \\\n2021-09-21 NaN NaN \n2021-09-22 NaN NaN \n2021-09-23 NaN NaN \n2021-09-24 NaN NaN \n2021-09-25 NaN NaN \n... ... ... \n2023-06-26 NaN 0.24 \n2023-06-27 NaN 0.24 \n2023-06-28 NaN 0.24 \n2023-06-29 NaN 0.24 \n2023-06-30 NaN 0.24 \n\n Steam · Count of News tagged workshop \\\n2021-09-21 0.0 \n2021-09-22 0.0 \n2021-09-23 0.0 \n2021-09-24 0.0 \n2021-09-25 0.0 \n... ... \n2023-06-26 0.0 \n2023-06-27 0.0 \n2023-06-28 0.0 \n2023-06-29 1.0 \n2023-06-30 0.0 \n\n Steam · Count of News tagged ModAct_1428110219_1685546438_0 \\\n2021-09-21 0.0 \n2021-09-22 0.0 \n2021-09-23 0.0 \n2021-09-24 0.0 \n2021-09-25 0.0 \n... ... \n2023-06-26 0.0
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>SteamDB · Peak concurrent players</th>\n <th>SteamDB · Day average of concurrent players</th>\n <th>SteamDB · Player count flags</th>\n <th>SteamDB · Steam</th>\n <th>SteamDB · Price flags</th>\n <th>Google Trends · Score</th>\n <th>Steam · Count of News tagged workshop</th>\n <th>Steam · Count of News tagged ModAct_1428110219_1685546438_0</th>\n <th>Steam · Count of News tagged mod_require_rereview</th>\n <th>Steam · Count of News tagged mod_reviewed</th>\n <th>...</th>\n <th>Cumulative · General happening score with base 1.11</th>\n <th>Cumulative · Scaled general happening score with base 1.11</th>\n <th>Cumulative · General happening score with base 1.12</th>\n <th>Cumulative · Scaled general happening score with base 1.12</th>\n <th>Cumulative · General happening score with base 1.13</th>\n <th>Cumulative · Scaled general happening score with base 1.13</th>\n <th>Cumulative · General happening score with base 1.14</th>\n <th>Cumulative · Scaled general happening score with base 1.14</th>\n <th>Cumulative · General happening score with base 1.15</th>\n <th>Cumulative · Scaled general happening score with base 1.15</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2021-09-21</th>\n <td>4202.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>11.24</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2021-09-22</th>\n <td>7046.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>11.24</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>1.000000</td>\n <td>NaN</td>\n <td>1.000000</td>\n <td>NaN</td>\n <td>1.000000</td>\n <td>NaN</td>\n <td>1.000000</td>\n <td>NaN</td>\n <td>1.000000</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2021-09-23</th>\n <td>6694.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>11.24</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.900901</td>\n <td>NaN</td>\n <td>0.892857</td>\n <td>NaN</td>\n <td>0.884956</td>\n <td>NaN</td>\n <td>0.877193</td>\n <td>NaN</td>\n <td>0.869565</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2021-09-24</th>\n <td>5837.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>11.24</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.811622</td>\n <td>NaN</td>\n <td>0.797194</td>\n <td>NaN</td>\n <td>0.783147</td>\n <td>NaN</td>\n <td>0.769468</td>\n <td>NaN</td>\n <td>0.756144</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2021-09-25</th>\n <td>6301.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>11.24</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>...</td>\n <td>0.731191</td>\n <td>NaN</td>\n <td>0.711780</td>\n <td>NaN</td>\n <td>0.693050</td>\n <td>NaN</td>\n <td>0.674972</td
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"post.add_scores(df_potioncraft)"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:35.044817636Z",
"start_time": "2023-07-02T06:48:29.470670375Z"
}
},
"outputs": [
{
"data": {
"text/plain": " SteamDB · Peak concurrent players \\\n2020-09-23 1788.0 \n2020-09-24 1951.0 \n2020-09-25 1692.0 \n2020-09-26 1649.0 \n2020-09-27 1406.0 \n... ... \n2023-06-25 753.0 \n2023-06-26 621.0 \n2023-06-27 603.0 \n2023-06-28 645.0 \n2023-06-29 630.0 \n\n SteamDB · Day average of concurrent players \\\n2020-09-23 NaN \n2020-09-24 NaN \n2020-09-25 NaN \n2020-09-26 NaN \n2020-09-27 NaN \n... ... \n2023-06-25 504.0 \n2023-06-26 414.0 \n2023-06-27 405.0 \n2023-06-28 394.0 \n2023-06-29 394.0 \n\n SteamDB · Player count flags SteamDB · Steam \\\n2020-09-23 NaN 0.00 \n2020-09-24 NaN 0.00 \n2020-09-25 NaN 0.00 \n2020-09-26 NaN 0.00 \n2020-09-27 NaN 0.00 \n... ... ... \n2023-06-25 NaN 8.39 \n2023-06-26 NaN 8.39 \n2023-06-27 NaN 8.39 \n2023-06-28 NaN 8.39 \n2023-06-29 NaN 8.39 \n\n SteamDB · Price flags Google Trends · Score \\\n2020-09-23 NaN NaN \n2020-09-24 NaN NaN \n2020-09-25 NaN NaN \n2020-09-26 NaN NaN \n2020-09-27 NaN NaN \n... ... ... \n2023-06-25 NaN 0.09 \n2023-06-26 NaN 0.09 \n2023-06-27 NaN 0.09 \n2023-06-28 NaN 0.09 \n2023-06-29 NaN 0.09 \n\n Steam · Count of News tagged no_tags \\\n2020-09-23 2.0 \n2020-09-24 0.0 \n2020-09-25 0.0 \n2020-09-26 0.0 \n2020-09-27 0.0 \n... ... \n2023-06-25 0.0 \n2023-06-26 0.0 \n2023-06-27 0.0 \n2023-06-28 0.0 \n2023-06-29 0.0 \n\n Steam · Count of News tagged patchnotes ITAD · Best Price \\\n2020-09-23 0.0 11.99 \n2020-09-24 0.0 11.99 \n2020-09-25 0.0 11.99 \n2020-09-26 0.0 11.99 \n2020-09-27 0.0 11.99 \n... ... ... \n2023-06-25 0.0 8.39 \n2023-06-26
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>SteamDB · Peak concurrent players</th>\n <th>SteamDB · Day average of concurrent players</th>\n <th>SteamDB · Player count flags</th>\n <th>SteamDB · Steam</th>\n <th>SteamDB · Price flags</th>\n <th>Google Trends · Score</th>\n <th>Steam · Count of News tagged no_tags</th>\n <th>Steam · Count of News tagged patchnotes</th>\n <th>ITAD · Best Price</th>\n <th>ITAD · Best Regular Price</th>\n <th>...</th>\n <th>Cumulative · General happening score with base 1.11</th>\n <th>Cumulative · Scaled general happening score with base 1.11</th>\n <th>Cumulative · General happening score with base 1.12</th>\n <th>Cumulative · Scaled general happening score with base 1.12</th>\n <th>Cumulative · General happening score with base 1.13</th>\n <th>Cumulative · Scaled general happening score with base 1.13</th>\n <th>Cumulative · General happening score with base 1.14</th>\n <th>Cumulative · Scaled general happening score with base 1.14</th>\n <th>Cumulative · General happening score with base 1.15</th>\n <th>Cumulative · Scaled general happening score with base 1.15</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>2020-09-23</th>\n <td>1788.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>2.0</td>\n <td>0.0</td>\n <td>11.99</td>\n <td>15.99</td>\n <td>...</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2020-09-24</th>\n <td>1951.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>11.99</td>\n <td>15.99</td>\n <td>...</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2020-09-25</th>\n <td>1692.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>11.99</td>\n <td>15.99</td>\n <td>...</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2020-09-26</th>\n <td>1649.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>11.99</td>\n <td>15.99</td>\n <td>...</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n </tr>\n <tr>\n <th>2020-09-27</th>\n <td>1406.0</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.00</td>\n <td>NaN</td>\n <td>NaN</td>\n <td>0.0</td>\n <td>0.0</td>\n <td>11.99</td>\n <td>15.99</td>\n <td>...</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n <td>NaN</td>\n <td>0.000000</td>\n
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"post.add_scores(df_untitledgoosegame)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si osserva che il numero di giocatori concorrenti tende a diminuire rapidamente in presenza di un picco; pertanto, si utilizza una funzione esponenziale decrescente come base di partenza."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si definisce la funzione ricorsivamente nel seguente modo, cosicchè raggiunga il suo massimo in corrispondenza di ogni annuncio o sconto:\n",
"\n",
"$$\n",
"x_{n+1} =\n",
"\\begin{cases}\n",
"\\begin{matrix}\n",
"1 & \\mathrm{in\\ corrispondenza\\ di\\ un\\ annuncio}\n",
"\\\\\n",
"\\\\\n",
"1 & \\mathrm{in\\ corrispondenza\\ di\\ uno\\ sconto}\n",
"\\\\\n",
"\\\\\n",
"\\frac{x_n}{base} & \\mathrm{in\\ assenza\\ di\\ un\\ avvenimento}\n",
"\\\\\n",
"\\\\\n",
"0 & \\mathrm{inizialmente}\n",
"\\end{matrix}\n",
"\\end{cases}\n",
"$$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In Python, essa è definita così:\n",
"\n",
"```python\n",
"score = pd.Series(dtype=float)\n",
"prev_date = None\n",
"for date, value in dataframe[\"Cumulative · Is something happening?\"].items():\n",
" if not prev_date:\n",
" score[date] = 0\n",
" elif value:\n",
" score[date] = 1\n",
" else:\n",
" score[date] = score[prev_date] / base\n",
" prev_date = date\n",
"dataframe[f\"Cumulative · General happening score with base {base}\"] = score\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si crea un grafico illustrativo per mostrare l'andamento della funzione (con una `base` arbitraria):"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:35.058328983Z",
"start_time": "2023-07-02T06:48:35.045570976Z"
}
},
"outputs": [],
"source": [
"def plot_general_score_base_11(name: str, df: pd.DataFrame) -> so.Plot:\n",
" return (\n",
" so.Plot(\n",
" data=df.reset_index(names=\"Date\"),\n",
" x=\"Date\",\n",
" y=\"Cumulative · General happening score with base 1.1\",\n",
" )\n",
" .add(\n",
" so.Area(\n",
" alpha=0.6,\n",
" )\n",
" )\n",
" .scale(\n",
" x=so.Temporal()\n",
" .tick(locator=mpld.YearLocator()),\n",
" y=so.Continuous()\n",
" .tick(locator=tick.AutoLocator()),\n",
" )\n",
" .label(\n",
" title=f\"Score base 1.1 over time for {name}\",\n",
" )\n",
" .theme(theme)\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:35.409224354Z",
"start_time": "2023-07-02T06:48:35.061082877Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAD0oklEQVR4nOy9ebRcVZn3/937nKp7b0YSIGGQjgjKYIhTK9iv0mgUcGJQu50HVLCdaFmIID9QsLUDTq8DrY3gUnD5YhQEHLq1BUVttEFtMUQBIyAShoSQ6eZONZ3fH6fOqeGeuc7etU+d72ctFrlDVe1btc9z9jN9H+E4jgNCCCGEEEIIIYQUDjnsBRBCCCGEEEIIISQbdOoJIYQQQgghhJCCQqeeEEIIIYQQQggpKHTqCSGEEEIIIYSQgkKnnhBCCCGEEEIIKSh06gkhhBSK733vezj55JNx8skn48QTT8Sll16qfQ3f+c53cN5552l9zd/+9rd49atfjdWrV+MLX/hC6O/95S9/wetf/3o8/elP177GKL72ta9h9+7d/tef+9zncPPNNyt7vXPOOQcvf/nL8bGPfWyg55mZmcHFF1+MtWvX4vjjj8eb3vQm/OEPf/B/ft555+Hwww/HQw895H/vt7/9LQ477LCez+lXv/oVXvWqV+HEE0/Ei1/8Ynz2s59Fs9kEAGzevBmrV6/GySefjJe//OV43etehz//+c/+Y9/0pjfhtttuG+jvIIQQMrrYw14AIYQQkpQtW7bgk5/8JK6//nrsvffeaDab2LRpUy7P3Wg0YNvm3hb3228/XHzxxfiv//qvyN9bsmQJzjnnHNx99934/e9/r2l1vQS9l1dffTVe9KIXYcmSJQCAf/7nf1b2+tu2bcMvf/lL3HrrrakeF7TuD3/4wxBC4Ic//CEqlQpuueUWvOMd78APfvADLF++HABwxBFH4MYbb8S73/1uAMANN9yApz71qf5z3HvvvTjrrLNw+eWX42lPexqmpqbwvve9D1/4whfw/ve/HwCwYsUK3HjjjQCAT3/601i3bh2+8pWvZH0LCCGElAhzTy+EEEJIH48//jiq1SoWL14MALAsC4cffrj/8x/96Ef40pe+hFarhWq1iq9+9atYvHgxLrvsMvznf/4nhBA45phjcN5558G2bZx33nmoVqv405/+hIULF+LKK6/EZZddhp/97Geo1Wp4+tOfjg9/+MOBzv6OHTvw9re/HQ8//DCe9KQn4ZJLLsHixYvx3//93/j85z+PWq0Gy7Jw0UUX4aijjsLMzAw+8IEP4MEHH4TjODj22GNxzjnnYG5uDp/4xCfw+9//HrVaDWvXrg10eA888EAceOCB+MlPfhL5Hi1fvhzLly/H/fffH/t+Br0vjzzyCN7ylrfg5ptvhhACAHDCCSfgi1/8Ip70pCeFvj9vetObcOSRR+J///d/ceihh2LdunX+63z5y1/G1q1bccYZZ6BSqeBrX/saLr30UjznOc/BK1/5Spx33nmYmJjApk2bsHnzZpx22mlYsGAB1q9fj927d+PSSy/FM57xDADANddcg2uvvRbNZhOrVq3Cxz/+cSxatMh/rVqthje/+c3YtWsXTj75ZJx22ml40YtehI985CP405/+BAB4y1vegle/+tUAgBe+8IV4+ctfjltvvRXPe97zcNZZZ/nP9eCDD+Kmm27Cz3/+c1QqFQDAcccdh7/7u7/DN77xDbzvfe8DALz85S/H9ddfj3e/+92Ym5vD7bffjhNPPNF/niuuuAKvec1r8LSnPQ0AsHDhQnz4wx/GSSedhHe9613zPpe//du/VVrFQAghZLRg+T0hhJDCcPjhh+OQQw7Bcccdh/e///34f//v/2F6ehqAmw1dt24dvvSlL+G73/0uvva1r2F8fBw/+clP8JOf/ATXXnstbrzxRmzevBnr16/3n/Pee+/F1Vdfja985Su4/vrrMT09jW9/+9v47ne/CwC49tprA9fy61//Gh/96Efxn//5n9hvv/3wxS9+EQBw1FFH4Zvf/CZuuOEGXHTRRbjooosAAL/4xS+w995747vf/S6+973v4YwzzgDgOrxPfOITce211+L666/Hxo0b8Ytf/ELVW+gT9r4cdNBBWLlyJX7zm98AAH7/+99j4cKFOOSQQ2Lfn61bt2L9+vU9Dj0AnHHGGVixYgW+/OUv48Ybb8SyZcvmreevf/0rvva1r+Fb3/oWPvvZz2LHjh249tpr/Yw2ANx22224/fbbsX79etxwww048sgjcfnll/c8T7VaxZe//GU/833KKafgsssuw+LFi/G9730PV111Fb74xS/innvu8R/TaDRw3XXX9Tj0ALBp0yasWrXKDyJ5HHXUUX6AAACWLVuGgw46CHfccQduvvlmHHvssT2BoD/96U846qijep7jiU98IqrVKv7yl7/0fN9xHNxyyy09QQFCCCEkCmbqCSGEFAYpJS6//HLcfffduO2223DDDTfgmmuuwXXXXYdf/epXeNGLXoT9998fAPzs7W233YaTTjoJExMTAIBXv/rVuPHGG/GGN7wBAPCSl7wE1WoVAHDLLbfgrrvuwi9/+UsAwOzsLBYuXBi4luc+97k48MADAQD/8A//gA996EMA3NLvc845Bw8//DAsy8J9990HwA1IfOpTn8Kll16KY445Bs973vP815yZmfGd4+npadx///14/vOfn++b10fU+3LyySfju9/9Lp797Gfju9/9Lk466SR/rVHvz0knnQQps+ULXvziF8O2baxYsQJLlizBi170IgDAU5/6VHz+85/3X/93v/sdXvWqVwEA6vU6DjvssER/67/+678CcCsZ1q5di9tvv91/7CmnnJJpzd2ceuqpuOGGG/DQQw/hrLPOSp1p37p1K04++WQ89thjqFQq+M53vjPwmgghhJQDOvWEEEIKx+GHH47DDz8cr3vd6/B3f/d3A/XVL1iwoOfrs88+e6As6UUXXYRXvvKVOPXUU7Fnzx4861nPAgD8zd/8Da677jrceuutuOGGG/zqAMdxcOmll87L5A6Tl770pbjsssswPT2NH/3oR7jhhhv8n0W9P/3vZRq8wArgtlV4X1uW5QvKAa5o3Nvf/vbMrxNE2Lqf/OQn44EHHsDk5GRPtv7OO+/EU57ylJ7fPe644/CJT3wCixYtwpFHHtnj1D/lKU/BnXfe6QcqAFfQsFarYdWqVdi2bZtfWVCv13Heeefh4osv9oMZhBBCSBQsvyeEEFIYtmzZ0iP+dv/996Ner2PlypV47nOfi5tuugmPPPIIAGDPnj2o1+s45phj8P3vfx+zs7NoNpu47rrrcMwxxwQ+/3HHHYdvfOMbfkn/zp078eCDDwb+7v/8z//g4YcfBoCe59yzZ49fLdBd5v/oo4/Ctm2ceOKJOO+887BhwwYAwAte8AJ87WtfQ6PR8P/Gxx57LPN7lJSo92XJkiV45jOfiX/5l3/BEUccgX322QdAuvenn4ULF2LPnj0Drfnv//7v8Z3vfAfbt28H4FY13HvvvbGPO+aYY/Dtb38bgKuFcPPNN+M5z3lO7OMOOuggvPCFL8THPvYx1Ot1AG61wK233upXenhUq1Wce+65OPfcc+c9zzve8Q6sX7/e37tTU1P46Ec/itNOOw3j4+M9v1upVHDBBRfgl7/8ZU+LACGEEBIGM/WEEEIKQ6PRwGc/+1k8/PDDGB8fhxACl156KfbZZx/ss88+OO+88/DOd74TADA+Po6vfOUreMELXoA//OEPvjDaMcccg9e85jWBz//KV74SW7du9X9eqVRw/vnn46CDDpr3u3/7t3+LD3/4w3jooYdw8MEH+6P13v/+9+OCCy7A4sWLezLa99xzDz796U9DCIFWq4ULL7wQAPDOd74Tn/70p3HqqacCACYmJrBu3Trsu+++Pa93991344wzzvAd429/+9v493//dxx55JH43Oc+hxUrVuB1r3sddu3ahVe84hWYnZ1FrVbDL3/5S3zkIx/B2rVre54v7n056aST8J73vAef+tSnMr0//bzhDW/AP//zP2N8fBxf+9rXYn8/iGOOOQa
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_general_score_base_11(\"OMORI\", df_omori).show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I picchi del numero dei giocatori concorrenti non raggiungono sempre lo stesso valore, però."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ricordandocisi della vaga correlazione tra trend di ricerca e numero di giocatori, si utilizzano i valori a bassa risoluzione forniti da Google Trends per scalare i picchi:\n",
"\n",
"```python\n",
"dataframe[f\"Cumulative · Scaled general happening score with base {base}\"] = dataframe[f\"Cumulative · General happening score with base {base}\"] * dataframe[\"Google Trends · Score\"]\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La funzione (ancora con `base` arbitraria) diventa quindi così:"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:35.446591229Z",
"start_time": "2023-07-02T06:48:35.412284190Z"
}
},
"outputs": [],
"source": [
"def plot_scaled_score_base_11(name: str, df: pd.DataFrame) -> so.Plot:\n",
" return (\n",
" so.Plot(\n",
" data=df.reset_index(names=\"Date\"),\n",
" x=\"Date\",\n",
" y=\"Cumulative · Scaled general happening score with base 1.1\",\n",
" )\n",
" .add(\n",
" so.Area(\n",
" alpha=0.6,\n",
" )\n",
" )\n",
" .scale(\n",
" x=so.Temporal()\n",
" .tick(locator=mpld.YearLocator()),\n",
" y=so.Continuous()\n",
" .tick(locator=tick.AutoLocator()),\n",
" )\n",
" .label(\n",
" title=f\"Scaled score base 1.1 over time for {name}\",\n",
" )\n",
" .theme(theme)\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:35.769203967Z",
"start_time": "2023-07-02T06:48:35.427639299Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAADYWElEQVR4nOzdeZwcVbk//k9t3T1bNiABIwIXLotCiHpN4KciJMgmgRAV9YJ8r77EBQFBBBSJet0AwRVFFL1KANlk8aJeuQoIyJXFBQPIJgZISDJZJrPP9Hp+f1RXdXVPVXXtXd39eb9eviST6e6Tmerq85zznOeRhBACRERERERERNR25FYPgIiIiIiIiIiCYVBPRERERERE1KYY1BMRERERERG1KQb1RERERERERG2KQT0RERERERFRm2JQT0REibjrrrtw4okn4sQTT8QxxxyDyy67LPBzvf/978cjjzzi6zGPPPII3v/+9wd+zTh9+tOfxu23357oa/7sZz/DMcccg/3339/1Z/nb3/4WJ5xwAl772tcmPkYno6Oj+OlPf1r3tdNPPx2Dg4OxvN7Q0BBOPvlkrFy5EnfeeWeo51q/fj0++tGP4u1vfzuWL1+O8847D0NDQ+bfL1u2DEceeWTdY77//e9jv/32q/s9rVmzBscccwyOPfZYrFixAr/61a/Mv7v99tuxZMkS8712zjnnYGJiwvz7/fbbL9S/gYiI0oVBPRERxW5wcBCXX345/uu//gu/+MUv8Ktf/Qonnnhiq4cVq1Kp1OohuHr961+Pq6++Gm9605tcv+9f/uVf8PWvfx3HH398QiObqfFnOTo6ijVr1tR97ZprrsGCBQtief2HH34Yr3rVq3DnnXdi5cqVnh/XOO5CoYAPfvCDOPzww/Hb3/4Wv/vd77Bw4UKcddZZdd83MDCAP/3pT+aff/3rX2Pfffc1/3zrrbfitttuw/XXX4//+Z//wZVXXokrrrgCf/zjH83vWbZsGX7xi1/grrvuwtatW3HDDTf4/FcTEVG7YFBPRESx2759OzKZDAYGBgAAiqJg//33N//+7rvvxsqVK3HCCSfgXe96F8bGxjA4OIhTTz0VJ510Et7xjnfgjjvusH3uTZs24WMf+xje+c53YuXKlfjtb39r/t1Pf/pTvP3tb8eqVatw33332T6+Uqlg9erVeMc73oEVK1bgU5/6FABACIHvfOc7WLFiBU444QScd955AIDx8XGcd955WLFiBVasWIGf//zn5nMtW7YM3/jGN/DOd74TV155JUZGRvCpT30K73rXu3DCCSfgxhtvdPwZ/e1vf8PJJ5+Mo446Cl//+tfNr//whz/EO9/5TqxYsQKnn366uav7wgsv4D3veQ9WrlyJd7zjHbj77rub/jysDjjgAOy5556O4zHsvffe+Nd//VfIsvuUwennctttt+GCCy4wv2/z5s047LDDUC6XXX8+++23H7773e9i1apVuPnmm+te68tf/jK2bNmCE088ER//+McB6D/7DRs2mP/97W9/G+9+97uxfPlyPPLII/jyl7+MFStW4D3veY/5M8zn8/jSl75kvv63v/3tGf+uv/zlL/ja176G//u//8OJJ56If/zjH3jhhRdw6qmnYsWKFXj3u9+Nv/3tbwCADRs24PDDD8d//ud/4sQTT8T9999f91y//OUvsdNOO+G9730vAECSJJx99tnYuHFj3S78ypUr8Ytf/AIA8Ne//hV77LEH5syZY/7997//fVxwwQXYeeedAQB77rknPvaxj+Gqq66aMX5N07B48WJs3LjR8XdHRETtTW31AIiIqPPtv//+2HvvvXH44YdjyZIlWLJkCVauXIne3l688MILuOSSS3DjjTdit912w/j4OLLZLDRNwzXXXIOenh6Mjo5i1apVOOKII+qCGwD4zGc+gwsvvBAHHHAARkZG8M53vhNLlizBpk2bsGbNGtx+++2YNWsWzjzzTNuxPf3009i4caOZvjwyMgIA+PnPf46//vWvuPXWW5HL5bBjxw4AwHe/+10MDAzgrrvuwtDQEN71rnfhoIMOMlOaS6USbrvtNgB6Wv1xxx2HZcuWIZ/P4z3veQ+WLFmCvffee8Y4/v73v+P6668HAJxyyim47777cMQRR+Dd7343PvzhDwMAfvzjH+Oaa67BhRdeiBtvvBHvf//7cfzxx0MIgfHxcdefx+zZs8P8Cpty+rkcffTRuOKKKzA1NYWenh7893//N97xjndAURRccsklrj+fuXPn2qb8X3zxxTjttNPMwNeOpmm49dZb8Zvf/AYf/ehHcc011+Diiy/G6tWrccstt+CjH/0ofvjDH2LPPffE6tWrUS6X8dGPfhQPPvgg3vrWt5rP84Y3vAFnn302Hn30UVx66aUAgFWrVuFDH/oQjjvuOPz1r3/FOeecU7eocvjhh+Pzn//8jDE999xzWLRoUd3XVFXFAQccgOeeew5Lly4FALztbW/DDTfcgHw+b2YHXHvttQD0xZNXXnllxvMcdNBBdYtBhomJCTz22GM455xzHH9WRETU3hjUExFR7GRZxg9+8AM888wzeOSRR3DnnXfixhtvxG233YY//vGPOPLII7HbbrsBAPr7+wHou6hf+cpX8OSTT0KSJGzfvh0vvvgiFi9ebD7vxMQE/vSnP+HTn/60+bVSqYSXX34Zf/nLX3DkkUeaiwCrVq0yAyOr3XffHRs3bsQXv/hFLF26FG9729sAAA8++CDe9773IZfLAdADTEA/m//Vr34VADBv3jwsX74cjz76qBnUW9Ozf//73+Ppp582d4DHxsbwz3/+0zaoP/7445HNZgEAK1aswMMPP4wjjjgCf/3rX/HDH/4Q4+PjyOfzeM1rXgNADza///3vY/369XjLW96Cgw46yPXncdBBB3n5VQXm9HN5//vfj0MPPRS/+93vsGLFCtx111342te+5unn4yfVvdExxxwDAHjta1+Lvr4+/Nu//RsA4HWvex2eeOIJ8/WnpqbMrILJyUmsW7euLqhvND4+jvXr1+O4444DoB9jmDVrFtatW4e+vj7MmTPHvIaCUlUVhx12GP7nf/4HDz/8MC6++GLba9fNvffeixNPPBEvv/wy3vjGN+KQQw4JNSYiIkovBvVERJSY/fffH/vvvz/e97734f/7//4/PP/8847f+9Of/hSKouCOO+6AqqpYtWoV8vl83fcIIaBpGu68805IklT3d3/5y188jWnWrFm444478Mc//hG///3vceWVV7ruADfT29tbN76f/OQnmDdvXqDnKhQKuPDCC3HzzTfjX/7lX3DvvffiJz/5CQDguOOOw+LFi/GHP/wBX/ziF3HkkUfilFNOcfx5tNKJJ56I66+/Hv/6r/8KQE/9B5r/fPr6+gK/ZiaTAaAvKBn/DehHP8rlsvn6l112WaQLHm5j3nfffXHLLbfUfa1UKuHpp5/G//t//6/u6yeeeCI+9KEP4fjjj4emaebX+/v7sXDhQqxduxZvfvObza8/8cQTdefuly1bhksvvRRDQ0M45ZRTcOONN+KUU04J+88jIqIU4pl6IiKK3eDgoHnuGADWrVuHYrGIBQsWmLu4mzZtAqDvhBaLRYyNjWH+/PlQVRV/+9vf8Mwzz8x43v7+fhx44IH42c9+Zn7tqaeeghACS5cuxb333ouRkRFUKhXHQH1oaAiFQgFHHHEEPvOZz2BwcBATExN461vfihtvvBHT09MAYKbfH3LIIbj11lvNr91zzz1YsmSJ7XMfccQR+PGPfwwhBADgxRdfNNPkG/36179GPp9HPp/Hr371KxxyyCHI5/OoVCqYP38+yuVy3fn9l156CbvtthtOPvlknHbaaVi7dq3rzyNubj+Xt7zlLXj22WfxX//1XzjhhBPMx/j5+Vj19/djYmIi9L/riCOOwE9/+lOzoN3g4CC2bt3a9LV33313/OY3vwGg10IYHR3FXnvt1fT1jj/+eGzbtg033XQTAH1R4corr8Suu+5qpt4bDjroIJxxxhk47bTTZjzPRz/6UVx++eXYtm0bAP3n9v3vfx8f/ehHZ3zvvHnzcPHFF+P
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_scaled_score_base_11(\"OMORI\", df_omori).show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Infine, si vuole determinare il valore per il parametro `base` che porta a correlazione maggiore con l'altra funzione."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Per evitare overfitting, data la relativamente scarsa quantità di dati a disposizione in questo notebook, e mantenere il codice semplice, si selezionano alcuni valori arbitrari e si calcolano i valori della funzione per essi, per poi confrontare i risultati ottenuti e selezionare quello con correlazione media maggiore sui quattro dataset.\n",
"\n",
"```python\n",
"# Si potrebbe ottimizzare con il metodo dicotomico, ma computando tutti i valori è possibile ottenere visualizzazioni migliori per il notebook\n",
"for base in [1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.1, 1.11, 1.12, 1.13, 1.14, 1.15]:\n",
" ...\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:36.330694424Z",
"start_time": "2023-07-02T06:48:35.773236044Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.01 → [0.8084812052361016, 0.22934744945493743, 0.6930843067988692, 0.14429448594068775] / 4 = 0.468801861857649\n",
"1.02 → [0.8149913743149819, 0.3213535609988236, 0.7042728453913346, 0.20773383320907401] / 4 = 0.5120879034785535\n",
"1.03 → [0.8165921749603406, 0.3610838107532645, 0.7116315932495408, 0.24446846951015075] / 4 = 0.5334440121183242\n",
"1.04 → [0.814480727191963, 0.37982813123145465, 0.7166506116254473, 0.2679859618840274] / 4 = 0.5447363579832231\n",
"1.05 → [0.8096650718457554, 0.3880384553231019, 0.7200659141569041, 0.2840477238248766] / 4 = 0.5504542912876594\n",
"1.06 → [0.8029531780197479, 0.3904114888546096, 0.7222852684904505, 0.29545345059913236] / 4 = 0.5527758464909851\n",
"1.07 → [0.794968935771353, 0.3893917527485946, 0.7235610714979362, 0.3037358754479714] / 4 = 0.5529144088664638\n",
"1.08 → [0.7861803665613096, 0.3863571158594142, 0.7240656730716245, 0.30981234003319114] / 4 = 0.5516038738813849\n",
"1.09 → [0.7769304482630098, 0.38212372604403716, 0.7239265140033933, 0.31426871939897816] / 4 = 0.5493123519273546\n",
"1.1 → [0.7674654749952876, 0.3771919541071581, 0.7232435756803064, 0.31749807372538025] / 4 = 0.5463497696270331\n",
"1.11 → [0.757958906079431, 0.3718764072938173, 0.7220985747634786, 0.3197747325203582] / 4 = 0.5429271551642713\n",
"1.12 → [0.7485303651873124, 0.36637854086805755, 0.7205601105559741, 0.32129663266837816] / 4 = 0.5391914123199306\n",
"1.13 → [0.7392602562243262, 0.36082890541735047, 0.7186867423729263, 0.3222107607050731] / 4 = 0.535246666179919\n",
"1.14 → [0.7302007461414266, 0.3553125525455641, 0.7165289657008873, 0.32262904986812396] / 4 = 0.5311678285640005\n",
"1.15 → [0.7213838846644646, 0.34988474646518725, 0.7141305777298503, 0.3226386361469309] / 4 = 0.5270094612516083\n"
]
}
],
"source": [
"def get_mean_corr(v: float):\n",
" print(f\"{v} → \", end=\"\")\n",
" m = list(map(\n",
" lambda df: df.corr()[\"SteamDB · Relative concurrent players\"][f\"Cumulative · Scaled general happening score with base {base}\"],\n",
" [df_deeprockgalactic, df_omori, df_potioncraft, df_untitledgoosegame]\n",
" ))\n",
" print(f\"{m} / 4 = \", end=\"\")\n",
" print(f\"{sum(m) / 4}\")\n",
"\n",
"for base in [1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09, 1.1, 1.11, 1.12, 1.13, 1.14, 1.15]:\n",
" get_mean_corr(base)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La base che massimizza la correlazione tra tutti i dataset è `1.07`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si mettono a confronto graficamente tre di queste funzioni, e la funzione \"bersaglio\":"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:36.346646149Z",
"start_time": "2023-07-02T06:48:36.333124031Z"
}
},
"outputs": [],
"source": [
"def plot_functions_overlap(name: str, df: pd.DataFrame) -> so.Plot:\n",
" return (\n",
" so.Plot(\n",
" data=df.reset_index(names=\"Date\")[[\n",
" \"Date\",\n",
" \"SteamDB · Relative concurrent players\",\n",
" \"Cumulative · Scaled general happening score with base 1.02\",\n",
" \"Cumulative · Scaled general happening score with base 1.07\",\n",
" \"Cumulative · Scaled general happening score with base 1.15\",\n",
" ]].melt(\n",
" id_vars=[\"Date\"],\n",
" value_vars=[\n",
" \"SteamDB · Relative concurrent players\",\n",
" \"Cumulative · Scaled general happening score with base 1.02\",\n",
" \"Cumulative · Scaled general happening score with base 1.07\",\n",
" \"Cumulative · Scaled general happening score with base 1.15\",\n",
" ],\n",
" var_name=\"Function\",\n",
" value_name=\"·\"\n",
" ),\n",
" x=\"Date\",\n",
" y=\"·\",\n",
" color=\"Function\",\n",
" )\n",
" .add(\n",
" so.Area(\n",
" alpha=0.2\n",
" )\n",
" )\n",
" .scale(\n",
" x=so.Temporal()\n",
" .tick(locator=mpld.YearLocator()),\n",
" y=so.Continuous()\n",
" .tick(locator=tick.AutoLocator()),\n",
" )\n",
" .label(\n",
" title=f\"Comparision of functions {name}\",\n",
" )\n",
" .theme(theme)\n",
" )\n"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:37.347128674Z",
"start_time": "2023-07-02T06:48:36.349235475Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdeXxTVfrH8U+SbkCBskhlk31RBBUURYQRcUEQYVBxRXFEBcRtHAUURBgQEFdAQXFhwBUQUQfQUdwVUVRkkU3Any3QskP3JPee3x9pQtOmaYHUpvB9v14Obe7NvSf3nnb63POc5ziMMQYRERERERERqXCc5d0AERERERERETk6CupFREREREREKigF9SIiIiIiIiIVlIJ6ERERERERkQpKQb2IiIiIiIhIBaWgXkREIsrtdjN58mQuueQS+vTpQ79+/Zg9e3Z5N6uI5557jmXLlhW7PT09ndtvv/0vactPP/3EFVdcQd++ffn999+Dtm3bto2+ffvSt29fvvvuu4ied8WKFaxYsSLw/Zo1a3jkkUcieo5QWrVqRZ8+fbjiiiu47LLLeOyxx9i3b1+Znxdg4cKFdOzYkT59+tCjRw/uu+8+srKyjvp4rVq1KtV+mzZt4o477uCiiy6iX79+XH311cyfP7/E940YMYKFCxceVdtSU1OLvLdPnz5HdSwREYleMeXdABEROb489NBDAHzwwQdUqlSJ3Nxc3nvvvXJuVTCv18u9994bdp/k5GRmzZr1l7Tngw8+4IYbbuCGG24osu2TTz6hc+fOPPjggxE/7w8//ADAueeeC0Dbtm1p27ZtxM8Tyvvvvw9Abm4uTzzxBLfccgvvvfceMTFl/6fJRRddxKRJk/B4PAwcOJA33niDO+64o8zOt3PnTm6++WYeffRRevbsCfgeGh1tsF5a27dv57333qNfv36B1/zXXUREjh8K6kVEJGK2bdvGF198wVdffUWlSpUASEhI4PrrrwcgMzOTMWPGsGnTJgBuueUWrr76asAXaPXp04dvvvmGffv28fjjj/PJJ5+wYsUKKleuzIwZM6hZsybTpk3j//7v/9i5cyd79uyhQ4cOPPbYY8TFxbFo0SJef/11vF4vVapUYeLEiZxyyimkpqZy00030a1bN37++WfuuecePvnkEzp27Ei/fv146623eOONN3A6nbhcLt544w327dvHzTffzGeffQbAvHnzmDNnDg6Hg9atWzNmzBgSExOZNm0aqamp7N69m9TUVDp06MDEiROLXBuPx8OkSZMCI+O9evViyJAhzJkzh6VLl/Lll1/ywQcf8Pbbbwfe89FHH/Gf//wHgG+++Ya5c+dyzjnnsHHjRsA3EutvY2pqKgMGDODSSy9l+fLlOBwOpk6dSqNGjTDGMG3aND755BMcDgctWrRgyJAhgXN9+umn3HzzzTRo0IDp06czd+5cAKZPn87SpUtxOBycd955jBgxgpiYGEaMGEGVKlXYuHEjaWlp9O7dm3vvvRfbthkzZgw///wzTqeTVq1a8eSTT4btMwkJCTz88MNceumlfP3113Tr1o3Nmzfz+OOPc/DgQZxOJyNGjODss88G4K233mLBggVYlkWjRo2YMGECiYmJjBgxgvj4eNavX8+BAwe47LLLeOCBB8KeOzY2ljPPPJMdO3aU2D83btzI+PHjOXjwIACPPvpooE3gy1B58MEHOeWUU4qc98033+SCCy4IBPTge2g0ZMiQwHvvvPNODh48SG5uLn379g35kKG4/g3w8ccfM2PGDGzbJi4ujtdee43x48eTmppKnz59aN++PWPGjKFVq1aB/vPDDz8wZcoU8vLycLlcPPPMMzRu3DjsNRMRkShkREREImTx4sXmyiuvLHb7xIkTzZgxY4wxxuzdu9d069bNbNiwwRhjTLdu3czzzz9vjDFm6dKl5swzzzQ//vijMcaYUaNGmRkzZhhjjJk6darp1q2b2b9/v7EsywwZMsTMnTvXGGPMvn37AudaunSpufvuu40xxqSkpJiWLVuaL774IrB9+PDh5t133zXGGNO1a1eTk5NjjDEmIyPDeL1ek5KSYrp162aMMWb9+vWmW7duZu/evcYYYx599FEzefLkQHuuuOIKk5mZadxut+nVq5f56aefinz2OXPmmDvvvNN4vV6TnZ1t/v73vwfaU7AthU2dOtVMnTo18H3Lli0DXxdso/8zfv/998YYY2bOnGlGjRpljDFm3rx5ZuDAgYHP6L9OhY/9/fffm5tuuskYY8yyZcvM3//+d5OdnW28Xq+58847zeuvvx5o76233mrcbrfJyMgw5513nklLSzNr1641//jHPwLHO3DgQMjPVPAz+A0ZMsS8+OKLxuPxmKuuusps37496DPatm2+//57c9999xmPxxP4jE8++WSgTVdffbXJzc01ubm55qqrrjKfffZZkfO8++67Zvjw4cYYYzIzM80111xjvv32W2NM8f3T7Xabiy++2Hz99dfGGGM8Ho85dOhQ4LNkZGSYW265xbz22mshP++gQYOK3WaMMZZlBa5VXl6e+fvf/242bdoU+Fz+vlFc//7999/N3/72N7Njxw5jjK8Pu93uoPvp57/2+/btM507dzbr1683xhiTm5trsrKyim2jiIhEL43Ui4jIX2bFihU8/vjjANSsWZPu3bvzww8/BOYl9+jRA4DTTjuNKlWqBEZC27Rpw5o1awLHufjii0lKSgKgX79+LFq0iJtuuolt27Zxzz33sH//fmzbxrbtwHuSkpL429/+FrJdp556Kg899BBdunShW7duJCYmBm3/4Ycf6N69OzVr1gTguuuuC5p7/re//Y0qVaoEjpWSkkL79u2LfParr74al8tFpUqVuPLKK1m+fHmxbToatWvXDqTSt2vXjuXLlwPw9ddfc/3115OQkABAjRo1SjzWihUruPLKKwMZF1dffTXvv/8+N954IwCXXHIJsbGxxMbG0qRJE1JSUmjZsiU7duxg3LhxnHvuuUf02YwxOBwOtm3bxpYtWwKj2ODLcti7dy9ffPEFv/zyC1dddVXg9YJz2q+44gri4+MB6N27N99//z3dunUrcq7PPvuMPn368Oeff9KhQwfOO++8wGcO1T8dDgcJCQlccMEFAMTExFC1atXA8QYMGMCAAQOC0tzDGTt2LD///DN79uzh22+/xbZtXnjhBZYvX44xhvT0dDZt2kSLFi2C3ldc/16+fDkXX3wxdevWBSjSf0NZtWoVp59+Oq1btwYIXDcREal4FNSLiEjEnHrqqfz5559kZGQEBT2lFRcXB4DT6Qx8DeByubAsq8T3/+tf/2LSpEl07NiRjRs3BgWG/qA7lBdeeIFVq1bx3XffcdVVV/Gf//zniOZ2FwyIStvWo+VyubBtG6fTSV5eXrHtcDqdZdqOUJ+5WrVqvPfeeyxfvpwvvviCadOm8f777+NyucIey+v1snHjRq699lqMMdSvX7/Yud8DBgzgtttuO6a2++fU79u3jxtvvJG33nor8LDiaJxzzjl88cUXXHnllSH7TevWrVm3bl3g+zFjxgCHi+x9+OGHbN26lXnz5pGQkMDdd99d5N5C+P4tIiInLlW/FxGRiGnSpAldunThscceIycnB4C8vLzA3O3zzjsvUPF7//79LFu2jI4dOx7xeZYtW8bBgwexbZtFixYFRlozMzMDo5Xz5s0r1bG8Xi/bt2+nffv2DBs2jObNmxepQN+xY0eWLVvG/v37AZg/f37gnKV13nnn8e6772JZFjk5OXz44Yd06tTpiI4B0LBhw0DWwtKlS0v1ni5duvDWW2+Rm5sLEPgciYmJZGZmFtve//73v+Tm5mJZFu+++26Jn3nfvn243W66devGyJEjSU9PL7GyfF5eHpMmTaJKlSpccMEFNGnSBI/HwxdffBHYZ+3atYAvI2LhwoWBSvnZ2dls2bIlsN+SJUvIy8sjLy+PxYsXl9jemjVrMmrUKGbOnInb7S62fzZp0oTc3Fy++eYbACzLIiMjI3Cchx9+mLp16/LPf/4Tr9db5DzXX389X331FR999FHgNf/PB0BGRgY1a9Y
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_functions_overlap(\"Deep Rock Galactic\", df_deeprockgalactic).show()"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:37.934465473Z",
"start_time": "2023-07-02T06:48:37.346718837Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdd3xb5fX48c8dkrxjZxIgrCSskNACZQVSIGwIoWEUWqCUVUgZbWlJKKtQ+BJ+QCkkZbb95gulhIYRyoYyC4VQZtgEwoizE0/ZGvfe5/n9cSVZsiVbNpYtx+f9evEi0bh6LCuSzj3nOcfQWmuEEEIIIYQQQggx4Jj9vQAhhBBCCCGEEEL0jAT1QgghhBBCCCHEACVBvRBCCCGEEEIIMUBJUC+EEEIIIYQQQgxQEtQLIYQQQgghhBADlAT1QgghNkrxeJzrrruOgw46iOnTpzNjxgzmz5/f38vq4Oabb+a5557Lef2aNWs488wz+2Qtb731FkceeSRHH300n3/+ecZ1X375JUcffTRHH300//nPf3r1cRcvXszixYtTf3///fe55JJLevUxsolEIlx55ZVMnTqVgw8+mJNPPpkPP/wwdf3s2bPZfvvtWbFiReqyt956i+222465c+emLnvttdc45phjOPTQQznooIP44x//iOd5ANTW1rLTTjsxffp0jjzySE488cSM5/bkk0/O+NmFEEKI7rL7ewFCCCFEIVx00UUA/POf/6S0tJRoNMrDDz/cz6vK5LouF1xwQae3GTVqFHfddVefrOef//wnP/rRj/jRj37U4bpnn32WyZMn85vf/KbXH/eNN94AYI899gBg4sSJTJw4sdcfp73LL78cwzB46qmnCAQCvPjii5xxxhk8/vjjDB06FIAddtiBRx55hJkzZwKwaNEiJkyYkDrGF198wS9/+UvuuOMOdt55Z1paWjjvvPOYO3cuv/jFLwAYOXIkjzzyCAA33ngj1157LX/5y18K/vMJIYQYHCSoF0IIsdH58ssvefHFF3n55ZcpLS0FoKSkhBNPPBGAcDjMFVdcwWeffQbAT37yE4499lgADjjgAKZPn84rr7xCXV0d//M//8Ozzz7L4sWLKSsr47bbbmPo0KHMnTuXr7/+mlWrVrF+/Xp23XVXfve73xEMBlm0aBF/+9vfcF2X8vJyrr32WrbYYgtqa2s56aST2H///Xn77bc5//zzefbZZ9l9992ZMWMG9913H/feey+maWJZFvfeey91dXWccsopPP/88wD84x//4O6778YwDLbffnuuuOIKKioqmDt3LrW1taxbt47a2lp23XVXrr322g7PjeM4zJkzJ5UdPuKIIzjnnHO4++67efLJJ3nppZf45z//yYIFC1L3eeqpp/i///s/AF555RXuuecevve97/Hpp58CfjY6ucba2lpOPvlkDj74YF577TUMw+CWW25hyy23RGvN3LlzefbZZzEMg/Hjx3POOeekHutf//oXp5xyCptvvjnz5s3jnnvuAWDevHk8+eSTGIbBnnvuyezZs7Ftm9mzZ1NeXs6nn37K6tWrmTZtGhdccAFKKa644grefvttTNNku+2244Ybbsh4HpYvX86//vUvXn75ZQKBAAD77bcfe++9N/feey/nnXceAEceeSQPP/wwM2fOJBaL8cYbb3DooYemjnPXXXfxwx/+kJ133hmA8vJyLr/8co466ijOOeecDs//brvt1mllhhBCCNFdEtQLIYTY6Hz88cdsueWWVFVVZb1+3rx5VFZW8uijj1JXV8exxx7LxIkT2W677QAIBAIsXLiQp556irPPPpu77rqLSy+9lMsuu4x//OMfnH322QC8/fbbPPTQQ1RVVXHuuefyj3/8g5NOOonvf//7HH300YAfEN9www3ccsstAKxatYr99tuPK664AvAz4Em33347Tz/9NCUlJYTDYUKhUMa6P/nkE26//XYeeOABhg4dyhVXXMGtt96aqkr46KOPWLBgAcFgkB/84Ae8/fbb7LLLLhnHWLBgAStWrOCRRx4hHo/z4x//mB133JFTTjmFjz76KHWCId2hhx7K0qVLAVLBbmdWrlzJAQccwMUXX8wdd9zBn//8Z37/+9/zwAMP8M4777Bw4UJKSkqor6+npqaGE044IePY6eXozz//PM8//zwPPPAAwWCQn//859x///38+Mc/BvwTOP/7v/9LLBbjoIMO4oQTTmD9+vWsXLmSxx9/HIDGxsYOa1y6dClbbrkllZWVGZdPnDiRt956K/X3mpoaxowZw7vvvsvKlSuZMmUKtt329emzzz7jwAMPzDjGVlttRTAY5KuvvqK8vDx1udaaF198MeOkgBBCCPFtyZ56IYQQg87ixYv54Q9/CMDQoUOZOnVqqgQcSAVdO+64I+Xl5ey2224ATJgwgeXLl6dud+CBB1JdXY1pmsyYMYPXX38d8APNk08+mSOPPJJbbrklVREAUF1dzfe///2s69phhx246KKLWLhwIdFoFMuyMq5/4403mDp1aqo0/IQTTkg9JsD3v/99ysvLCQQC7LDDDhlrTf/Zjz32WCzLorS0lKOOOorXXnst/ycvD8OHD0+V0k+aNCm1jn//+9+ceOKJlJSUAH7A3JXFixdz1FFHUVpaimVZHHvssRk/80EHHUQgEKCiooKtt96a5cuXM2bMGFauXMlVV13F008/3eHkSHf94Ac/YNGiRTz88MP84Ac/6Pb9165dy/Tp05k8eTLPP/986oSEEEII0RskqBdCCLHR2WGHHfjmm29obm7u0f2DwSAApmmm/gxgWVaqAVpnfv3rX3Peeefx2GOPcdNNNxGPx1PXpWdu27v11ls59dRTWbNmDccccwxfffVVt9adHrzmu9aesiwLpRQAsVgs5zpM0yzoOrL9zFVVVTz88MPsu+++/Oc//+HYY4/tsIbx48fz9ddfd3iNvP/++2y77bYZl+2333688sorrFu3jh133DHjum233Zb3338/47KvvvqKeDzOlltuCbTtqX/ppZfYbbfduPLKK7/1zy2EEEIkSVAvhBBio7P11luz77778rvf/Y5IJAL4gWdy7/aee+7JwoULAaivr+e5555j99137/bjPPfcczQ2NqKUYtGiRey5556Av2d/9OjRgL8HPh+u67JixQp22WUXzj33XMaNG9ehA/3uu+/Oc889R319PQALFy5MPWa+9txzTx588EE8zyMSifDoo4+y1157desYAGPGjEkFs08++WRe99l333257777iEajAKmfo6KignA4nHO9jz32GNFoFM/zePDBB7v8mevq6ojH4+y///5cfPHFrFmzhpaWlg7rP+CAA7j66qtxHAeAF198kVdffbVDJj0YDDJr1ixmzZrV4bHOOOMM7r//ft577z0AWlpauOqqq/jpT3+aqkhICgQCXHrppfznP/9J9SMQQgghvi3ZUy+EEGKjdP3113PTTTcxbdo0SktLMQyDY445BoCf//znXHHFFUybNg2AmTNnpvbTd8d3v/tdZs6cmWqUd/zxxwPwm9/8hp/85CdUV1ez//7753UspRSzZs1KZY533HFHpkyZwtq1a1O32X777Tn77LM55ZRTANhuu+341a9+1a01//CHP+TLL79k+vTpgN8oL9d2gM7MmjWLX//611RVVTFlypS87nPMMcewcuVKZsyYQSAQYNttt+X666/nwAMP5Nxzz+Xoo4/m5JNPZvPNN0/dZ//99+fDDz9MNTLcc889U1snclm1ahWXXnopnuehlGLmzJlZ+yv8/ve/57rrruOQQw7Btm1GjBjBXXfdldrekO6ggw7K+ljjxo3jhhtu4Morr6SlpQXP8zjiiCNy9h6oqanhtNNO47bbbuOPf/xjpz+HEEIIkQ9Da637exFCCCHEQJOcU55P4zghhBBCiEKR8nshhBBCCCGEEGKAkky9EEIIIYQQQggxQEmmXgghhBBCCCGEGKAGVKM8pRSu62KaJoZh9PdyhBBCCCGEEEKIgtNao5TCtm1MMzM3P6CCetd1O8yCFUIIIYQQQgghBoOJEycSDAYzLhtQQX3yjMTEiRO
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_functions_overlap(\"OMORI\", df_omori).show()"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:38.507418520Z",
"start_time": "2023-07-02T06:48:37.934133932Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdeZwT9f3H8dfMJNkTWM71FgUFqlAVRRFFESuIIhSt99V6VPGq9QBPKhXFUo+KrVptS72qooIH4I1aUfAWtSiKqKzIci2wVzbJzPf3xySTZDcLu/xcd9H38/FQNpnrm2yUfObz+X6+ljHGICIiIiIiIiJbHLu1ByAiIiIiIiIim0dBvYiIiIiIiMgWSkG9iIiIiIiIyBZKQb2IiIiIiIjIFkpBvYiIiIiIiMgWSkG9iMgWLBaLcdNNN/GLX/yCUaNGMWbMGKZNm9baw2rgL3/5Cy+99FKj28vLyznrrLN+kLG8++67HHnkkYwePZovvvgia9vSpUsZPXo0o0eP5o033vher7tgwQIWLFgQPP7oo4+46qqrvtdr5NKrVy9GjRrFyJEj+dWvfsXHH3+80f0XLVrEiy++GDxuid/N559/zllnncXQoUM5+uijOf3001m4cGGzz/P8889z+OGHM2rUKBYtWsQTTzzRrOO//vprevXqxYMPPpj1/CmnnJL1u8rlkEMOoaysrNljboqmvOcvvvgiixYtanT7008/zahRoxg1ahTDhw/npptuavK5m6tXr16b3Kf+519ERL4/odYegIiIbL7LL78cgKeeeoqCggKi0SgzZsxo5VFlSyQSXHTRRRvdp7S0lHvuuecHGc9TTz3FiSeeyIknnthg2wsvvMCgQYO47LLLvvfrvvXWWwDsu+++APTt25e+fft+79fJ5cknnwTggQce4Oqrr2bmzJmN7rto0SLeeustDj30UOD7/92Ul5dz6qmncs011zBixAgAvvrqK5YuXdpg30QiQSjU+FeVRx99lPHjx3PQQQexYMECZsyYwZgxY5o8lpkzZzJgwABmzpzJSSed1PwX00Ka8p6/+OKLDBgwgD59+jTYVl5ezpQpU5gxYwadO3fGdV0+//zzJp+7JdT//DfVpj4DIiKioF5EZIu1dOlSXnnlFV577TUKCgoAyM/P54QTTgCgqqqKCRMmsHjxYgBOO+00jjnmGMDPMo4aNYrXX3+dtWvXcsMNN/DCCy+wYMECCgsLufPOO+nUqRNTp07l66+/5rvvvmP16tX079+fP/zhD0QiEWbOnMkDDzxAIpGgqKiIG2+8kR122IGysjJOPvlkhgwZwnvvvceFF17ICy+8wIABAxgzZgz/+c9/ePDBB7FtG8dxePDBB1m7di2nnnoqL7/8MuAHa/fddx+WZdG7d28mTJhAcXExU6dOpaysjFWrVlFWVkb//v258cYbG7w38XicyZMnB5nBI444gnPPPZf77ruPOXPm8Oqrr/LUU0/x8MMPB8c8++yz/Pvf/wbg9ddf5/7772efffbhs88+A6CsrCwYY1lZGaeccgqHHXYYb775JpZlcfvtt7PjjjtijGHq1Km88MILWJbFLrvswrnnnhtc68UXX+TUU09lu+2244477uD+++8H4I477mDOnDlYlsV+++3H+PHjCYVCjB8/nqKiIj777DNWrFjByJEjueiii/A8jwkTJvDee+9h2za9evXiz3/+80Y/MwMHDgz2eemll7j99tvxPI9tt92WP/7xj+Tl5XH77bdTU1MTZHhHjhz5vf5uHnzwQfbff/8goAfo3r073bt3Dz6bRx55JPPmzeOAAw5g+PDhXHfdddTV1eG6LpdeeimDBw/mz3/+M++++y5ff/01jz/+OEuXLqWsrIxRo0ax1157MWHChI2+F8YYnnzySf7xj3/wm9/8hiVLltCjR48G+y1fvpzrrruO5cuXA3DuuecGY58xYwavvfYaa9eu5corr2To0KGAf3PonnvuIR6P06lTJ2644QZKS0uZOnUqy5YtY/Xq1Xz11VcMGzaMAQMGcPfdd7Ny5UquvPJKDj300KzP2urVq/n973/P+vXrSSQSHH/88fTo0YOXX36Z+fPn8+9//5tLL72UAw88MBjzmjVriEQitGvXDgDHcejduzeQ+3N86KGHMn/+fMLhMDfeeCO33XYbX375JXvssUeQ4T/kkEO477772G677QA/O5/6byPT7373O7755hui0Sj7778/V199NV988UWDz//RRx+90c98JBJh8eLFFBUV8Y9//GOjv0sRkZ88IyIiW6RZs2aZo446qtHtN954o5kwYYIxxpg1a9aYIUOGmE8//dQYY8yQIUPMX//6V2OMMXPmzDF77LGHefvtt40xxlx99dXmzjvvNMYYc/vtt5shQ4aYiooK47quOffcc839999vjDFm7dq1wbXmzJljLrjgAmOMMcuWLTO77rqreeWVV4Lt48aNM48//rgxxpjBgweb2tpaY4wxlZWVJpFImGXLlpkhQ4YYY4xZtGiRGTJkiFmzZo0xxphrr73W3HTTTcF4jjzySFNVVWVisZg54ogjzLvvvtvgtd93333mt7/9rUkkEqampsb88pe/DMaTOZb6br/9dnP77bcHj3fdddfg58wxpl7j/PnzjTHG3HXXXebqq682xhjz6KOPmtNPPz14jan3qf6558+fb04++WRjjDEvvfSS+eUvf2lqampMIpEwv/3tb80DDzwQjPfXv/61icViprKy0uy3335mxYoV5uOPPza/+c1vgvOtW7cu52vKfA1//etfzXHHHWdWrVplBg4caL755htjjDF33323ufDCC40xxjz++ONm3LhxOV/39/G7OfPMM82//vWvnGM1xv9sps5pjP8ZicVixhhjli9fbg4++GDjeZ4xxpiTTz45+B1kvp8pV155pXnxxRdzXmf+/PnmV7/6lTHGmFtuucXcfPPNwbbM855wwgnmkUceMcYY43meqaioCMY5depUY4wx7733njnssMOMMcYsXbrUnHLKKSYajRpjjHn66afNxRdfHLxHI0eONDU1NaampsYMHDjQ/PGPfzTGGPPuu+8G58h8z//5z3+au+66Kxhb6ve8sc+x67rm7LPPNgMHDjQXXXSRefDBB011dXWDc6c+x6n/9q+77jozdOhQs2bNGhOPx82IESOC3+GQIUPMsmXLgmtkfq4yf0593l3XNeecc46ZO3du8NozP/+b+syfeOKJpq6uLufrExGRbJpTLyLyI7VgwQKOO+44ADp16sTQoUODEliA4cOHA/Czn/2MoqIi9t57bwB22203li1bFux36KGHUlJSgm3bjBkzhvnz5wN+pcApp5zCkUceye233x5UBACUlJRw0EEH5RxXnz59uPzyy5k+fTrRaBTHcbK2v/XWWwwdOpROnToBcPzxxwfXBDjooIMoKioiHA7Tp0+frLFmvvZjjjkGx3EoKCjgqKOO4s0332z6m9cEXbp0CUqJ+/XrF4zjv//9LyeccAL5+fkAdOzYcZPnWrBgAUcddRQFBQU4jsMxxxyT9Zp/8YtfEA6HKS4uZqeddmLZsmVsv/32LF++nIkTJ/Lcc8+Rl5fX6PlHjRrFUUcdxcKFC5k8eTIffvghe+yxB9tvvz3Q8D1uzPfxu2mK0aNHBz9XV1dz6aWXcsQRR3DOOeewatUqVq9e3aTzTJo0Kcie1zdz5kxGjRoVXO+pp57C87ysfaqqqvjss8849thjAbAsi5KSkmD74YcfDmT//ufNm8eSJUs49thjGTVqFHfffXeQ5Qf/PSooKKCgoIDu3bsH/53svvvuOd+vfv36MWPGDG677TYWLFhAhw4dNvm6bdvm7rvv5p///Cd77rknM2fO5LjjjiMWizXYt2vXrsF/+3369KFfv3506tSJUChEr169mv07fPTRRxk9ejSjRo1i4cKFWf9fyLSpz/zhhx9OJBJp1rVFRH6qVH4vIrKF6tOnD9988w2VlZVBmW1zpL4w27ad9eXZcRxc193k8ZdeeimTJ09mwIABfPbZZ5x77rnBtqKiokaP+9vf/sYHH3zAG2+8wdFHH82///3
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_functions_overlap(\"Potion Craft: Alchemist Simulator\", df_potioncraft).show()"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-02T06:48:39.103616172Z",
"start_time": "2023-07-02T06:48:38.507966416Z"
}
},
"outputs": [
{
"data": {
"text/plain": "<Figure size 1024x576 with 1 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA/UAAAI1CAYAAACXJNr5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAAnYAAAJ2AHHoLmtAAEAAElEQVR4nOzdeXgT5doG8HsmaQtdoAWkyqJAy6YWBRSECgr1sNciIK4gKiJUFDmoLIp8cEDgoKKAinKOIrggZRMFRFY9IBRBsYjsoLZAy9I9bZpk5v3+SDM0XVg7k6X377q8LG0y8yaZJPPM87zPKwkhBIiIiIiIiIjI58ieHgARERERERERXR0G9UREREREREQ+ikE9ERERERERkY9iUE9ERERERETkoxjUExEREREREfkoBvVERHTVbDYbZs6ciX/84x9ISEhAv379sHDhQk8Pq4x3330XmzZtqvDvGRkZeOaZZwwZy549e9CnTx/07dsXR48edfvbiRMn0LdvX/Tt2xc//fRTpe43OTkZycnJ2r/37duHV199tVL3UVpaWhq6du1aZhyDBg265H03btyIAwcOaP/etGkT3n33XQDAgQMHsHHjxovu53KMGzcOK1asKPdvp06dwujRo9G1a1c88MADeOCBB/DRRx9d8T4qkzeOiYiIPM/s6QEQEZHveuWVVwAAq1evRvXq1WG1WrFy5UoPj8qdw+HAqFGjLnqbyMhILFiwwJDxrF69Go8++igeffTRMn/bsGEDYmNj8fLLL1f6fnft2gUAaN++PQAgJiYGMTExlb6fyrJx40a0a9cOLVu2BADExcUhLi4OgDOo37VrF+677z5d9p2fn4/HH38cgwYNwttvvw1JkpCbm4v//ve/uuzPV8dERETegUE9ERFdlRMnTmDr1q348ccfUb16dQBAtWrV8MgjjwBwBiGTJk3C4cOHAQBPPPEEBgwYAADo2rUrEhISsG3bNmRmZuKNN97Ahg0bkJycjODgYHzwwQeoVasW5s6di7/++gunT5/GuXPn0LZtW/zf//0fAgMDsWrVKnz22WdwOBwICQnB9OnTceONNyItLQ2PP/44unTpgl9++QUvvPACNmzYgHbt2qFfv3748ssv8fnnn0OWZZhMJnz++efIzMzE4MGDsXnzZgDA0qVLsWjRIkiShBYtWmDSpEkIDQ3F3LlzkZaWhrNnzyItLQ1t27bF9OnTyzw3drsdM2bM0DLjvXv3xogRI7Bo0SKsW7cOP/zwA1avXo0lS5Zo9/nuu+/w6aefAgC2bduGxYsX484778ShQ4cAOLPRrjGmpaVh0KBB6NatG3bs2AFJkjBnzhzcdNNNEEJg7ty52LBhAyRJQtOmTTFixAhtXxs3bsTgwYPRoEEDzJs3D4sXLwYAzJs3D+vWrYMkSbjrrrswbtw4mM1mjBs3DiEhITh06BDS09MRHx+PUaNGQVVVTJo0Cb/88gtkWUbz5s3x5ptvXtExtGLFCnz//fcwmUw4fvw4brrpJsyZMwe7d+/G5s2bsXPnTnz66ad46aWXcPbsWezatQsTJkzAnDlzUFBQgISEBPTo0QPx8fFu292wYQMWLFgAu92OWrVq4Y033kBkZCRyc3MxduxY/Pnnn6hXrx7M5vJPg7799ltERkbiySef1H5Xo0YNjB49Wvv3pk2bMGfOHKiqivr16+Nf//oXrrvuugpfe8BZMfL9999DlmWEh4drz/2XX36JZcuWQVEU3HTTTZg2bRpCQ0OveEwvvvgi/v77b1itVnTs2BGvvfYaAGDu3LlITU3FuXPn8Oeff6J79+5o164dPvzwQ5w5cwYTJkzQLpBU9NwREZEXE0RERFdhzZo14v7776/w79OnTxeTJk0SQghx/vx50aVLF3Hw4EEhhBBdunQR7733nhBCiHXr1onbb79d/Pzzz0IIIV577TXxwQcfCCGEmDNnjujSpYvIysoSiqKIESNGiMWLFwshhMjMzNT2tW7dOvH8888LIYRITU0VzZo1E1u3btX+PnbsWLF8+XIhhBCdO3cWhYWFQggh8vLyhMPhEKmpqaJLly5CCCEOHDggunTpIs6fPy+EEOL1118XM2fO1MbTp08fkZ+fL2w2m+jdu7fYs2dPmce+aNEi8eyzzwqHwyEKCgrEAw88oI2n5FhKmzNnjpgzZ47272bNmmk/lxyj6zHu3LlTCCHE/PnzxWuvvSaEEGLp0qViyJAh2mN0PU+lt71z507x+OOPCyGE2LRpk3jggQdEQUGBcDgc4tlnnxWfffaZNt4nn3xS2Gw2kZeXJ+666y6Rnp4ufv/9d/HUU09p28vOzi7zeEqOubz9Ll++XHTs2FGcPXtWqKoqnnrqKbF69epyn6fly5eLsWPHlvm59H5OnDghBg0aJKxWqxBCiG+++UaMHj1aCCHEG2+8If71r39p92ndunW5r8WkSZPE1KlTy/ze5ezZs6JDhw7i77//FkII8eGHH4oXXnhBCFHxa5+VlSV69OghFEVxe7527twpXnzxRWG324UQztfyzTffvOIxCXHhtVYURQwfPlxs2bJFCOF87ePj40VBQYEoKCgQHTp00J6HPXv2iG7dul3yuSMiIu/FOfVERKSL5ORkPPTQQwCAWrVqIS4uTisBB4AePXoAAG6++WaEhITgjjvuAADccsstSE1N1W533333ITw8HLIso1+/fti5cycAZ6XAoEGD0KdPH8yZM0erCACA8PBw3HPPPeWOq2XLlnjllVeQlJQEq9UKk8nk9vddu3YhLi4OtWrVAgA8/PDD2j4B4J577kFISAgCAgLQsmVLt7GWfOwDBgyAyWRC9erVcf/992PHjh2X/+Rdhjp16mil9K1atdLG8b///Q+PPPIIqlWrBgCIiIi45LaSk5Nx//33o3r16jCZTBgwYIDbY/7HP/6BgIAAhIaGonHjxkhNTUXDhg1x6tQpTJkyBevXr0dQUFCZ7UqSdMl9t2vXDnXq1IEkSYiJiSn3+bwS27dvx7FjxzBw4EAkJCTgww8/xKlTp7TH6aoWadCgATp06HBZ2/zggw+QkJCATp064fTp0/jtt99w++23o2HDhgDcj5GKXvuwsDAEBwfj1VdfxerVqyHLzlOwrVu34tdff0X//v2RkJCAr7/+GmlpaVc8JsBZYdK3b18kJCQgJSXF7T1xzz33oHr16qhevToaNWqkvT9uvfVW7Tm/2HNHRETei+X3RER0VVq2bIm///4beXl5CAsLu+L7BwYGAgBkWdZ+BgCTyQRFUS55/5deegkzZsxAu3btcOjQIa3EGQBCQkIqvN/777+PvXv34qeffkL//v3x6aefVliGXZ6SwevljvVqmUwmqKoKWZZRVFRU4ThkWdZ1HOU95ho1amDlypXYsWMHtm7dirlz5+Lrr792u0gSHh6O7Oxst21lZ2drF0wq2va1EEKge/fueP311696Gy1atMDq1au1f48YMQIjRoxA165dr3p8JpMJS5Yswe7du/G///0Ps2fP1vpPDBo0CE8//fQ1jWnXrl1Yu3YtPvvsM4SFhWHGjBlux0zp91jJ95/rMVXGc0dERMZjpp6IiK5K48aN0alTJ/zf//0fCgsLAQBFRUXa3O277roLSUlJAICsrCxs2rQJ7dq1u+L9bNq0CTk5OVBVFatWrcJdd90FwDln/4YbbgDgzFBeDofDgZMnT6JNmzYYOXIkoqOjy3Sgb9euHTZt2oSsrCwAQFJSkrbPy3XXXXdh+fLlUBQFhYWF+Oabby47K1xSw4YNsW/fPgDAunXrLus+nTp1wpdffgmr1QoA2uMIDQ1Ffn5+heP99ttvYbVaoSgKli9ffsnHnJmZCZvNhi5dumD8+PHIyMiAxWJxu01ISAiioqKwdu1aAM7nf9WqVejYseMlH8fFxnuxv3Xs2BGbNm3Sst12ux0HDx4E4GwSuHz5cgDOTvIlqxFK6tOnD06fPo1PP/0UQghtOw6HAwBw22234bffftMy3EuXLtWer4pe+/z8fGRnZ6NDhw546aWXUK1aNaSnp+Oee+7BihUrkJmZCQAoKCjAsWPHrnhMeXl5qFGjBkJ
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_functions_overlap(\"Untitled Goose Game\", df_untitledgoosegame).show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Conclusioni"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Il prezzo di un videogioco è correlato negativamente con il numero dei suoi giocatori concorrenti, come ipotizzato."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La pubblicazione di un annuncio spesso, ma non sempre, coincide con un incremento temporaneo nel numero dei giocatori."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La funzione modellata ha una correlazione di intensità che varia da debole a intensa in base al videogioco in questione.\n"
]
}
],
"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.11.3"
}
},
"nbformat": 4,
"nbformat_minor": 1
}