接上篇,我们继续使用Pandas对电商购物用户行为进行数据分析。
一、增加单价一列,看看价格最高与最低的商品
df['single_price']=df['price']/df['quantity']df
1.1 找到单价最贵的20件商品
#找到单价最贵的商品df1=df.sort_values(by='single_price',ascending=False)df1[:10]
单价前20名,清一色的Technology,清一色的电子产品,呵呵呵。1.2 找到单价最便宜的20件商品
df1[-20:]
单价排名后20名,清一色的Food & Beverage,清一色食品饮料
二、支付方式统计分析
dfp=df.groupby('payment_method').agg({'price':'sum'})dfp
画个饼图:
银行卡支付最高,微信支付最低。三、数据集中顾客购买时间统计将时间列变为datetime格式。
#转换时间为datetime格式from datetime import datetimedf['invoice_date']=df['invoice_date'].apply(lambda x : datetime.strptime(x,"%d/%m/%Y"))
按时间列聚合,并统计购买行为次数,同时做相应的列重命名及index重命名。
#按时间列进行聚合并统计相应购买行为次数。dfd = df.groupby('invoice_date').agg({'invoice_date':'count'})dfd=dfd.rename(columns={'invoice_date': 'count1'})dfd.sort_values(by='count1',ascending=False)dfd=dfd.reset_index()dfd
画个折线图看看:
import matplotlib.pyplot as pltfrom matplotlib.pyplot import rcParamsimport numpy as np rcParams['font.sans-serif'] = ['SimHei']rcParams['axes.unicode_minus'] = False# 绘制折线图plt.figure(figsize=(10, 6))plt.plot(dfd['invoice_date'].to_numpy(), dfd['count1'].to_numpy(), marker='o') # marker='o' 会在每个数据点上绘制一个圆圈plt.title('数据集每日的购物数量统计')plt.xlabel('日期')plt.ylabel('数量')plt.grid(True)plt.show()
这一个数据集中每日的消费者购物数量是均衡的,没有爆量的结果,看来数据集的编写者是用心筛选过的 。未完待续!