はじめに: このようなデータが与えられた場合、レジの会計データから、どのような情報を抽出できますか? どれくらいの価値がありますか?そのような情報を見つけるのにどれくらいの時間がかかりますか?
自動化ツールを使用すると、数十行の 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
1週間の商品の販売額を数える:
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() グループ化関数
groupby ( groupby ) 操作には、元のオブジェクトに対する次の操作のいずれかが含まれます。
- 分割オブジェクト
- 関数を適用する
- 組み合わせた結果
多くの場合、データをセットに分割し、各サブセットに何らかの関数を適用します。適用関数では、次のことができます。
- コンピュートの要約統計の集計
- Transform はいくつかのグループ固有の操作を実行します
- フィルタリングにより、特定の状況下でデータが破棄される