导语:给你这样一份数据,来自收银台记账数据,你能提取什么信息?有多大价值?找出这样的信息需要多久时间?
如果使用自动化工具,几十行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
任何分组(groupby)操作都涉及原始对象的以下操作之一:
在许多情况下,我们将数据分成多个集合,并在每个子集上应用一些函数。在应用函数中,可以执行以下操作 :