Original size 1140x1600

Анализ самых популярных книг для обмена

PROTECT STATUS: not protected
The project is taking part in the competition

Вступление

Книги — это моя любовь. В детстве меня порой нельзя было оторвать от интересной истории. А когда кто-то дарит мне книгу или я выбираю её в подарок — это отдельная радость. И когда я наткнулась на датасет на Kaggle со списком 1000 самых популярных книг для обмена, мне стало интересно исследовать данные из него и выявить основные черты самых читаемых произведений.

Для анализа были выбраны следующие темы: 1. Самые популярные книги по рейтингу. 2. Какие слова-теги при описании книг встречаются чаще всего? 3. Связь между количеством страниц и рейтингом по возрастным группам. 4. Самые популярные авторы. 5. Соответствие статуса бестселлера и наличия экранизации.

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

big
Original size 3360x2240

В качестве шрифта я выбрала Educational Gothic, так как он одновременно и достаточно читабельный, и напоминающий заголовки книг. Цветовая палитра была составлена при помощи Adobe Color по фото, приведённом выше. Она отсылает к книжным переплётом и уютной атмосфере среди книжных полок.

Столбчатые диаграммы

Original size 2370x1580

На этой диаграмме представлены 20 книг с самым высоким рейтингом. Показатели отличаются незначительно и график получился плавным и напоминающим книги, стоящие на полке. Лидирующую позицию занимает «Маленький принц». Интересно, что в этом списке книги про Гарри Поттера встречаются целых три раза, однако большая часть произведений всё же ориентирована на более взрослую аудиторию.

top_20 = df.sort_values (by='rating_average', ascending=False).head (20)

plt.figure (figsize=(12, 8), facecolor='#FBEDE2')

diagram = sns.barplot (x='Название_ру', y='rating_average', data=top_20, palette=my_colors, hue='title', legend=False)

diagram.set_facecolor ('#FBEDE2')

font_path = '/content/EDUCATIONALGOTHIC-REGULAR.OTF' custom_font = fm.FontProperties (fname=font_path) title_font = fm.FontProperties (fname=font_path, size=20)

plt.tight_layout () plt.show (

Original size 2374x1580

Однако, если смотреть на место книги в рейтинге, то перед нами складывается немного другая ситуация. Вместо «Маленького принца» лидирующую позицию занимает «Гарри Поттер и философский камень». Некоторые книги при этом остаются в топ-20 в обоих графиках, как, например, «1984» или «Джейн Эйр» (хотя они меняют свои позиции). Некоторые отображаются только в одном из двух случаев, из чего можно сделать вывод, что не всегда самые высокие по рейтингу книги могут быть настолько же популярны.

plt.figure (figsize=(12, 8), facecolor='#FBEDE2')

top = df.sort_values (by='id', ascending=True).head (20) diagram = sns.barplot (x='Название_ру', y='id', data = top, palette=my_colors, hue='title', legend=False)

diagram.set_facecolor ('#FBEDE2')

plt.xticks (rotation=45, ha='right', fontsize=10)

font_path = '/content/EDUCATIONALGOTHIC-REGULAR.OTF' custom_font = fm.FontProperties (fname=font_path) title_font = fm.FontProperties (fname=font_path, size=20)

Облако слов

Original size 2364x1202

Чтобы конкретнее узнать, о чём самые популярные для обмена книги, я воспользовалась облаком слов и выявила самые частые слова, которые встречаются в тегах к произведениям. Оказалось, что больше всего для обмена предпочитают классические книги, связанные с романами, историей и волшебством. При этом приключения не так сильно популярны. Из 990 книг, только у 37 есть этот тэг.

words = list (df['tags'].str.split (', ')) words = [word for sublist in words for word in sublist] amount = {} for x in words: if x in amount: amount[x] += 1 else: amount[x] = 1 sorted (list (amount.items ()), key = lambda x: -x[1])[: 20] frequencies = dict (amount)

from wordcloud import WordCloud wordcloud = WordCloud (width=900, height=450, background_color='#FBEDE2', color_func=my_color_func, font_path=font).generate_from_frequencies (frequencies)

plt.figure (figsize=(15, 10)) plt.imshow (wordcloud, interpolation='bilinear') plt.axis («off») plt.show ()

График рассеивания

Original size 2018x1136

Мне стало также интересно, зависит ли количество страниц в книгах от возрастной категории, для которой они предназначены. Исходя из графика видно, что большая часть произведений сосредоточена в районе от 200 до 600 страниц. При этом действительно есть некоторая зависимость страниц от возраста. Все, содержащие более 800 страниц относятся к взрослой категории. Детские книги в основном доходят до 400 страниц, хотя и есть единицы, доходящие практически до 800. Книги для молодёжи по количеству страниц занимают среднюю позицию.

import seaborn as sns

translation2 = { «Adult»: «Взрослые», «Children»: «Дети», «Young Adult»: «Молодёжь и подростки"}

df['категория'] = df['age_category'].map (translation2)

df.groupby ('категория')['pageCount'].mean ()

plt.figure (figsize=(12, 6), facecolor='#FBEDE2')

sns.scatterplot (data=df, x='pageCount', y='rating_average', hue='категория', palette=my_colors, alpha=0.6)

Круговая диаграмма

Original size 990x832

Среди самых популярных авторов, книгами которых люди обмениваются оказались Стивен Кинг, Терри Пратчетт, и Дж. К. Роулинг. Этих писателей объединяет век, в котором они творили (19 век), а также они — выходцы из англоязычных стран.

author_counts = df['автор'].value_counts ()

top_authors = author_counts.head (10)

others_count = author_counts.iloc[10:].sum () if others_count > 0: top_authors['Другие авторы'] = others_count

plt.figure (figsize=(12, 10), facecolor='#FBEDE2')

plt.pie (top_authors, labels=top_authors.index, autopct='%1.1f%%', startangle=140, colors=my_colors)

plt.title ('Самые популярные авторы', color='#401801', fontproperties=title_font, fontsize=15, pad=20)

plt.axis ('equal')

plt.show ()

Тепловая карта

Original size 1856x1762

И последний вопрос, который я хотела выяснить: насколько часто книги из датасета, имеющие статус бестселлера имеют также и экранизацию. Почти все книги, кроме 4 имели статус бестселлера, однако экранизирована было только примерно две трети от общего количества. Несмотря на это, большинство книг из списка имеют снятые по ним фильмы. Это увеличивает популярность произведения и наслышанность о нём в обществе.

df['бестселлер'] = df['bestseller_status'].replace (translation4) df['фильм'] = df['adapted_to_movie'].replace (translation4)

ct = pd.crosstab (df['бестселлер'], df['фильм'])

plt.figure (figsize=(12, 10), facecolor='#FBEDE2')

sns.heatmap (ct, annot=True, fmt='d', cmap=my_cmap)

plt.show ()

Заключение

Таким образом, в результате анализа было выяснено, что самой популярной книгой на основе датасета является «Гарри Поттер и философский камень», а самый популярный автор — Стивен Кинг. Чаще всего люди обмениваются классическими книгами, содержащими в себе большое количество тем, в том числе и «вечных». Почти все книги, вошедшие в датасет — бестселлеры, но не все имеют экранизацию. А также я ещё раз нашла подтверждение тому, что при выборе книги для какой-то конкретной возрастной категории, нужно учитывать её объём.

Инструменты: Google Colab — создание кода и графиков Leonardo.ai — генерация картинки для обложки Upscayl — улучшение качества изображений Chat gpt — помощь в коде

Блокнот и датасет