Comment charger un fichier tsv dans un Pandas DataFrame?


136

Je suis nouveau sur python et pandas. J'essaye de tsvcharger un fichier dans un pandas DataFrame.

Voici ce que j'essaye et l'erreur que j'obtiens:

>>> df1 = DataFrame(csv.reader(open('c:/~/trainSetRel3.txt'), delimiter='\t'))

Traceback (most recent call last):
  File "<pyshell#28>", line 1, in <module>
    df1 = DataFrame(csv.reader(open('c:/~/trainSetRel3.txt'), delimiter='\t'))
  File "C:\Python27\lib\site-packages\pandas\core\frame.py", line 318, in __init__
    raise PandasError('DataFrame constructor not properly called!')
PandasError: DataFrame constructor not properly called!

11
Pour ceux qui arrivent à cette réponse en 2017+, utilisez read_csv('path_to_file', sep='\t'). Voir cette réponse ci
Ted Petrou

Merci @TedPetrou
Salomon Kabongo

Réponses:


153

Remarque : à partir de 17.0, il from_csvest déconseillé: utilisez pd.read_csvplutôt

La documentation répertorie une fonction .from_csv qui semble faire ce que vous voulez:

DataFrame.from_csv('c:/~/trainSetRel3.txt', sep='\t')

Si vous avez un en-tête, vous pouvez passer header=0.

DataFrame.from_csv('c:/~/trainSetRel3.txt', sep='\t', header=0)

4
J'ai eu quelques problèmes avec cette méthode - l'indexation a été très lente et a échoué à la fin. Au lieu de cela, j'ai utilisé read_table (), qui a fonctionné beaucoup plus rapidement et sans le paramètre supplémentaire.
Yurik

21
Notez qu'à partir de 17.0 from_csvc'est déconseillé: utilisez pd.read_csvplutôt!
rafaelvalle

2
J'ai dû utiliser ce qui suit: DataFrame.read_csv ('filepath.tsv', sep = '', header = 0)
Archie

3
C'est une mauvaise réponse; vous pouvez lire TSV nativement avec pd.read_csv/read_table, il vous suffit de définir delim_whitespace=Trueousep
smci

3
@rafaelvalle a ajouté un avis obsolète
Arayan Singh

84

À partir de 17.0, from_csvc'est déconseillé.

Utilisez pd.read_csv(fpath, sep='\t')ou pd.read_table(fpath).


4
Remarque: read_table est obsolète depuis la version 0.24.0. Utilisez plutôt pandas.read_csv ().
ManuelSchneid3r

57

Utilisez read_table(filepath). Le séparateur par défaut est tab


1
read_table ne nécessite aucun paramètre. Fonctionne parfaitement.
Jay

19

Essaye ça

df = pd.read_csv("rating-data.tsv",sep='\t')
df.head()

entrez la description de l'image ici

Vous devez en fait corriger le paramètre sep .


7

ouvrez le fichier, enregistrez-le sous .csv puis appliquez

df = pd.read_csv('apps.csv', sep='\t')

pour tout autre format également, changez simplement la balise sep


0
df = pd.read_csv('filename.csv', sep='\t', header=0)

Vous pouvez charger le fichier tsv directement dans la trame de données pandas en spécifiant un délimiteur et un en-tête.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.