Bonsoir,

J'essaie d'obtenir cela:

Nom : Capture d’écran 2021-01-31 174453.png
Affichages : 87
Taille : 14,4 Ko

un regroupement par société et numéro de compte à partir de python sans succès

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
import tarfile
import pandas as pd
 
with tarfile.open("C:/Users/ericm/Documents/EE/V2_GLFI.tar.gz", "r:*") as tar:
 
    for n in tar.getnames():
 
        if n.endswith('.TXT'):
 
            try:
 
                result = [(0, 4), (181, 182), (504, 505), (515, 530), (637, 647)]
 
                df = pd.read_fwf(tar.extractfile(n),colspecs=result, header=None, names=['Societe', 'Statut', 'Code','Montant','Compte'],encoding="utf_8_sig")            
 
                df = df.assign(Somme = lambda x: x.Montant * x.Code.replace({'H' : 1, 'S' : -1}))
 
                sansStatut = pd.isnull(df["Statut"])
 
                nom = n.replace(".TXT",".csv")
 
                filename = 'C:/Users/ericm/Documents/NOTEBOOK/PNS/data/' + nom
 
                df[sansStatut].loc[:,['Societe','Compte','Somme']].to_csv(filename,index=False)
 
            except pd.errors.EmptyDataError:
 
                continue

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 
import dask.dataframe as dd
 
ddf = dd.read_csv('data/*.csv')
ddf

Nom : Capture d’écran 2021-01-31 175001.png
Affichages : 74
Taille : 9,7 Ko

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 
ddf.to_parquet('data/2021-01.parquet', engine='pyarrow')
ddf = dd.read_parquet('data/2021-01.parquet', engine='pyarrow')
ddf
Nom : Capture d’écran 2021-01-31 175125.png
Affichages : 73
Taille : 6,6 Ko

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
 
resultat = ddf['Somme'].sum().compute()
 
if resultat < 10**-3:
    resultat = 0
 
print ("Totalisation Somme => " , resultat)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 
ddf.groupby[('Societe', 'Compte')].Somme.sum().compute()
Nom : Capture d’écran 2021-01-31 175603.png
Affichages : 69
Taille : 8,9 Ko

J'ai essayé de nombreuses possibilités sans aucune réussite.

Merci pour votre aide

Eric