Анализ данных 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, теперь ваша очередь играть с набором данных.