
Концепция
Я решил проанализировать базу данных аниме рекомендаций и сделать: 1. Распределение аниме по жанрам 2. Соотношение рейтинга и количества эпизодов 3. Топ 10 лучших аниме исходя из базы 4. Топ 10 худших аниме исходя из базы
Базу данных я взял на Kaggle. https://www.kaggle.com/datasets/CooperUnion/anime-recommendations-database
Я использовал:
Горизонтальный столбчатый график для отображения распределения количества аниме по жанрам.
Точечный график для отображения соотношения рейтингов и количества эпизодов.
Вертикальный столбчатый график для топ-10 лучших и худших аниме.
Я сам люблю периодически смотреть аниме, и поэтому мне хотелось посмотреть на рейтинг исходя из базы данных которую можно найти.
Сначала я попросил ChatGPT структурировать мне базу в топ 10 худших и лучших аниме.
Код:
top_10_best = anime.sort_values (by='rating', ascending=False).head (10)
top_10_worst = anime.sort_values (by='rating', ascending=True).head (10)
print («Top 10 Best Anime:») print (top_10_best[['name', 'rating']])
print («\nTop 10 Worst Anime:») print (top_10_worst[['name', 'rating']])
Что вышло.
Top 10 Best Anime: name rating 10464 Taka no Tsume 8: Yoshida-kun no X-Files 10.00 10400 Spoon-hime no Swing Kitchen 9.60 9595 Mogura no Motoro 9.50 0 Kimi no Na wa. 9.37 9078 Kahei no Umi 9.33 1 Fullmetal Alchemist: Brotherhood 9.26 2 Gintama° 9.25 10786 Yakusoku: Africa Mizu to Midori 9.25 3 Steins; Gate 9.17 4 Gintama' 9.16
Top 10 Worst Anime: name rating 9991 Platonic Chain: Ansatsu Jikkouchuu 1.67 12258 Hi Gekiga Ukiyoe Senya Ichiya 1.92 8058 Tenkuu Danzai Skelter+Heaven 2.00 8057 Utsu Musume Sayuri 2.14 8056 Hametsu no Mars 2.37 10087 Roboteuwang Sseonsyakeu 2.49 9516 Mechano: Scientific Attack Force 2.55 8289 Cakes 2.58 9854 Ongaku Sekai Ryokou 2.67 8055 Nami 2.67
Потом я попросил создать визуализацию в виде горизонтального столбчататого графика.
Код:
top_10_best = anime.sort_values (by='rating', ascending=False).head (10)
top_10_worst = anime.sort_values (by='rating', ascending=True).head (10)
print («Top 10 Best Anime:») print (top_10_best[['name', 'rating']])
print («\nTop 10 Worst Anime:») print (top_10_worst[['name', 'rating']])
plt.figure (figsize=(8, 10)) sns.barplot (data=top_10_best, y='name', x='rating', palette='viridis') plt.title ('Top 10 Best Anime', fontsize=16, fontweight='bold') plt.xlabel ('Rating', fontsize=14) plt.ylabel ('Anime', fontsize=14) plt.show ()
plt.figure (figsize=(8, 10)) sns.barplot (data=top_10_worst, y='name', x='rating', palette='magma') plt.title ('Top 10 Worst Anime', fontsize=16, fontweight='bold') plt.xlabel ('Rating', fontsize=14) plt.ylabel ('Anime', fontsize=14) plt.show ()
Эти два графика нам особо ничего не дают, смысла анализировать их не вижу, просто как тест и личный интерес.
Потом я попросил распределить количество аниме по жанрам.
Код:
genre' in anime.columns: genres = anime['genre'].str.split (', ').explode ().value_counts () plt.figure (figsize=(10, 6)) sns.barplot (x=genres.values, y=genres.index, palette="muted») plt.title ('Распределение аниме по жанрам', fontsize=16, fontweight='bold') plt.xlabel ('Количество аниме', fontsize=14) plt.ylabel ('Жанр', fontsize=14) plt.show ()
А вот этот график достаточно занимательный, исходя из него мы можем понять что аниме в жанре комедия больше всех, хотя мне раньше всегда казалось что боевиков.
Потом я попросил у того же ChatGPT сделать анализ точечным графиком количества серий и рейтинга.
Код:
plt.figure (figsize=(12, 8)) scatter_plot = sns.scatterplot (data=anime, x='rating', y='episodes', alpha=0.7, s=80, edgecolor='w', linewidth=0.5) scatter_plot.set_xlim (0, 10) scatter_plot.set_ylim (0, anime['episodes'].max () + 100)
plt.title ('Соотношение рейтингов и количества эпизодов', fontsize=16, fontweight='bold') plt.xlabel ('Рейтинг', fontsize=14) plt.ylabel ('Количество эпизодов', fontsize=14) plt.grid (True, which="both», ls="--», linewidth=0.5) plt.show ()
Тоже занимательный график. Исходя из него можно понять что аниме у которых больше 1000 эпизодов не так много, а ещё то, что у таких больших аниме не всегда высокий рейтинг.
Ссылка на диск с кодом и базой данных