hatopopvr / MyBSAnalytics_Lite

[BeatSaber][ScoreSaber] Analysis tool for your Ranked scores data.
MIT License
3 stars 0 forks source link

Level Cleared Detail、数が合わない #1

Closed hatopopvr closed 1 year ago

hatopopvr commented 1 year ago

saved_player_score_is_enable = Falseにしてスコアを全取得したが微妙に数が合わない。 NotCleared -1あり。調査要。

image

hatopopvr commented 1 year ago

ユーザーから追加で報告受け image

https://twitter.com/HPC______/status/1666114138777735169?s=20

hatopopvr commented 1 year ago

修正完了

image

内容

"SongAuthor"列にNaNの値があり、結果として"Song"列にNaNの値が1件発生し、以下のレコードが欠損扱いとなっていた。

df_level4 = df_rankmap_data[df_rankmap_data["Level"] == 4]
missing_songs_df = df_level4[df_level4["Song"].isnull()]
missing_songs_df[['Id','Leaderboardid','Hash','SongName','SongSub','SongAuthor','LevelAuthor','Song','Stars','Level']]

image

対象 https://scoresaber.com/leaderboard/9 https://beatsaver.com/maps/1

以下で欠損値を補完することで値は一致した。

# 変更前
df_progress = df_rankmap_data[["Level","Song"]].groupby(["Level"],as_index=False).count()

# 変更後
df_progress = df_rankmap_data[["Level","Song"]].fillna('Unknown').groupby(["Level"],as_index=False).count()

対応としては重複するが、大元のSongAuthorの元も変更追加し、修正完とする

# 集計異常対応 (bsr 1, me & uのSongAuthorがNaNの値の対応)
df_rankmap_data['SongAuthor'].fillna('Unknown', inplace=True)

# 準備
df_rankmap_data["Song"] = df_rankmap_data["SongName"] + " / " + df_rankmap_data["SongAuthor"] + " [" + df_rankmap_data["LevelAuthor"] + "]"