L'en-tête est mal aligné avec read_csv () et read_table () de Pandas

introduction

Lorsque j'ai essayé d'importer le fichier obtenu au format csv avec des pandas et de le traiter, l'en-tête et les données étaient mal alignés, mais de manière inattendue, je n'ai pas pu atteindre la réponse immédiatement, j'ai donc écrit un article. [Aller à la solution](# solution)

Environnement d'exploitation

Je l'ai exécuté dans l'environnement suivant.

module version
python 3.8.3
pandas 1.0.5

problème

Importez le fichier au format csv suivant en tant que DatFrame.

example.csv


Time  x   y   z
   0  1   2  10
   1  2   2  10
   2  3   2  10
..

Importez en utilisant read_csv ().

read_csv.py


import pandas as pd
path = 'chemin du fichier csv'
df = pd.read_csv(path)
print(df)

Le résultat de sortie dans le terminal est le suivant.

#    Time\tx\ty\tz
#  0    1\t1\t2\t10
#  1    2\t2\t2\t10
#  2    3\t3\t2\t10
..

Il y a un «\ t» supplémentaire dedans. Il semble qu'il était séparé par des tabulations (format tsv) au lieu d'être séparés par des virgules.

Essayez de l'exécuter avec read_tabel ().

read_tsv.py


import pandas as pd
path = 'chemin du fichier csv'
df = pd.read_table(path)
print(df)

Le résultat de sortie est le suivant. Le \ t a disparu, mais à la place l'en-tête et les données sont mal alignés et toutes les données z sont maintenant NaN.

#    Time  x   y    z
#  0    1  2  10  NaN
#  1    2  2  10  NaN
#  2    3  2  10  NaN

Solution

Donnez un argument à read_csv () comme suit:

read_csv_2.py


import pandas as pd
path = 'chemin du fichier csv'
df = pd.read_csv(path, sep='\s+')
print(df)

Selon la documentation padas, les arguments donnés aux fichiers sont séparés par un ou plusieurs caractères. Il semble que. Il semble que la cause était que les données d'origine étaient séparées par des tabulations et des espaces ... Veuillez me pardonner ... lol.

Résumé

J'ai pu convertir correctement l'en-tête et les données en DataFrame en donnant l'argument sep = '\ s +' tocsv_read ()pour les données séparées par des tabulations et des espaces.

Recommended Posts

L'en-tête est mal aligné avec read_csv () et read_table () de Pandas
UnicodeDecodeError dans pandas read_csv
Caractéristiques de pd.NA dans Pandas 1.0.0 (RC0)
Etosetra lié à Pandas read_csv
Ignorer # ligne et lire avec les pandas
Résumé des méthodes fréquemment utilisées chez les pandas
Un petit examen minutieux de Pandas 1.0 et Dask
Jugement de NaN par les pandas: lorsque le type str et le type float sont mélangés
Captures d'écran de la pêche sur le Web avec du sélénium et Chrome.
Séparation de la conception et des données dans matplotlib
Résumé des modules et des classes dans Python-TensorFlow2-
Projet Euler # 1 "Multiple de 3 et 5" en Python
Parlez des fonctionnalités dont les pandas et moi étions en charge dans le projet
Résumé des outils et bibliothèques OSS créés en 2016
Résumé de ce qui a été utilisé dans 100 coups de Pandas (# 1 ~ # 32)
Calcul des indicateurs techniques par TA-Lib et pandas
Coexistence d'Anaconda 2 et Anaconda 3 dans Jupyter + Bonus (Julia)
Ajouter des totaux aux lignes et aux colonnes avec des pandas
Explication de la distance d'édition et de l'implémentation en Python
Fonctionnement de base de Python Pandas Series et Dataframe (1)
"Régression linéaire" et "Version probabiliste de la régression linéaire" en Python "Régression linéaire de Bayes"
Analyse des données financières par pandas et leur visualisation (2)
Traitement pleine largeur et demi-largeur des données CSV en Python
À propos de l'erreur d'importation de numpy et scipy dans anaconda
Calcul de l'écart type et du coefficient de corrélation en Python
Analyse des données financières par pandas et leur visualisation (1)
Différence entre Ruby et Python en termes de variables
[python] Calcul des mois et des années de différence de date / heure
Exemple d'obtention du nom du module et du nom de la classe en Python
Récapitulatif du traitement de la date en Python (datetime et dateutil)
"Erreur de type: type de valeur non reconnu: <class'str '>" dans to_datetime des pandas