HOWTO · Pandas
Carica i dati dal file di testo in Pandas
Scopri come caricare file di testo delimitati, a larghezza fissa e separati da tabulazioni in DataFrame pandas usando le funzioni `read_csv()`, `read_fwf()` e `read_table()`.
In questa pagina
L’estensione .txt non determina come va analizzato un file. Usa read_csv() per i campi separati da un delimitatore, read_fwf() per le colonne allineate in posizioni fisse e read_table() per le tabelle separate da tabulazioni. Tutte e tre le funzioni restituiscono un DataFrame pandas. Gli esempi seguenti creano piccoli file di input, così puoi vedere ciascun formato insieme al codice.
Caricare testo delimitato con read_csv()
Usa read_csv() quando i campi di ogni record sono separati da un carattere costante, come una virgola o un punto e virgola. Per impostazione predefinita, pandas considera la prima riga come intestazione delle colonne. Imposta header=None se il file non ha un’intestazione e passa names per specificare le etichette delle colonne. L’esempio usa un file separato da virgole, con un’intestazione e un campo vuoto:
from pathlib import Path
from tempfile import TemporaryDirectory
import pandas as pd
with TemporaryDirectory() as folder:
path = Path(folder) / "people.txt"
path.write_text("name,age\nAda,36\nLinus,", encoding="utf-8")
df = pd.read_csv(path, sep=",")
print(df.to_string(index=False))
name age
Ada 36.0
Linus NaN
Per impostazione predefinita, pandas riconosce gli indicatori comuni di valori mancanti, compresi i campi vuoti. Usa keep_default_na=False per disattivare gli indicatori predefiniti oppure na_values per aggiungere quelli specifici del tuo file. Qui l’età vuota viene mostrata come NaN; l’età presente viene interpretata come numero in virgola mobile, perché la colonna contiene anche un valore mancante.
Caricare testo a larghezza fissa con read_fwf()
Usa read_fwf() quando i campi occupano posizioni di carattere definite e tra le colonne dei record non ci sono delimitatori. Non è una funzione generica per file in cui i delimitatori variano. L’esempio specifica le larghezze delle colonne, così i confini risultano chiari:
from pathlib import Path
from tempfile import TemporaryDirectory
import pandas as pd
with TemporaryDirectory() as folder:
path = Path(folder) / "people.txt"
path.write_text("Ada 036\nLinus 042\n", encoding="utf-8")
df = pd.read_fwf(path, widths=[6, 3], names=["name", "age"])
print(df.to_string(index=False))
name age
Ada 36
Linus 42
Adatta widths agli intervalli di caratteri dei record. Se non conosci i confini, esamina il formato del file prima di scegliere le larghezze. I valori passati a names assegnano un’etichetta ai due campi analizzati, quindi il campione non ha bisogno di una riga d’intestazione.
Caricare testo tabellare con read_table()
read_table() legge dati delimitati e usa una tabulazione come separatore predefinito. Specifica sep se il file usa un altro delimitatore. Questo esempio usa il separatore predefinito, la tabulazione:
from pathlib import Path
from tempfile import TemporaryDirectory
import pandas as pd
with TemporaryDirectory() as folder:
path = Path(folder) / "scores.txt"
path.write_text("name\tscore\nMina\t91\nOmar\t87\n", encoding="utf-8")
df = pd.read_table(path)
print(df.to_string(index=False))
name score
Mina 91
Omar 87
Per esempio, per un file delimitato da punti e virgola, passa sep=";": il separatore deve corrispondere ai caratteri presenti nel file. Come read_csv(), read_table() considera la prima riga come intestazione per impostazione predefinita. Se l’input inizia direttamente con i dati, imposta header=None per modificare questo comportamento.
Scegliere una funzione di lettura e gestire le opzioni comuni
Scegli read_csv() per i record separati da virgole o da altri delimitatori costanti, read_fwf() per i campi allineati a larghezza fissa e read_table() per le tabelle separate da tabulazioni. Per le funzioni che leggono dati delimitati, pandas ricava l’intestazione dalla prima riga, a meno che tu non imposti header=None; usa names=[...] per assegnare le etichette quando il file non ha un’intestazione. Imposta na_values per indicare gli indicatori di valori mancanti specifici del file. Anche l’esempio con read_fwf() accetta names, mentre l’argomento widths descrive gli intervalli di caratteri dei campi.
Per caricare un file .txt esistente, passa il suo percorso alla funzione di lettura, ad esempio pd.read_csv("/path/to/people.txt", sep=","). In Windows, una stringa raw come r"C:\\data\\people.txt" evita che le barre rovesciate vengano interpretate come caratteri di escape. In ciascun esempio, sostituisci la configurazione del file temporaneo e il valore di path con il tuo percorso; poi mantieni la chiamata alla funzione e scegli il separatore, l’intestazione, i nomi o le larghezze adatti al file. Un percorso relativo viene risolto a partire dalla directory di lavoro corrente del processo Python: se questa può variare, usa un percorso assoluto.