add analysis

This commit is contained in:
Michael Zhang 2024-05-01 22:05:34 -05:00
parent 5e11a80b79
commit b3a5ba543e
2 changed files with 125 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.venv

124
summary.ipynb Normal file
View file

@ -0,0 +1,124 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"from datetime import datetime, timezone, timedelta\n",
"import pytz\n",
"\n",
"with open(\"data/output.csv\", \"rb\") as f:\n",
" data = pd.read_csv(f, delimiter=\"\\t\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Time Played\n",
"2024-03-04 30\n",
"2024-05-01 26\n",
"2024-04-13 26\n",
"2024-04-25 25\n",
"2024-04-14 24\n",
"2024-04-20 23\n",
"2024-04-18 20\n",
"2024-04-24 19\n",
"2024-03-05 17\n",
"2024-03-10 17\n",
"Name: Time Played, dtype: int64\n"
]
}
],
"source": [
"JST = pytz.timezone(\"Asia/Tokyo\")\n",
"CST = pytz.timezone(\"America/Chicago\")\n",
"\n",
"def to_jst_timestamp(s: str, format_str=\"%Y-%m-%d %H:%M:%S\"):\n",
" if type(s) is not str: return None\n",
" naive_dt = datetime.strptime(s, format_str)\n",
" jst_dt = JST.localize(naive_dt)\n",
" cst_dt = jst_dt.astimezone(CST)\n",
" return cst_dt\n",
"\n",
"times = data[\"Time Played\"]\n",
"times_mapped = times.map(to_jst_timestamp)\n",
"days_played = times_mapped.groupby(times_mapped.dt.date).count()\n",
"print(days_played.sort_values(ascending=False).head(10))"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Clears Average Song Name Score Lamp\n",
"Rating \n",
"8 7 895073 朧 (dj TAKA Remix) 996620 GFC\n",
"9 25 918551 Why not 999650 PFC\n",
"10 29 921425 隅田川夏恋歌 992160 GFC\n",
"11 40 896780 朧 992520 GFC\n",
"12 56 890122 MY SUMMER LOVE 987030 GFC\n",
"13 70 840879 Struggle 978430 GFC\n",
"14 121 799834 FUNKY SUMMER BEACH 943140 FC\n",
"15 26 798904 未来FUTURE 898400 Clear\n",
"16 16 770314 Sword of Vengeance 861210 Clear\n",
"17 1 662870 PRANA+REVOLUTIONARY ADDICT (U1 DJ Mix) 662870 Clear\n"
]
}
],
"source": [
"records_by_level = data.loc[data[\"Lamp\"] != \"Fail\"].groupby(data[\"Rating\"])\n",
"num_clears_by_level = records_by_level[\"Score\"].count().rename(\"Clears\")\n",
"average_scores_by_level = records_by_level[\"Score\"].mean().round().astype(\"int\").rename(\"Average\")\n",
"def max_info(group):\n",
" max_idx = group[\"Score\"].idxmax()\n",
" return group.loc[max_idx]\n",
"max_score_by_level = records_by_level.apply(max_info)[[\"Score\", \"Lamp\", \"Song Name\"]]\n",
"result = pd.merge(num_clears_by_level, average_scores_by_level, on=\"Rating\")\n",
"result = pd.merge(result, max_score_by_level, on=\"Rating\")\n",
"print(result)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}