zoukankan      html  css  js  c++  java
  • 【数据分析&数据挖掘】连锁超市数据分析案例

     1 import pandas as pd
     2 
     3 # 加载数据
     4 data = pd.read_csv("./order.csv", encoding="ansi")
     5 # print("data: 
    ", data)
     6 print("data的列索引: 
    ", data.columns)
     7 
     8 # 销量中存在销量为0, 或者销量<0的数据
     9 # 删除不正确的数据
    10 # ——保留销量>0的数据据
    11 bool_index = data.loc[:, "销量"] > 0
    12 data = data.loc[bool_index, :]
    13 
    14 # 1、哪些类别的商品比较畅销?
    15 # 按照类别id进行分组, 统计销量的sum
    16 # sort_values 排序,默认是升序排序
    17 # by 指定按照某列的数据进行排序
    18 # ascending = True 升序
    19 res = data.groupby(by="类别ID")["销量"].sum().sort_values(ascending=False).head(10)
    20 res = pd.pivot_table(
    21     data=data,
    22     index="类别ID",
    23     # columns="类别ID",
    24     values="销量",
    25     aggfunc="sum"
    26 ).sort_values(by="销量", ascending=False).head(10)
    27 print("res: 
    ", res)
    28 
    29 # 2、哪些商品比较畅销
    30 res = data.groupby(by="商品ID")["销量"].sum().sort_values(ascending=False).head(10)
    31 res = pd.pivot_table(
    32     data=data,
    33     index="商品ID",
    34     values="销量",
    35     aggfunc="sum"
    36 ).sort_values(by="销量", ascending=False).head(10)
    37 print("res: 
    ", res)
    38 
    39 # 3、求不同门店的销售额占比
    40 # (1)先计算每一个商品的销售额
    41 data.loc[:, "销售额/单个商品"] = data.loc[:, "单价"] * data.loc[:, "销量"]
    42 
    43 # (2)按照门店编号进行分组,统计每个商品的销售额的sum和
    44 all_ = data.groupby(by="门店编号")["销售额/单个商品"].sum()
    45 
    46 print(all_)
    47 # (3)计算占比
    48 print("各个门店的占比为:", (all_ / all_.sum()).apply(lambda x: format(x, ".2%")))
    49 
    50 
    51 # 4、哪个时间段是超市的客流高峰期?
    52 # (1)因为多个商品对应一个订单ID,每一个订单ID为一个人,需先对ID进行去重
    53 # 数据的去重
    54 # subset 需要去重的列
    55 # inplace = True 修改原数据
    56 data.drop_duplicates(subset='订单ID', inplace=True)
    57 print("去重之后的数据: 
    ", data)
    58 
    59 # (2)获取小时属性
    60 data.loc[:, "成交时间"] = pd.to_datetime(data.loc[:, "成交时间"])
    61 
    62 data.loc[:, "hour"] = [i.hour for i in data.loc[:, "成交时间"]]
    63 
    64 print(data)
    65 
    66 # (3)按照小时分组,统计每个小时内订单的数量
    67 res = data.groupby(by="hour")["订单ID"].count().sort_values(ascending=False)
    68 
    69 print("res: 
    ", res)
    70 
    71 # sort_index() 按照行索引的大小进行排序
  • 相关阅读:
    GMA Round 1 数列求单项
    GMA Round 1 双曲线与面积
    多线程环境中安全使用集合API(含代码)
    使用synchronized获取互斥锁的几点说明
    ThreadPoolExecutor线程池
    线程状态转换
    volatile关键字
    守护线程与线程阻塞的四种情况
    线程挂起,恢复与终止
    线程中断
  • 原文地址:https://www.cnblogs.com/Tree0108/p/12116085.html
Copyright © 2011-2022 走看看