Original size 1140x1600

Анализ и визуализация данных на примере манги

PROTECT STATUS: not protected

Исходные данные: цель исследования

Цель данного проекта — найти и проанализировать табличные данные и сделать выводы об исследованном. Для анализа я использовала сайт kaggle.com и выбрала такую информацию как «Самая популярная манга». Я решила взять именно эту информацию, так как она близка по моему учебному профилю. Также я давно интересуюсь именно мангой, и мне было интересно увидеть динамику популярности книг, узнать о таковой у их авторов и издательств.

Графики и принцип их выборки

Для иллюстрации моих данных я использовала различные графики. Их многообразие можно объяснить не только эстетическим решением, но и их разными иллюстративными способностями. Так, например, круговая диаграмма нагляднее покажет процентное соотношение одного к другому, чем линейная.

Разработка: как я обрабатывала данные

Все графики следовали принципу «„Топ 30/5…“. И это неудивительно: по своей сути таблица уже была неупорядоченным топом нескольких позиций сразу. Я проиллюстрировала эти позиции при помощи разных типов графиков, так как они позволяют по-разному взглянуть на полученные данные и сделать свои выводы, о которых чуть позже. Подробнее о своих рассуждениях и решениях я расскажу в разделе „Итоговые графики“.

Стиль графиков

Своеобразной айдентикой выступил цвет графиков — розовый и его оттенки, так как именно он навевает ассоциации с Азией, что подходит тематически. Еще одним, пусть и незначительным решением, стало расположение текста для подписей под углом 90 градусов. Это своеобразный оммаж на те же азиатские языки, которые зачастую пишутся в манге/манхве сверху вниз.

Итоговые графики

big
Original size 2267x1440

Код: from google.colab import drive drive.mount ('/content/drive') import pandas as pd import matplotlib.pyplot as plt

