Концепция
Я решил проанализировать базу данных аниме рекомендаций и сделать:
- Распределение аниме по жанрам
- Соотношение рейтинга и количества эпизодов
- Топ 10 лучших аниме исходя из базы
- Топ 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 эпизодов не так много, а ещё то, что у таких больших аниме не всегда высокий рейтинг.
Ссылка на диск с кодом и базой данных
https://drive.google.com/drive/folders/1NnOAW-r67wtJb6yXcX2RaZ44Rhk_r9HP?usp=sharing




