Que faire si votre analyse de données s'arrête par manque de mémoire avec Pandas
TuBrief 편집팀
2026년 7월 13일
0
Computing/Software원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
커뮤니티의 다른 글
댓글 (0)
Log in to leave a comment
아직 작성된 글이 없습니다
원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.
Log in to leave a comment
아직 작성된 글이 없습니다
Pandas charge l'intégralité des données en mémoire vive. C'est la raison pour laquelle Python plante lamentablement si vous essayez d'ouvrir un fichier CSV de 20 Go sur un ordinateur portable avec 16 Go de RAM. Dès que les données deviennent un peu volumineuses, l'ordinateur se fige et le noyau Jupyter Notebook s'arrête. Vous ne pouvez pas vous permettre de sous-échantillonner les données ou de changer d'ordinateur à chaque fois.
Utilisez plutôt DuckDB. Cet outil ne charge que les données nécessaires au fur et à mesure. Il n'a pas besoin de charger tout le jeu de données en RAM et analyse uniquement les parties utiles grâce à la syntaxe SQL. Ce n'est pas sans raison qu'il s'impose comme une alternative de choix à Pandas chez les ingénieurs de données.
Modifier votre environnement d'analyse est plus simple qu'il n'y paraît. Gardez vos DataFrames Pandas existants et changez simplement le moteur.
duckdb.sql() pour définir vos conditions et vos agrégations. Aucun calcul réel n'est effectué à ce stade..df() à la fin.Cette approche offre une efficacité qui dépasse le simple changement de code. Les opérations groupby qui faisaient exploser la RAM avec Pandas s'exécutent de manière stable avec DuckDB en utilisant le disque.
Lors du traitement de données volumineuses, il arrive fréquemment que la RAM soit saturée, provoquant l'arrêt du programme. Pour éviter cela, vous devez installer des garde-fous dans votre environnement de travail.
Ajoutez le code suivant en haut de votre script :
`python
import duckdb
con = duckdb.connect()
con.execute("SET memory_limit = '4GB'")
con.execute("SET temp_directory = './tmp'")
`
memory_limit définit la quantité de RAM que DuckDB est autorisé à utiliser. En le réglant sur 4 Go, le système ne se figera pas, même sur mon ordinateur portable équipé de 16 Go de RAM. Si la mémoire est insuffisante, DuckDB écrit automatiquement les données dans des fichiers temporaires sur le disque. Selon un benchmark de 2023, lors du traitement d'un fichier Parquet de 140 Go, DuckDB a terminé le travail avec seulement 1,3 Go de RAM. Avec Pandas, cette tâche aurait consommé des dizaines de gigaoctets de mémoire avant de finir par planter.
Le moment le plus frustrant dans l'analyse de données est lorsque le processus s'arrête à cause d'un formatage incorrect. Si les types ne correspondent pas lors du chargement d'un fichier CSV, l'analyse ne peut même pas commencer.
Activez les options suivantes lors de l'utilisation de la fonction read_csv :
`python
con.execute("""
SELECT * FROM read_csv('data.csv',
columns={'id': 'INTEGER', 'value': 'DOUBLE'},
store_rejects=true,
strict_mode=false)
""")
`
De cette façon, le processus global ne s'arrêtera pas à cause de données mal formées. Les lignes erronées seront isolées dans une table séparée. Vous pourrez ensuite interroger la table reject_errors pour comprendre pourquoi les données sont corrompues.
L'analyse ne consiste pas à corriger vos outils, mais à extraire des idées de vos données. Arrêtez de relancer votre code des dizaines de fois à cause de la RAM et commencez par optimiser l'efficacité de vos traitements en changeant de moteur.