Lire et formater des fichiers csv mélangés avec des tabulations de virgule avec des pandas Python

J'ai eu du mal à gérer le fichier csv avec des tabulations et des virgules, alors prenez note de la correspondance à ce moment-là. Lorsque j'ai ouvert le fichier csv avec un éditeur de texte, cela ressemblait à ceci:

txt


0.2,	1.01,	0.60,	-0.68
0.4,	1.00,	0.67,	-0.69
0.6,	1.01,	0.61,	-0.72

Tout d'abord, lisez le fichier avec read_csv de pandas. Le nom du fichier est sample.csv et il y a des fichiers dans le même répertoire.

In


import pandas as pd

df = pd.read_csv_("sample.csv",header = None)

#Vérifiez le contenu de DataFrame
print(df)
print(df.dtypes)

ici

df = pd.read_csv_("sample.csv",sep="\t", header = None)


 J'aurais dû le faire, mais parce que je ne l'ai pas fait, les données avec des onglets mixtes ont été lues afin qu'elles soient dans la première colonne.


#### **`Out`**
```ruby

	0
0	0.2\t1.01\t0.60\t-0.68
1	0.4\t1.00\t0.67\t-0.69
2	0.6\t1.01\t0.61\t-0.72


0    object
dtype: object

Procédez comme suit pour séparer les colonnes avec des délimiteurs de tabulation.

In


df = df[0].apply(lambda x: pd.Series(x.split('\t')))

#Vérifiez le contenu de DataFrame
print(df)
print(df.dtypes)

Out


	0		1		2		3
0	0.2		1.01	0.60	-0.68
1	0.4		1.00	0.67	-0.69
2	0.6		1.01	0.61	-0.72


0    object
1    object
2    object
3    object
dtype: object

Puisque je veux effectuer un calcul après cela, tous sont convertis en type flottant.

Obtenez le nombre de colonnes dans le DataFrame avec df.shape [1], créez une liste du nombre de colonnes avec la fonction range et activez l'instruction for.

In


for i in range(df.shape[1]):
    df[i] = df[i].astype(float)

#Vérifiez le contenu de DataFrame
print(df.dtypes)

Out


0    float64
1    float64
2    float64
3    float64
dtype: object

C'est tout.


** Supplément 1 Si vous souhaitez lire les fichiers placés sous le dossier, vous pouvez procéder comme suit.

In


import pandas as pd
import os

#Vous devez remplacer le répertoire par le dossier contenant les fichiers.
os.chdir("./Nom de dossier")

#Obtenez une liste de fichiers.
file = os.listdir("./")

# file[0]Obtenez le nom du fichier avec (en supposant qu'un seul fichier existe)
df = pd.read_csv(file[0],header=None)

** Supplément 2 Il semble que l'argument astype puisse également être un type de dictionnaire. Cela semble pratique lors de la conversion vers un autre type.

In


df.astype({'a': int, 'c': str}).dtypes

** Supplément 3 Pour entrer le nom de la colonne, pour ajouter la colonne, exécutez ce qui suit.

In


from pandas import DataFrame

#Insérer le nom de la colonne
df.columns=['a','b','c','d']

#Ajouter une colonne en spécifiant le nom de la colonne
df = DataFrame(df, columns=['a','b','c','d','e'])

** 20170410 postscript

Comme vous l'avez souligné dans le commentaire, j'ai essayé la méthode consistant à utiliser "sep =" \ t "" comme argument de read_csv, mais il a été lu avec des virgules.

Out


     0       1       2        3
0    0.2,    1.01,   0.60,   -0.68
1    0.4,    1.00,   0.67,   -0.69
2    0.6,    1.01,   0.61,   -0.72

Cependant, lorsque j'ai supprimé la description de "sep =" \ t "" et effectué read_csv, il l'a lu comme un type float normalement sans traitement de fractionnement ou de type.

Je cours avec pycharm, mais si je réinitialise l'argument sep et recommence, l'outil le déterminera-t-il automatiquement? Je ne comprends pas.

In


import pandas as pd
import os ##Pour lire des fichiers

#Lisez le fichier csv sous le dossier exemple
os.chdir("./sample")
file = os.listdir("./")

df = pd.read_csv(file[0],header=None)

os.chdir("../")

#Vérifiez le contenu de DataFrame
print(df)
print(df.dtypes)

Out


     0      1      2      3
0    0.2    1.01   0.60   -0.68
1    0.4    1.00   0.67   -0.69
2    0.6    1.01   0.61   -0.72

0    float64
1    float64
2    float64
3    float64
dtype: object

Jusqu'à présent, quatre types d'événements ont été confirmés et la cause est inconnue.

Lire les données de tabulation mixte à l'aide de Pycharm_Lors de la lecture avec csv
① Lorsqu'il est lu correctement avec flotteur sans rien faire
(2) Lorsqu'il est lu avec des onglets mélangés si rien n'est fait
    ③sep="\t"Quand est correctement lu par float quand est spécifié
    ④sep="\t"Si vous spécifiez, il sera lu avec des virgules

Recommended Posts

Lire et formater des fichiers csv mélangés avec des tabulations de virgule avec des pandas Python
Comment lire un fichier CSV avec Python 2/3
Lire csv avec des pandas python
Lire le fichier json avec Python, le formater et générer le json
[Python] Lisez le fichier csv et affichez la figure avec matplotlib
Lire le fichier CSV avec python (Télécharger et analyser le fichier CSV)
Lisez CSV et analysez avec Pandas et Seaborn
[Python] Lire un fichier csv avec une grande taille de données à l'aide d'un générateur
Lire les données csv Python avec Pandas ⇒ Graphique avec Matplotlib
Lire JSON avec Python et générer un CSV
[Python] Comment lire des fichiers Excel avec des pandas
Lire le fichier CSV: pandas
[Python] Comment lire le fichier csv (méthode read_csv du module pandas)
Créer un fichier au format Photoshop (.psd) avec python
Lisez le fichier CSV avec Python et convertissez-le en DataFrame tel quel
Lire ligne par ligne à partir d'un fichier avec Python
Lire le fichier csv Python
[Introduction à Pandas] Lire un fichier csv sans nom de colonne et lui donner un nom de colonne
Lisez et analysez l'ensemble de données au format arff avec python scipy.io
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Créer un outil de formatage CSV avec Python Pandas Py Installer
[Python] Un mémo pour écrire du CSV verticalement avec Pandas
Lire et écrire un fichier csv
Lire et écrire des fichiers
Écrire et lire des fichiers
Télécharger le fichier csv avec python
[Python] Lire le csv japonais avec des pandas sans caractères déformés (extraire davantage les colonnes écrites en japonais)
Comment lire un fichier Excel (.xlsx) avec Pandas [Python]
[Python] Ecrire dans un fichier csv avec Python
Sortie vers un fichier csv avec Python
Lecture et écriture de fichiers CSV Python
Lire et écrire du CSV avec Python
[Python] Formater quand to_csv avec des pandas
Mettre en forme le fichier CSV de "Fête nationale" du Cabinet Office avec des pandas
Lisez le fichier en Python avec un chemin relatif depuis le programme
[ROS2] Comment lire un fichier bag avec le lancement au format python
Obtenez les conditions de simulation OCTA à partir d'un fichier et enregistrez avec les pandas
Créer et renvoyer un fichier CSV CP932 pour Excel avec Chalice
Créer un fichier power simple avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Lisons le fichier RINEX avec Python ①
Lire et écrire des fichiers csv avec numpy
Lire Python csv et exporter vers txt
[Automation] Lire des documents Word avec Python
Lire le fichier de données de caractères avec numpy
[pandas] Méthode de lecture et d'affichage des fichiers .csv
Chargez CSV avec des pandas et jouez avec Index
[python] Lisez le fichier html et entraînez-vous au scraping
Téléchargez Pandas DataFrame sous forme de fichier CSV
J'ai créé un fichier de configuration avec Python
[Automation] Lire le courrier (fichier msg) avec Python
Lire le fichier Python # .txt pour Python super débutant super débutant avec travail .py
Lisez le fichier avec python et supprimez les sauts de ligne [Notes sur la lecture du fichier]
Lire un fichier contenant des lignes brouillées en Python
Construire un environnement python avec virtualenv et direnv
Divisez chaque diapositive PowerPoint en un fichier JPG et exportez-le avec python
Python --Lisez les données d'un fichier de données numériques et recherchez la ligne de régression multiple.
Script Python qui lit les fichiers SQL, exécute BigQuery et enregistre le csv
Lire les données de la table dans un fichier PDF avec Python
J'ai essayé de lire un fichier CSV en utilisant Python
Lancer un serveur Web avec Python et Flask