import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rc("font",family='Songti SC')
plt.rcParams['axes.unicode_minus'] = False
plt.style.use('ggplot')
df = pd.read_csv('summer-products-with-rating-and-performance_2020-08.csv')
pd.set_option('Display.max_columns',None)
df.head()
#查看形状
df.shape
df.duplicated().sum()
df.drop_duplicates(inplace=True)
df.reset_index(inplace=True,drop=True)
df.dtypes
df.describe()
df.isnull().sum()
df.fillna(value='None',inplace=True)
#有多少商品的价格是低于指导价售卖和有多少商品的价格是高于指导价售卖的
#如何价格差额为正,说明此商品是高于指导价售卖的,如果为负,说明此商品是低于指导价售卖的
df['价格差额'] = df['price']-df['retail_price']
#每个商品的销售额
df['销售额']=df['price']*df['units_sold']
#价格差额的分布直方图
plt.figure(figsize=(10,7))
bins = np.arange(df['价格差额'].min(),df['价格差额'].max(),5)
plt.hist(df['价格差额'],
bins,
density= True,
color='pink',
label='价格差额频率分布直方图',
edgecolor='k',
)
plt.legend(fontsize=13)
plt.show()
#他们各自的商品数量有多少?
#(1)高于指导价售卖
greater_zero = df[df['价格差额']>0]
a = len(greater_zero)
#(2)按指导价售卖
equal_zero = df[df['价格差额']==0]
b = len(equal_zero)
#(3)低于指导价售卖
less_zero= df[df['价格差额']<0]
c=len(less_zero)
x= ['高于指导价','无价格变动','低于指导价']
y = [a,b,c]
plt.figure(figsize=(14,7))
plt.subplot(1,2,1)
plt.bar(x,y,
color='#FF6F61',
edgecolor='k')
plt.xticks(np.arange(3),x)
plt.ylabel('商品种类数量')
for x,y in enumerate(y):
plt.text(x,y+10,'%s' %y,ha='center')
#
plt.subplot(1,2,2)
a = greater_zero['销售额'].sum()
b = equal_zero['销售额'].sum()
c = less_zero['销售额'].sum()
list1=[a,b,c]
labels=['高于指导价商品的销售额','无价格变动商品的销售额','低于指导价商品的销售额']
plt.pie(x=list1,
labels=labels,
autopct='%0.1f%%')
plt.show()
#高于指导价和低于指导价的商品销售额区间分布情况怎么样
plt.figure(figsize=(12,12))
plt.subplot(2,1,1)
plt.hist(greater_zero['销售额'],bins=40,
edgecolor='k')
plt.ylabel('商品种类数量')
plt.xlabel('销售额')
plt.title('高于指导价的商品销售额的商品种类数量频数直方图')
plt.subplot(2,1,2)
plt.hist(less_zero['销售额'],bins=40,
edgecolor='k')
plt.xlabel('销售额')
plt.ylabel('商品种类数量')
plt.title('低于指导价的商品销售额的商品种类数量频数直方图')
plt.show()
#整体的销量情况
plt.figure(figsize=(10,7))
d=df['units_sold'].value_counts().sort_values().plot.barh()
plt.ylabel('销量')
plt.xlabel('商品种类')
plt.show()
#销量过1000的商品的所有信息
above_1k= df.iloc[:,:][(df.units_sold>=1000)]
#是否宣传
plt.figure(figsize=(15,8))
plt.subplot(2,2,1)
x1=above_1k.groupby('uses_ad_boosts')['title'].count()
plt.bar(x1.index, x1.values,color='#B4243C')
plt.xticks(np.arange(2),['否','是'])
plt.title('商品是否在平台上宣传过')
#销量过1000的商品的售卖价格是低于指导价还是高于指导价
plt.subplot(2,2,2)
#(1)高于指导价售卖
greater_zero = above_1k[above_1k['价格差额']>0]
a = len(greater_zero)
#(2)按原价销售
equal_zero = above_1k[above_1k['价格差额']==0]
b = len(equal_zero)
#(3)低于指导价售卖
less_zero= above_1k[above_1k['价格差额']<0]
c=len(less_zero)
i= ['高于指导价','等于指导价','低于指导价']
j = [a,b,c]
plt.bar(i,j,color='#B4243C')
plt.xticks(np.arange(3),i)
plt.ylabel('商品种类数量')
plt.title('商品指导价直方图')
#销量过1000的商品的评分,rating
plt.subplot(2,2,3)
plt.hist(above_1k['rating'],bins=10,color='pink',edgecolor='k')
plt.title('商品评分频数直方图')
#销量过1000商店的评分 merchant rating
plt.subplot(2,2,4)
plt.hist(above_1k['merchant_rating'],color='pink',edgecolor='k')
plt.title('商店评分频数直方图')
plt.show()
rate=df[df.rating<=2.5].reset_index(drop=True)
plt.figure(figsize=(13,7))
plt.hist(rate['units_sold'],bins=10,color='b')
plt.xlabel('销售量')
plt.ylabel('评分')
plt.title('评分为2.5以下商品销售量')
plt.show()
rate['转化率'] = rate['rating_count']/ rate['units_sold']
rate['转化率']=rate['转化率'].apply(lambda x: format(x, '.2%'))
rate
H = rate.iloc[:,-1][rate.units_sold==100].sort_values()
H.reset_index(inplace=True,drop=True)
H
plt.plot(H.index,H.values)
plt.xticks(np.arange(0,10))
plt.ylabel('转化率')
plt.title('销售量为100的商品的评价转化率')
plt.show()