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