Анализ данных Amazon 50 Best Seller с использованием Plotly, Seaborn и Matplotlib.

скачать набор данных с kaggle:



импортировать все библиотеки

import pandas as pd
import numpy as np
import matplotlib as plt
import seaborn as sns
import plotly.offline as pyo
import plotly.graph_objs as go
import plotly.express as px
%matplotlib inline

скачайте данные с kaggle, если хотите попрактиковаться.

теперь мы читаем файл csv через panda.

df=pd.read_csv("amazon-top-50-bestselling-books-2009-2019/bestsellers.csv")
#show only 10 rows 
df.head(10)
# show info about data 
df.info()
# next 
#Finding the distribution of Fiction vs Non Fiction books over years
sns.lineplot(x='Year',y='Reviews',hue='Genre',data=df)

Вывод

<AxesSubplot:xlabel='Year', ylabel='Reviews'>

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

#Prices of books across years for Fiction vs Non Fiction
g=sns.FacetGrid(data=df,col='Genre')
g.map(sns.lineplot,'Year','Price')

Вне:

<seaborn.axisgrid.FacetGrid at 0x7f7bb8d8fa10>

Средняя цена книг.

#Average Price of books
df.groupby('Genre').agg({"Price":"mean"})
# compare the user rating for Genre
g=sns.FacetGrid(data=df,col='Genre')
g.map(sns.histplot,'User Rating',kde=False,bins=50)

"Вывод:"

<seaborn.axisgrid.FacetGrid at 0x7f7bb8cdb9d0>

нет рейтинга ниже 3 для документальной литературы.

rating=df[df['User Rating']>4]
print("Number of Books with Rating 4 + is",rating['Name'].count())
Number of Books with Rating 4 + is 529
# get the author with their average rating for the books published over the years
avg_rating=df.groupby(['Genre','Author']).agg({"User Rating":"mean","Reviews":"sum","Price":"mean"}).sort_values(["User Rating","Reviews"]).reset_index()
# taking the mean of user rating over the year, we'll find the count of authors by their user rating
avg_rating['User Rating']=avg_rating['User Rating'].round(1)
sns.histplot(avg_rating["User Rating"],kde=False)

Вывод:

<AxesSubplot:xlabel='User Rating', ylabel='Count'>

Приведенная выше гистограмма предполагает, что количество авторов со средним рейтингом 4,8 является самым высоким.

avg_rating["Rank"]=avg_rating.groupby('Genre')["User Rating"].rank("dense",ascending=False)
#top Authors with the highest rating
rank1=avg_rating[avg_rating.Rank==1]
fig=px.bar(rank1,x="Author",y="User Rating",color="Genre",barmode="group",title="Authors with Highest Rating")
fig.show()

OKKK, теперь ваша очередь играть с набором данных.

Посмотреть еще учебник.