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 [ ]:


有1%的的分类是复用的 如何节约内存?


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