Récupérer les contenus des logs comme Data Frame
Résolu/Fermé
FerhatYous
Messages postés
20
Date d'inscription
jeudi 24 février 2022
Statut
Membre
Dernière intervention
8 août 2022
-
Modifié le 1 mars 2022 à 16:17
FerhatYous Messages postés 20 Date d'inscription jeudi 24 février 2022 Statut Membre Dernière intervention 8 août 2022 - 1 mars 2022 à 20:15
FerhatYous Messages postés 20 Date d'inscription jeudi 24 février 2022 Statut Membre Dernière intervention 8 août 2022 - 1 mars 2022 à 20:15
A voir également:
- Récupérer les contenus des logs comme Data Frame
- App data - Guide
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Recuperer video youtube - Guide
- View recovery logs - Guide
- Comment récupérer un compte facebook piraté - Guide
1 réponse
mamiemando
Messages postés
33499
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
28 janvier 2025
7 818
1 mars 2022 à 16:47
1 mars 2022 à 16:47
Bonjour,
Je me demande si ça n'est pas juste le volume de donnée qui est trop grand. Tu peux essayer quelque chose comme ça :
Le problème c'est que comme l'explique cette discussion (et contrairement à ce qu'indique la documentation de
Du coup je me demande si dans ton cas passer par une
Après, si tes données sont vraiment extrêmement volumineuse et ne peuvent tenir en RAM, il faudra sans doute passer par une base de données (e.g. mysql).
Bonne chance
Je me demande si ça n'est pas juste le volume de donnée qui est trop grand. Tu peux essayer quelque chose comme ça :
import re import pandas as pd df_lines = None lines = [ 'a=" quelque chose1" b="autre chose" c="autre chose encore"', 'a=" quelque chose2" b="autre chose" c="autre chose encore"', 'a=" quelque chose3" b="autre chose" c="autre chose encore"', ] r = re.compile(r'(\w+)\s*=\s*"([^"]+)"') for line in lines: d = { k : [v] for k, v in r.findall(line) } df_line = pd.DataFrame(data=d) if df_lines is None: df_lines = df_line else: df_lines = df_lines.append(df_line) print(df_lines)
Le problème c'est que comme l'explique cette discussion (et contrairement à ce qu'indique la documentation de
pandas.DataFrame.append), cette méthode n'est pas en place (in place) ce qui dégrade les performances et tu risques d'avoir le même problème et donc il faudra moralement autant de mémoire vive que 2x la taille du log. Son remplaçant
pandas.concatsemble souffrir des mêmes limitations.
Du coup je me demande si dans ton cas passer par une
pandas.Dataframeest si adapté. Peut-être qu'il est aussi simple de manipuler directement une grosse liste de dictionnaires (ainsi tu ne consommes qu'une fois la taille du log) ?
import re from pprint import pprint lines = [ 'a=" quelque chose1" b="autre chose" c="autre chose encore"', 'a=" quelque chose2" b="autre chose" c="autre chose encore"', 'a=" quelque chose3" b="autre chose" c="autre chose encore"', ] r = re.compile(r'(\w+)\s*=\s*"([^"]+)"') data = [ { k : [v] for k, v in r.findall(line) } for line in lines ] pprint(data)
Après, si tes données sont vraiment extrêmement volumineuse et ne peuvent tenir en RAM, il faudra sans doute passer par une base de données (e.g. mysql).
Bonne chance
1 mars 2022 à 18:14
effectivement, j'ai des données très volumineuses (3 millions de lignes). En essayant de traduire mon DataFrame en dictionnaire ça plante également.
Je pense donc la meilleure solution est de les mettre dans une base de données.
Merci encore pour votre retour.
1 mars 2022 à 18:41
1 mars 2022 à 20:15