导语:给你这样一份数据,来自收银台记账数据,你能提取什么信息?有多大价值?找出这样的信息需要多久时间?

如果使用自动化工具,几十行python代码,能做什么?

首先,导入数据集:

import pandas as pd
import numpy as np

flies = 'input.csv'
data=pd.read_csv(flies,encoding="gbk")

对大类分组,计算销售金额:

a=[]  #创建空list来保存数据
b=[]

for name, group in data.groupby(['大类名称']):
  a.append(name)
  b.append((group['销售金额'].sum()))
print(a)  #验证大类名称
data_21={'名称':a,'金额':b}  #创建一个数据集来保存
data_21=pd.DataFrame(data_21)
data_21.to_csv('putout1.csv')  #输出为csv

对中类别,是否促销分组,计算销售金额:

a=[]
b=[]

for name, group in data.groupby(['中类名称', '是否促销']):  #对两个列表进行分组
    a.append(name)
    b.append((group['销售金额'].sum()))
print(a)
print(b)
data_22={'名称':a,'金额':b}
data_22=pd.DataFrame(data_22)
data_22.to_csv('putout2.csv')

销售日期转化为序列,便于计数:

b=data['销售日期']
print(b.count())

b1=1
s=1
tianshu=[]

for i in range(0,b.count()-1):  #如果两个序列前后不一样则认为是新的一天
    if b[i]==b[i+1]:
       tianshu.append(b1)
    else:
        b1=b1+1
    tianshu.append(b1)
print(tianshu)
data['天数']=tianshu  #将新生成的天数序列加入data数据中

生成周序列:

zhoushu=[]
zhou=1
for i in data['天数']:  #每隔7天为新的一周数
  if i <= 7*zhou:
    zhoushu.append(zhou)
  else:
    zhou=zhou+1
    zhoushu.append(zhou)
# print(zhoushu)
data['周数']=zhoushu

统计商品一周销售金额:

a=[]
b=[]
for name, group in data.groupby(['商品类型', '周数']):
  a.append(name)
  b.append((group['销售金额'].sum()))
print(a)
print(b)

统计顾客每月销售额,消费天数:

jine=[]
guke=[]

for name, group in data.groupby(['顾客编号', '销售月份']):#月份也可以用2015-01来表示
  guke.append(name)
  jine.append((group['销售金额'].sum()))
  print(list(name))
  print('本月消费天数为:',len((set((group['天数']).tolist()))))
  print('销售金额为:',(group['销售金额'].sum()))

看看结果:

 有了数据,就可以很轻松的绘制各类图表,实现分析结果的可视化。

 自己动手试一下吧,样本集:

链接:https://pan.baidu.com/s/1gdQGaqq_g-BB1bkGKZtaaA?pwd=4is5 
提取码:4is5 

补充tip:

groupby()分组函数

       任何分组(groupby)操作都涉及原始对象的以下操作之一:

  • 分割对象
  • 应用一个函数
  • 结合的结果

        在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数。在应用函数中,可以执行以下操作 :

  • 聚合  计算汇总统计
  • 转换  执行一些特定于组的操作
  • 过滤  在某些情况下丢弃数据
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