ddr-scores/summary.ipynb
2024-05-01 22:05:34 -05:00

124 lines
4 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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
}