其他
520情人节,不懂送女朋友什么牌子的口红?没关系!Python 数据分析告诉你。
作 者:Huang supreme、print('I love u {}'.format(lcw)
编 辑:JackTian
微信公众号:杰哥的IT之旅(ID:Jake_Internet)
一、案例说明
1、案例背景
2、口红销量分布情况。
3、销量前10的口红有哪些?
4、销量前10的店铺。
5、商品价格和销量的关系。
2、任务说明
3、数据字段的说明
4、数据分析的流程
二、数据预处理
数据清洗
1、首先从csv文件中导入数据
import matplotlib.pyplot as plt
#读取数据
dataframe = pd.read_csv('jd_data.csv',encoding = 'gb18030')#这里不能使用utf-8
print(dataframe.shape)
(3816, 6)
共有3816行,6列(上面有这六个字段说明)
2、缺失值处理
data.head()
print(data.shape)
从这里可以看出还是有些缺失值的
这里偷一下懒,使用比较简便的删除的方式处理缺失值,毕竟缺失的不是很多。
data.dropna(axis=0, inplace=True)
# 对删除后缺失值后的数据集,再次进行缺失值统计
data.isnull().sum(axis=1)
数据转换
1、将评论的+和万字修改
num = str(comm_colum).split('+')[0]
if '万' in num:
if '.' in num :
num = num.replace('.','').replace('万','000')
else:
num = num.replace('.','').replace('万','0000')
return num
dataframe['comment'] = dataframe['comment'].apply(lambda x: dealComment_num(x))
#转换成int类型
dataframe['comment'] = dataframe.comment.astype('int')
data = dataframe.drop('comment',axis = 1)
print(data.head(10))
三、数据分析
1、口红价格分布区间
import matplotlib.pyplot as plt
#读取数据
data = pd.read_csv('jd_data.csv',encoding = 'gb18030')
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.figure(figsize=(10,8))
price = data[data['price'] < 1000]
plt.hist(price['price'], bins=10, color='brown')
plt.xlabel('价格')
plt.ylabel('商品数量')
plt.title('价格商品分布')
plt.show()
通过上图,可以很清楚看到:
2、销量分布情况
sale_num = data[data['comment'] > 100]
plt.figure(figsize=(10,8))
#print(len(sale_num)/len(data)) #查看下大致的区间分布
plt.hist(sale_num['comment'], bins=20, color='blue')
plt.xlabel('销量')
plt.ylabel('数量')
plt.title('销量情况')
plt.show()
3、销售前10的口红
#抽取商品标题的简略信息
def get_title(item):
title = item.split(' ')[0]
return title
data['small_name'] = data['name'].apply(lambda x: get_title(x))
data1 = data.drop('name',axis = 1)
top10Lipstick = data1.sort_values('comment',ascending=False)
print(top10Lipstick.head(10))
title = top10Lipstick['small_name'][:10]
sale_num = top10Lipstick['comment'][:10]
plt.figure(figsize=(10,8),dpi = 80)
plt.bar(range(10),sale_num,width=0.6,color='red')
plt.xticks(range(10),title,rotation=45)
#plt.ylim((9,9.7)) #设置y轴坐标
plt.ylabel('数量')
plt.xlabel('标题')
plt.title('销量前10的糖果')
for x,y in enumerate(list(sale_num)):
plt.text(x,float(y)+0.01,y,ha='center')
3、【520礼物】迪奥(Dior)烈艳蓝金唇膏-哑光999# 3.5g 传奇红(口红 正红色 传奇红 赠精美礼盒)
4、销量前10的店铺
top_shop = data.groupby('shop_name')['comment'].sum().sort_values(ascending=False)[:10]
print(top_shop.head(10))
plt.figure(figsize=(10,8),dpi = 80)
top_shop.plot(kind = 'bar',color='red',width= 0.6)
plt.ylabel('数量')
plt.xlabel('店铺名')
plt.title('销量前10的店铺')
plt.xticks(rotation=45)
for x,y in enumerate(list(top_shop)):
plt.text(x,float(y)+0.1,y,ha='center')
plt.show()
5、商品价格和销量的关系
plt.scatter(data['price'],data['comment'], color='blue')
plt.xlabel('价格')
plt.ylabel('销量')
plt.title('价格、销量的散点分布')
plt.show()
可以看出:
四、总结
数据清洗,它是能分析出正确结果的保证;
如何挖掘数据不同维度间的联系等;
比如分析不同类型的店铺占比店铺;
不同类型的店铺之间的销量对比;
由于本次没有爬取评论数据,没有做情感分析;
m
」获取!2、“罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
3、利用 Python 进行多 Sheet 表合并、多工作簿合并、一表按列拆分
4、Python 自动化办公之"你还在手动操作“文件”或“文件夹”吗?"
5、当当网的羊毛被网友薅惨了!这一次到底又被薅了多少?
6、100天从 Python 小白到大神最良心的学习资源!关注微信公众号『杰哥的IT之旅』,后台回复“1024”查看更多内容,回复“微信”添加我微信。