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!
hurlement
la source
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)
huon
la source
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).

Kamil Sindi
la source
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

Wes McKinney
la source
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 .

Mohsin Ashraf
la source
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

ankit srivastava
la source
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.

Jackson
la source