Comment ouvrir de gros fichiers csv ou texte

Vues du message: 3,861

Le problème

Si vous travaillez avec Excel, à un moment donné, vous avez probablement essayé d’ouvrir de gros fichiers csv ou texte mais vous n’avez peut-être pas réussi à les ouvrir. Mon collègue a déjà reçu un gros fichier CSV de 8 Go. Il voulait jeter un coup d’œil au contenu, mais il ne pouvait pas l’ouvrir en utilisant n’importe quel programme qu’il essayait, Bloc-notes, Excel, etc. Le fichier était tout simplement trop volumineux pour que le programme puisse même commencer.

Alors il m’a demandé de l’aide. Sa demande était relativement simple: ouvrez le grand fichier CSV de 8 Go et regardez potentiellement les données dans les deux premiers milliers de lignes. Cette tâche apparemment impossible est facile lorsque vous choisissez le bon outil – Python.

Notre approche

Nous allons d’abord explorer les moyens d’examiner le contenu du grand fichier csv. Ensuite, nous décomposerons le gros fichier en petits fichiers, afin que les données deviennent exploitables (ouvrables?) dans Excel.

À des fins de démonstration, nous n’utiliserons pas un grand fichier CSV de 8 Go; nous utiliserons plutôt un fichier plus petit avec seulement 2 600 lignes de données. Si vous souhaitez suivre, n’hésitez pas à télécharger l’exemple à partir d’ici.

La Solution

Comme toujours, nous commençons par importer les bibliothèques nécessaires, dans cet exercice, nous avons juste besoin de pandas.

import pandas as pd 
df = pd.read_csv('large_data.csv')
df_small = pd.read_csv('large_data.csv', nrows = 1000)

pd.read_csv() nous permet de lire tout.fichier csv en Python, quelle que soit la taille du fichier – plus sur ce point plus tard. Un fichier csv est un fichier de valeurs séparées par des virgules, qui est essentiellement un fichier texte. Cette méthode pandas a un argument facultatif nrows, qui spécifie le nombre de lignes que vous souhaitez charger.

La première variable df a tout chargé dans le fichier csv. Alors que la deuxième variable df_small ne chargeait que les 1 000 premières lignes de données. Nous pouvons vérifier cela en appelant l’attribut .shape.

taille (nombre de lignes, nombre de colonnes) des deux trames de données

Comme indiqué ci-dessus, le « large_data.le fichier « csv » contient 2618 lignes et 11 colonnes de données au total. Et nous pouvons également confirmer que dans la variable df_small, nous n’avons chargé que les 1 000 premières lignes de données, également 11 colonnes.

La saisie df_small.head() affiche les 5 premières lignes de données dans la trame de données df_small. Nous pouvons jeter un coup d’oeil dans le gros fichier de cette façon!

Ensuite, que se passe-t-il si nous voulons pouvoir ouvrir le fichier de données en utilisant uniquement Excel? Vous savez, les gens aiment Excel, donc nous devons nous y tenir!

Bien que nous ne puissions pas utiliser magic pour permettre à Excel d’ouvrir ce fichier de 8 Go, nous pouvons « diviser et conquérir » en le décomposant en fichiers plus petits. Par exemple, 8 fichiers de 1 Go chacun ou 16 fichiers de 500 Mo chacun. Une version moderne d’Excel peut gérer ces tailles de fichiers facilement.

Cette fois, nous chargerons la trame de données légèrement différemment – avec un argument optionnel chunksize. Encore une fois, à des fins de démonstration, nous utilisons un fichier beaucoup plus petit.

df = pd.read_csv('large_data.csv', chunksize = 900)

Sans entrer dans trop de détails techniques, l’argument chunksize nous permet de charger des données en morceaux, chaque morceau ayant une taille de 900 lignes de données dans notre exemple. Le nombre de morceaux est déterminé automatiquement par le programme. Étant donné que notre fichier csv contient 2 618 lignes, nous nous attendons à voir 2618 / 900 = 2,9, ce qui signifie 3 morceaux au total. Les deux premiers morceaux contiennent 900 lignes et le dernier morceau contient les 818 lignes restantes.

Voyons si c’est vrai.

tailles de trame de données plus petites

Nous avons chargé et décomposé avec succès un fichier en morceaux plus petits, puis sauvegardons-les dans des fichiers individuels plus petits.

i = 1for file in df: file.to_csv(f'file_{i}.csv') i += 1
décomposer le fichier d’origine et l’enregistrer en petits fichiers

Le tout Ensemble

import pandas as pd df = pd.read_csv('large_data.csv', chunksize = 900)df_small = pd.read_csv('large_data.csv', nrows = 1000)i = 1for file in df: print(file.shape) file.to_csv(f'file_{i}.csv') i += 1

Nous n’avons utilisé que 8 lignes de code pour résoudre ce qui semble impossible à réaliser dans Excel. J’espère que vous commencez à aimer Python ❤️🐍!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.