In [77]:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
In [ ]:
'''钢炮'''
path = '/home/zongyi/bimbo_data/'
clients = pd.read_csv(path+'cliente_tabla.csv')
In [78]:
'''MAC'''
path = '/Users/zonemercy/jupyter_notebook/bimbo_data/'
clients = pd.read_csv(path+'cliente_tabla.csv')
In [79]:
clients['OXXO'] = clients['NombreCliente'].str.contains('OXXO')
clients['ARTELI'] = clients['NombreCliente'].str.contains('ARTELI')
clients['ALSUPER'] = clients['NombreCliente'].str.contains('ALSUPER')
clients['BODEGA'] = clients['NombreCliente'].str.contains('BODEGA')
clients['CALIMAX'] = clients['NombreCliente'].str.contains('CALIMAX')
clients['XICANS'] = clients['NombreCliente'].str.contains('NEZ|JOSE|NZO|TES')
clients['ABARROTES'] = clients['NombreCliente'].str.contains('ABARROTES')
clients['CARNICERIA'] = clients['NombreCliente'].str.contains('CARNICERIA')
clients['FRUTERIA'] = clients['NombreCliente'].str.contains('FRUTERIA')
clients['DISTRIBUIDORA'] = clients['NombreCliente'].str.contains('DISTRIBUIDORA')
clients['ELEVEN'] = clients['NombreCliente'].str.contains('SEVEN|ELEVEN')
clients['HOTEL'] = clients['NombreCliente'].str.contains('HOTEL')
clients['HOSPITAL'] = clients['NombreCliente'].str.contains('HOSPITAL|CLINICA')
clients['CAFE'] = clients['NombreCliente'].str.contains('CAFE')
clients['FARMACIA'] = clients['NombreCliente'].str.contains('FARMACIA')
clients['CREME'] = clients['NombreCliente'].str.contains('CREME')
clients['SUPER'] = clients['NombreCliente'].str.contains('SUPER')
clients['COMOD'] = clients['NombreCliente'].str.contains('COMOD')
clients['MODELOR'] = clients['NombreCliente'].str.contains('MODELOR')
In [ ]:
In [80]:
clients[clients['NombreCliente'].str.contains('MODELOR')]
Out[80]:
Cliente_ID
NombreCliente
OXXO
ARTELI
ALSUPER
BODEGA
CALIMAX
XICANS
ABARROTES
CARNICERIA
...
DISTRIBUIDORA
ELEVEN
HOTEL
HOSPITAL
CAFE
FARMACIA
CREME
SUPER
COMOD
MODELOR
6491
19345
MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
11700
31453
MODELORAMA BONANZA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
13187
35254
MISC MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
13188
35254
MISC MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
13883
36947
MODELORAMA SOLIDARIDAD
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
15449
40759
MODELORAMA REVOLUCION
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
16072
42199
MODELORAMA EL BOTE
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
16875
44144
MODELORAMA 21
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
19273
50026
MODELORAMA LA UNION
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
20713
53400
MODELORAMA ESCOBEDO
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
20934
53906
MODELORAMA TIJUANA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
22186
56977
MODELORAMA NAUCALPAN
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
23706
60199
MODELORAMA CONEJO
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
24330
61766
MODELORAMA COPERNICO
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
25412
64219
MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
25752
65126
MODELORAMA EL RULAS
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
29973
76038
MODELORAMA PORTICO
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
31060
78869
MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
33159
84146
MODELORAMA PUEBLA CENTRO
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
34313
86593
MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
35750
90012
MODELORAMA 106
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
35763
90053
MODELORAMA 138
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
36020
90663
MODELORAMA NIO ARTILLERO
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
37879
94332
MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
38269
95642
MODELORAMA 2
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
38538
96318
MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
38794
96913
MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
39250
97881
MODELORAMA ABARROTES
False
False
False
False
False
True
True
False
...
False
False
False
False
False
False
False
False
False
True
40069
99447
MODELORAMA CHAPALA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
40415
100108
MODELORAMA PEPE
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
622167
2500112
MODELORAMA 146
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
622317
2500957
MODELORAMA 31
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
622361
2501090
MODELORAMA 504 SANTA CRUZ
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
622428
2501258
MODELORAMA DULCES NOMBRES
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
622447
2501354
MODELORAMA PEREZ
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
623603
3011166
MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
628825
3553870
MODELORAMA GRANJAS BANTHI
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
866859
4702949
DEPOSITO MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
909146
5893499
MODELORAMA TECPAN
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
912491
7353305
MODELORAMA MR ANDY
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
915538
7733806
MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
916429
7763595
MODELORAMA OROZCO
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
916953
7782985
MODELORAMA TENTACIONES
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
923209
8008419
TIENDA DE AUTOSERVICIO MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
924478
8055046
MODELORAMA AGE CORONA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
926083
8118764
MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
926253
8125519
MODELORAMA DULCE
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
928813
8226811
MODELORAMA LA GLORIETA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
928839
8227716
MODELORAMA LOS VOLCANES
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
930781
8356544
TIENDA EXTRA MODELORAMA ARBOLADA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
930822
8358263
MODELORAMA MERIDA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
930918
8375983
MODELORAMA SUB AGENCIA CAYACO
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
930922
8376019
MODELORAMA AGENCIA ACAPULCO
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
930923
8376043
MODELORAMA PIE DE LA CUESTA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
931207
8401214
MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
932335
9487591
MII SUPER MODELORAMA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
True
False
True
932479
9499483
MODELORAMA AGUASCALIENTES
False
False
False
False
False
True
False
False
...
False
False
False
False
False
False
False
False
False
True
932902
9532212
MODELORAMA AGENCIA GUADALUPE
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
933182
9553201
MODELORAMA LA UVA
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
934417
9670069
MODELORAMA CONSTITUCION
False
False
False
False
False
False
False
False
...
False
False
False
False
False
False
False
False
False
True
1338 rows × 21 columns
In [81]:
clients['UNKN'] = clients['OXXO']|clients['ARTELI']|clients['ALSUPER']|clients['BODEGA']|clients['CALIMAX']|clients['XICANS']|clients['ABARROTES']|clients['CARNICERIA']|clients['FRUTERIA']|clients['DISTRIBUIDORA']|clients['ELEVEN']|clients['HOTEL']|clients['HOSPITAL']|clients['CAFE']|clients['FARMACIA']|clients['CREME']|clients['SUPER']|clients['COMOD']|clients['MODELOR']
In [82]:
clients['UNKN'] = ~clients['UNKN']
In [83]:
del clients['NombreCliente']
In [84]:
clients = clients.astype(int)
In [85]:
clients.to_csv(path+'clients_cluster.csv',index=False)
In [86]:
clients=pd.read_csv(path+'clients_cluster.csv')
clients.head()
Out[86]:
Cliente_ID
OXXO
ARTELI
ALSUPER
BODEGA
CALIMAX
XICANS
ABARROTES
CARNICERIA
FRUTERIA
...
ELEVEN
HOTEL
HOSPITAL
CAFE
FARMACIA
CREME
SUPER
COMOD
MODELOR
UNKN
0
0
0
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
0
2
2
0
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
1
3
3
0
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
1
4
4
0
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
1
5 rows × 21 columns
In [ ]:
In [71]:
for i in range(20):
clients.iloc[:, [i+1]] = clients.iloc[:, [i+1]] * (i+1)
In [75]:
clients['c_cluster'] = clients.iloc[:,1:].sum(axis=1)
# clients.iloc[:,1:]
In [76]:
clients[clients['c_cluster']!=1]
Out[76]:
Cliente_ID
OXXO
ARTELI
ALSUPER
BODEGA
CALIMAX
XICANS
ABARROTES
CARNICERIA
FRUTERIA
...
HOTEL
HOSPITAL
CAFE
FARMACIA
CREME
SUPER
COMOD
MODELOR
UNKN
c_cluster
22
21
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
82
2003
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
682
3640
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
879
4269
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
1253
5457
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
1
0
0
0
3
1349
5683
0
0
0
0
0
1
0
0
0
...
0
0
0
0
0
1
0
0
0
2
1364
5719
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
1371
5739
0
0
0
0
0
0
0
1
0
...
0
0
0
0
1
0
0
0
0
2
1647
6470
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
1982
7404
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
2171
7971
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
2238
8131
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
2834
9841
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
2966
10387
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
2974
10400
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
2983
10425
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
2984
10426
0
0
0
0
0
1
0
0
0
...
0
0
0
0
0
0
0
0
0
2
2990
10433
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
3000
10457
1
0
0
0
0
1
0
0
0
...
0
0
0
0
0
0
0
0
0
2
3020
10511
0
0
0
0
0
0
0
0
0
...
0
0
0
1
0
1
0
0
0
2
3030
10530
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
3032
10533
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
3041
10559
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
3049
10572
0
0
0
0
0
0
0
1
0
...
0
0
0
0
0
1
0
0
0
2
3080
10633
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
3081
10636
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
3100
10679
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
3102
10683
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
3115
10706
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
3228
10878
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
932555
9503663
0
0
0
0
0
0
0
0
0
...
0
0
0
1
0
1
0
0
0
2
932616
9507954
0
0
0
0
0
1
0
0
0
...
0
0
0
1
0
0
0
0
0
2
932807
9521518
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
932979
9537174
0
0
0
0
0
0
0
0
0
...
0
0
0
1
0
1
0
0
0
2
933110
9550095
0
0
0
0
0
0
0
1
0
...
0
0
0
0
0
1
0
0
0
2
933200
9555485
0
0
0
0
0
1
0
0
0
...
0
0
0
0
0
1
0
0
0
2
933205
9556365
0
0
0
0
0
0
0
0
0
...
1
0
0
0
0
0
0
0
0
2
933376
9570639
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
933561
9589141
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
933575
9589834
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
933595
9591391
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
933602
9596409
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
933643
9600112
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
933652
9600423
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
933911
9622812
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
934075
9636053
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
934125
9638226
1
0
0
0
0
1
0
0
0
...
0
0
0
0
0
0
0
0
0
2
934138
9644654
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
934213
9647825
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
934380
9668415
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
934495
9678723
0
0
0
0
0
1
0
0
0
...
0
0
0
0
0
0
1
0
0
2
934587
9685191
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
934890
9709624
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
934915
9710471
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
934934
9711023
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
934946
9711573
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
934990
9718202
0
0
0
0
0
1
0
0
0
...
0
0
0
1
0
0
0
0
0
2
935253
9754063
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
0
0
0
0
2
935326
9881395
0
0
0
0
0
1
0
0
0
...
0
0
0
1
0
0
0
0
0
2
935358
11693264
0
0
0
0
0
1
1
0
0
...
0
0
0
0
0
1
0
0
0
3
34809 rows × 22 columns