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() 按照行索引的大小进行排序
  • 相关阅读:
    scanf和cin的返回值
    C++ STL中Map的按Key排序跟按Value排序
    name lookup of 'res' changed for new ISO 'res' scoping
    string中c_str()、data()、copy(p,n)函数的用法
    C中malloc的使用(转)
    codeforces 653B B. Bear and Compressing(dfs)
    codeforces 653A A. Bear and Three Balls(水题)
    hdu-5646 DZY Loves Partition(贪心)
    hdu-5645 DZY Loves Balls(水题)
    codeforces 655D D. Robot Rapping Results Report(拓扑排序+拓扑序记录)
  • 原文地址:https://www.cnblogs.com/Tree0108/p/12116085.html
Copyright © 2011-2022 走看看