1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| import io, csv
data = '''
Nclient Date Item Qty
1 20180125 A 2
1 20180215 A 3
1 20180305 B 1
1 20180305 C 4
1 20180501 B 3
2 20180305 D 5
2 20180220 A 4
2 20180220 C 1
3 20180305 D 5
3 20180425 B 4
3 20180220 A 1
4 20180125 B 2
4 20180215 B 11
4 20180305 A 1
4 20180305 D 1
4 20180501 C 1
'''
clients = dict()
with io.StringIO(data.strip()) as f :
reader = csv.DictReader(f, dialect='excel-tab')
for row in reader :
dico = dict(
date=int(row['Date']),
item=row['Item'],
quantite=int(row['Qty']),
)
clients.setdefault(int(row['Nclient']), []).append(dico)
class StatClient :
def __init__(self, client) :
self._client = client
def totalAchats(self) :
return len(self._client)
def totalArticles(self, article=None) :
if article is None :
return sum(d['quantite'] for d in self._client)
return sum(d['quantite'] for d in self._client if d['item'] == article)
def datePremierAchat(self) :
return sorted(d['date'] for d in self._client)[0]
def dateDernierAchat(self) :
return sorted(d['date'] for d in self._client)[-1]
def dernierAchat(self) :
return sorted(clients[1], key=lambda d: d['date'])[-1]['item']
def typeArticles(self) :
return sorted(set(d['item'] for d in self._client))
statClient_1 = StatClient(clients[1])
print('nombre achats', statClient_1.totalAchats())
print('date 1er achat', statClient_1.datePremierAchat())
print('date dernier achat', statClient_1.dateDernierAchat())
print('dernier article acquis', statClient_1.dernierAchat())
print('total articles acquis', statClient_1.totalArticles())
print('total articles "A" acquis', statClient_1.totalArticles('A'))
print('Types d\'articles acquis', statClient_1.typeArticles()) |
Partager