most_common_demographic = data['Demographic'].mode ()[0] genre_popularity = data['Demographic'].value_counts () genre_popularity = genre_popularity.sort_values (ascending=False) plt.figure (figsize=(10, 6)) genre_popularity.plot (kind='bar', color='pink') plt.title ('Популярность каждого жанра') plt.xlabel ('Жанр') plt.ylabel ('Количество книг') plt.xticks (rotation=90, ha='right') plt.tight_layout () plt.show () print (f"Самый популярный жанр: {most_common_demographic}»)

Первое, что я решила узнать — какой же жанр самый популярный. Для этого подошла столбчатая диаграмма, наглядно показывающая соотношение каждого столбца с предыдущим и последующим.

Original size 2210x1341

Код: from google.colab import drive drive.mount ('/content/drive') import pandas as pd import matplotlib.pyplot as plt

author_counts = data['Author (s)'].value_counts () top_5_authors = author_counts.head (30) plt.figure (figsize=(10, 6)) plt.plot (top_5_authors.index, top_5_authors.values, marker='o', linestyle='-', color='pink') plt.xlabel ('Имя авторов') plt.ylabel ('Частота упоминаний') plt.title ('Топ 30 авторов') plt.xticks (rotation=90) plt.tight_layout () plt.show ()

Для выявления популярности конкретного автора я использовала линейную диаграмму. Пришлось взять первые 30 авторов (с помощью функции .head), так как график получался большим и не информативным. С дальнейшими графиками я также использовала head если полномасштабный график не нес большой информационной нагрузки.

Original size 1580x1245

Код: from google.colab import drive drive.mount ('/content/drive') import pandas as pd import matplotlib.pyplot as plt

author_counts = data['Author (s)'].value_counts () top_10_authors = author_counts.head (10) pink_colors = ['#FFC0CB', '#FF69B4', '#FF1493', '#DB7093', '#C71585', '#FF0090', '#FF007F', '#FF3E96', '#FF34B3', '#FF82AB'] plt.figure (figsize=(8, 8)) plt.pie (top_10_authors.values, labels=top_10_authors.index, autopct='%1.1f%%', startangle=140, colors=pink_colors) plt.title ('Топ 10 самых популярных авторов') plt.tight_layout () plt.show ()

Круговая диаграмма была использована для наглядности: при помощи нее можно увидеть, каково настоящее соотношение «сторон» в лице популярности каждого автора. Эту самую популярность я получила, ссылаясь на количество упоминаний таковых в таблице. Здесь я выбрала уже не 30, а 10 авторов, так как иначе названия накладывались друг на друга, и в целом такая круговая диаграмма не была бы достаточно наглядной. Как можно заметить, здесь я уже указывала цвет не как pink, а как цветовые коды. Таким образом диаграмма выглядит более интересной и понятной, в то же время не отступая от установленной айдентики

Original size 1575x1050

Код: from google.colab import drive drive.mount ('/content/drive') import pandas as pd import matplotlib.pyplot as plt

sorted_data = data.sort_values (by='Serialized') plt.figure (figsize=(10, 6)) top_30_earliest = sorted_data.head (30) sizes = [200 — (i * 5) for i in range (len (top_30_earliest))] plt.figure (figsize=(12, 8)) plt.scatter (top_30_earliest['Serialized'], top_30_earliest['Manga series'], color='#FFC0CB', s=sizes) plt.xlabel ('Дата выпуска', fontsize=12) plt.ylabel ('Название', fontsize=12) plt.title ('Топ 30 самых ранних книг по дате выпуска (размер точек зависит от давности)', fontsize=14) plt.grid (True, linestyle='--', alpha=0.6) plt.xticks (rotation=90) plt.tight_layout () plt.show ()

На данный график стоит смотреть не с точки зрения «выше — лучше», а обращая внимание на размер точек. Точечная диаграмма выполнена при помощи функции .scatter. Таким образом мы видим, что самой ранней мангой в таблице является Сазае-Сан

Original size 1582x1380

Код: from google.colab import drive drive.mount ('/content/drive') import pandas as pd import matplotlib.pyplot as plt

file_path = '/content/drive/My Drive/best-selling-manga 2.csv' data = pd.read_csv (file_path) publisher_popularity = data.groupby ('Publisher')['Approximate sales in million (s)'].sum ().reset_index () top_20_publishers = publisher_popularity.sort_values (by='Approximate sales in million (s)', ascending=False).head (20) plt.figure (figsize=(10, 10)) plt.bar (top_20_publishers['Publisher'], top_20_publishers['Approximate sales in million (s)'], color='pink') plt.xlabel ('Издательство') plt.ylabel ('Популярность') plt.title ('Топ 20 самых популярных издательств') plt.xticks (rotation=90) plt.tight_layout () plt.show ()

В этом графике говорится уже о популярности издательств. Здесь могла бы подойти и круговая диаграмма, но я решила прибегнуть к коду, использованному ранее, и создать столбчатую. Столбчатая диаграмма отвечает на вопрос «кто лучше?», не вдаваясь в детали по типу процентов. Именно это мне было нужно.

Описание применения генеративной модели

Для иллюстративной (обложка этого проекта) и генеративной части я прибегала к использованию нейросетей Ideogram.ai и DeepSeek. Вторая помогала в случаях, когда моих знаний было недостаточно для нужного отображения, я не знала, как оформить мысль в код или не понимала, где и какую ошибку допустила. Также нейросеть — хороший помощник в определении рандомного набора чего-либо (в моем случае оттенков цветов)

Original size 1174x126

Генерация нейросетью рандомного набора розовых оттенков для круговой диаграммы. Позже палитра была расширена, так как 10 позиций смотрелось нагляднее, чем 5.

Original size 1521x543

Нейросеть помогает искать ошибки в коде. В данном случае я забыла, что название колонки «Demographic» написано с маленькой буквы, из-за чего питон не понимал, о чем идет речь.

Original size 1140x1600

Промпт: a samurai from junji ito manga surfing through countless python data and histograms with pie charts. The picture is black and pink, with intricate details in the background.

Анализ и визуализация данных на примере манги