Come aprire file csv o di testo di grandi dimensioni

Visualizzazioni post: 3,861

Il problema

Se lavori con Excel, ad un certo punto, probabilmente hai provato ad aprire file csv o di testo di grandi dimensioni ma forse non sei riuscito ad aprirli. Il mio collega una volta ha ricevuto un grande file CSV di 8 GB. Voleva dare un’occhiata al contenuto, ma non poteva aprirlo usando nessun programma che ha provato, Blocco note, Excel, ecc. Il file era semplicemente troppo grande per il programma per iniziare anche.

Così mi ha contattato per chiedere aiuto. La sua richiesta era relativamente semplice: apri il file CSV di grandi dimensioni da 8 GB e potenzialmente guarda i dati nelle prime due migliaia di righe. Questo compito apparentemente impossibile è facile quando si sceglie lo strumento giusto – Python.

Il nostro approccio

Per prima cosa esploreremo i modi per esaminare il contenuto del csv di grandi dimensioni. Quindi suddivideremo il file di grandi dimensioni in file di piccole dimensioni, in modo che i dati diventino realizzabili (apribili?) in Excel.

A scopo dimostrativo, non useremo un file csv di 8 GB di grandi dimensioni; useremo invece un file più piccolo con solo 2.600 righe di dati. Se vuoi seguire, sentiti libero di scaricare l’esempio da qui.

La soluzione

Come sempre, iniziamo importando le librerie necessarie, in questo esercizio, abbiamo solo bisogno di 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() ci permette di leggere qualsiasi .file csv in Python, indipendentemente dalle dimensioni del file-più su questo punto più avanti. Un file csv è un file di valori separati da virgole, che è fondamentalmente un file di testo. Questo metodo panda ha un argomento facoltativo nrows, che specifica il numero di righe che si desidera caricare.

La prima variabile df ha caricato tutto all’interno del file csv. Mentre la seconda variabile df_small ha caricato solo le prime 1.000 righe di dati. Possiamo verificarlo chiamando l’attributo .shape.

dimensione (#di righe, # di colonne) dei due dataframe

Come mostrato sopra, il “large_data.il file csv ” contiene 2618 righe e 11 colonne di dati in totale. E possiamo anche confermare che nella variabile df_small, abbiamo caricato solo le prime 1.000 righe di dati, anche 11 colonne.

Digitando df_small.head() vengono visualizzate le prime 5 righe di dati all’interno del dataframe df_small. Possiamo dare un’occhiata al file di grandi dimensioni in questo modo!

Successivamente, cosa succede se vogliamo essere in grado di aprire il file di dati utilizzando solo Excel? Sai, le persone come Excel quindi dobbiamo attenerci ad esso!

Anche se non possiamo usare la magia per consentire a Excel di aprire questo file da 8 GB, possiamo “dividere e conquistare” scomponendolo in file più piccoli. Ad esempio, 8 file con 1 GB ciascuno o 16 file con 500 MB ciascuno. Una versione moderna di Excel può gestire facilmente queste dimensioni dei file.

Questa volta, caricheremo il dataframe in modo leggermente diverso, con un argomento opzionale chunksize. Ancora una volta, a scopo dimostrativo, stiamo usando un file molto più piccolo.

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

Senza entrare in troppi dettagli tecnici, l’argomento chunksize ci consente di caricare i dati in blocchi, con ogni blocco che ha una dimensione di 900 righe di dati nel nostro esempio. Il numero di blocchi è determinato automaticamente dal programma. Dato che il nostro file csv contiene 2.618 righe, ci aspettiamo di vedere 2618 / 900 = 2.9, il che significa 3 blocchi in totale. I primi due blocchi contengono 900 righe e l’ultimo blocco contiene le restanti 818 righe.

Vediamo se è vero.

dimensioni dataframe più piccole

Abbiamo caricato e suddiviso con successo un file in pezzi più piccoli, quindi salviamoli in singoli file più piccoli.

i = 1for file in df: file.to_csv(f'file_{i}.csv') i += 1
abbattere il file originale e salvare in piccoli file

Mettere tutto insieme

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

Abbiamo usato solo 8 righe di codice per risolvere ciò che sembra impossibile da ottenere in Excel. Spero che tu stia iniziando ad amare Python ❤️!!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.