Я новичок в программировании Python, поэтому я делаю кучу тренировочных упражнений, чтобы улучшить свои навыки. Поэтому я хотел бы показать вам, ребята, мой подход на этом примере, и если бы вы могли сообщить мне, что вы думаете, я был бы признателен!
Упражнение: Учитывая список идентификаторов клиентов, я должен сегментировать их по следующие логики c:
- Если ID кратен 7 и кратен 3, то сегмент 'A'
- Если ID кратен 3, то сегмент 'B'
- Если ID кратен 7, то сегмент 'C'
- Остальное, сегмент 'D'
Что я сделал:
from collections import Counter
from datetime import datetime
import os.path
import json
date = datetime.today().strftime('%Y-%m-%d')
customer_indices = [list of IDs] ex: [123981,12398,123157,12371...]
def segment(customer):
if customer % 7 == 0 & customer % 3 == 0:
return 'A'
elif customer % 7 == 0:
return 'B'
elif customer % 3 == 0:
return 'C'
else:
return 'D'
def split_customers(customers):
a = []
b = []
c = []
d = []
for customer in customers:
if customer % 7 == 0 & customer % 3 == 0:
a.append(customer)
elif customer % 7 == 0:
b.append(customer)
elif customer % 3 == 0:
c.append(customer)
else:
d.append(customer)
return a,b,c,d
segmentation = [segment(customer) for customer in customer_indices]
print('Segmentation list: ')
print(segmentation)
print('\n')
segmentation_counter = Counter(segmentation)
print('Count of clients per segment: ')
print(f"A: {segmentation_counter['A']}")
print(f"B: {segmentation_counter['B']}")
print(f"C: {segmentation_counter['C']}")
print(f"D: {segmentation_counter['D']}")
a, b, c, d = split_customers(customer_indices)
main_dict = {'Date': date,
'Segmentation': {
'A Clients': {
'Count': segmentation_counter['A'],
'Customers': a},
'B Clients': {
'Count': segmentation_counter['B'],
'Customers': b},
'C Clients': {
'Count': segmentation_counter['C'],
'Customers': c},
'D Clients': {
'Count': segmentation_counter['D'],
'Customers': d}}}
main_list = [main_dict]
if not os.path.exists('Data/customer_segmentation.json'):
os.makedirs('Data')
if os.path.isfile('Data/customer_segmentation.json'):
with open('Data/customer_segmentation.json') as file:
data = json.load(file)
file.close()
data.append(main_dict)
with open('Data/customer_segmentation.json', 'w') as file:
json.dump(data, file, indent=2)
file.close()
else:
file = open('Data/customer_segmentation.json', 'w')
json.dump(main_list, file, indent=2)
file.close()
Исходный код сначала имеет функцию с открытым текстом, которая извлекает список идентификаторов клиента из текста в том же каталоге, что и этот .py
Основная идея этого решения состоит в том, чтобы выполнить это каждый день, поэтому файл json будет обновляться новым списком для каждого дня его запуска, поэтому, если я захочу провести анализ роста сегментации, это будет довольно легко сделать.
Что ты думаешь?