[Python] Maîtrisez la lecture des fichiers csv. Liste des principales options pour pandas.read_csv.

[Python] Maîtrisez la lecture des fichiers csv. Liste des principales options pour pandas.read_csv.

Version avancée de la lecture de fichiers csv avec pandas Notez que vous pouvez faire beaucoup plus que vous ne le pensez, comme spécifier les lignes et les colonnes à lire.

Fondamentalement, c'est OK si vous maintenez autant [Liste des principales options de la méthode read_csv](# 1-Liste des principales options de la méthode read_csv)


> ・ Cliquez ici pour les bases de la lecture de fichiers csv avec python (https://qiita.com/yuta-38/items/8f7a332651cd5a02e986)

・ La page officielle est ici


**table des matières**
  1. [Liste des principales options de la méthode read_csv](# 1-Liste des principales options de la méthode read_csv)
  2. [Données lues par défaut](# 2-Données lues par défaut)
  3. [Lignes / colonnes / cellules vierges du fichier d'origine](# 3-Cellule de matrice vierge du fichier d'origine)
  4. En-tête (# 4-Header)
  5. [Charger le fichier sans en-tête](#Lire le fichier sans en-tête)
  6. [Spécifiez la ligne qui sera l'en-tête](#Spécifiez la ligne qui sera l'en-tête)
  7. [Spécifiez le nom de l'en-tête](# Spécifiez le nom de l'en-tête à lire)
  8. [Spécifiez un préfixe commun pour le nom de l'en-tête](#Spécifiez un préfixe commun pour le nom de l'en-tête)
  9. [Spécifiez la colonne d'en-tête (index)](# 5-Spécifiez l'index de la colonne d'en-tête)
  10. [Lire la colonne](# 6-Lire la colonne)
  11. [Spécifier par numéro de colonne](#Spécifier par numéro de colonne)
  12. [Spécifier par nom de colonne](#Spécifier par nom de colonne)
  13. Lire la ligne (# 7-Read Line)
  14. [Spécifiez le nombre de lignes à lire depuis le début](#Spécifiez le nombre de lignes à lire depuis le début)
  15. [Spécifiez le nombre de lignes à exclure depuis le début](#Spécifiez le nombre de lignes à exclure depuis le début)
  16. [Exclure la ligne spécifiée](#Exclure la ligne spécifiée)
  17. [Spécifiez le nombre de lignes à exclure de la fin](# Spécifiez le nombre de lignes à exclure de la fin)
  18. [Lire en spécifiant le type](# 8-Lire en spécifiant le type)
  19. [Lire des fichiers sur le Web](# 9-Lire des fichiers sur le Web)
  20. [Lire le fichier compressé](# 10-Lire le fichier compressé)
  21. [Lire en spécifiant un délimiteur](# 11-Lire en spécifiant un délimiteur)

## 1. Liste des principales options de la méthode read_csv
option Exemple d'utilisation Contenu
sep sep=';' Séparé
delimiter delimiter=';' Divisé(Identique à sep)
header header=1 Spécifiez la ligne d'en-tête (la valeur par défaut est deviner, sinon l'en-tête=Aucun * "N" est une majuscule)
names ①names=['AA','BB','CC',,]  ②names='1234567' Donnez un titre de colonne (ou "en-tête" s'il y a un en-tête=En combinaison avec "0")
index_col index_col=0 En-tête de ligne(index)Spécifiez la colonne qui devient
usecols usecols=[1,2,5] Spécifiez la ligne à lire. Spécifiez une seule ligne au format liste "usecols=[0].. Peut également être spécifié dans le titre de la colonne "
prefix prefix="numéro de ligne", header=None Spécifiez le préfixe du titre de la ligne. Exemple "prefix"='numéro de ligne'」ならnuméro de ligne0、numéro de ligne1、、、となる。 hedar=Valide uniquement lorsque Aucun est spécifié.
dtype dtype=str Lisez en spécifiant le type. S'il ne peut pas être appliqué, une erreur (comme la lecture de str avec float)
skiprows ①skiprows=5  ②skiprows=[1,3,6] Spécifiez le numéro de ligne à ne pas lire au début. Pour les entiers, de 0 à l'entier spécifié.
skipfooter skipfooter=2, engine='python', encoding='utf_8' Spécifiez le nombre de lignes à exclure du bas. Besoin de décrire ce qu'il faut utiliser en python. Si les caractères sont déformés, spécifiez le code de caractère.
nrows nrows=5 Spécifiez le nombre de lignes à lire.
encoding encoding='shift_jis' Spécification du code de caractère lors de la lecture d'un fichier
(compression) compression='zip' Ouvrez le fichier compressé. Actuellement, il s'ouvre par analogie sans description. (Inversement, la compression sur le fichier zip='gzip'Erreur si vous spécifiez
(skipinitialspace) skipinitialspace=True délimiteur(Délimiteur de caractères)Plus tard, supprimez le blanc de début. Actuellement, il semble être supprimé par défaut

## 2. Données lues par défaut

■ Fichier original

Lorsque le fichier csv suivant est lu

image.png

** ▼ colonne ** ・ La colonne A est l'index (en-tête) ・ La colonne F est vide ・ La colonne G est un caractère et une cellule vide

** ▼ ligne ** ・ La première ligne est le titre de la colonne ・ La 9ème ligne est vide ・ Il y a une erreur de formule (#NOMBRE!) Sur la 10e ligne.


#### ■ Résultat de lecture

image.png

** ▼ Point ** ・ ** Colonne d'en-tête ajoutée à la première colonne ** (numéro d'index de 0) ・ ** Ligne de titre ajoutée à la première ligne **


### ■ Attributs de chaque colonne

Attributs de colonne


Unnamed: 0     object
Objet de la colonne 1
Colonne 2 float64
Objet de la colonne 3
Colonne 4 float64
Unnamed: 5     float64
Objet de la colonne 5

-Date: type d'objet ・ Valeur numérique: type float64 └ Entier et minoritaire └ NaN est ignoré -Colonne avec erreur de fonction: type d'objet ・ Colonne vide: type float64 -Texte: type d'objet └ S'il y a une cellule de texte, ce sera un type d'objet


### ■ Résultat de lecture de sortie

Lors de la sortie sous forme de fichier csv avec utf8.

image.png

-Les têtes automatiquement insérées dans la 1ère ligne et la 1ère colonne restent. ・ NaN devient une ligne vierge


## 3. Lignes / colonnes / cellules vides du fichier d'origine

Les blancs sont traités comme "NaN" (données vides). Ce qui suit est également traité comme NaN.


## 4. En-tête

La valeur par défaut lors de la lecture est "par analogie".

▼ Fichier original image.png

▼ Résultat de lecture image.png

Lire le fichier csv


import pandas as pd

df = pd.read_csv('~/desktop/test.csv')
df

└ Lisez et affichez le fichier test.csv sur le bureau.


### ① Lire un fichier sans en-tête Spécifiez éventuellement qu'il n'y a pas d'en-tête. `header=None`

** ▼ Fichier d'origine ** (disons "desktop test2.csv") image.png

** ▼ Lire le fichier ** pd.read_csv('~/desktop/test2.csv' ,header=None) image.png

python


import pandas as pd
df = pd.read_csv('~/desktop/test2.csv' ,header=None)
df

** ▼ Si non spécifié ** `df2 = pd.read_csv('~/desktop/test2.csv')` ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/fb3d7fa6-e1cc-8afc-cca6-d1a49ab21179.png)
### ② Spécifiez la ligne qui sera l'en-tête * Au-dessus de la ligne spécifiée n'est pas lu.

** ▼ Lorsqu'une ligne comme en-tête est spécifiée **

Facultatif header = integer

import pandas as pd
df = pd.read_csv('~/desktop/test.csv' ,header=6)
df

image.png


** ▼ Si non spécifié ** ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/73ce0f60-b776-d8f6-9b71-7f38cd2f7874.png)
### ③ Lire en spécifiant le nom de l'en-tête Décrivez `names =` comme une option. Il y a deux manières d'écrire.

(1) Chaînes de caractères consécutives (2) format de liste

** ▼ Point ** -Si vous avez déjà un en-tête, écrasez-le par header = 0. -Lorsque le nombre de caractères spécifié est inférieur au nombre de colonnes à lire: Le titre de l'autre colonne est vide -Si le nombre de caractères spécifié est plus grand: le titre de la dernière colonne est NaN -Différentes colonnes ne peuvent pas avoir le même nom (erreur)


### ■ Exemple (essayez le résultat de l'exécution avec 7 colonnes de données)

(1) Spécifier par chaîne de caractères continue

** ▼ Exemple 1: lorsque names = '123345' **

import pandas as pd
df = pd.read_csv('~/desktop/test.csv' ,names='12345')
df

image.png

Les deux premières colonnes manquantes sont vides.


** ▼ Exemple 2: Quand `names = 'abcdefghi'` **
import pandas as pd
df = pd.read_csv('~/desktop/test.csv' ,names='abcdefghi')
df

image.png

De nombreux titres de colonnes sont des colonnes vides (NaN).


** ▼ Exemple 3: `names = 'aaabbbccc'` Erreur en cas de duplication **

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv' ,names='aaabbbccc')
df

#production
# ValueError: Duplicate names are not allowed.

#### (2) Spécifiez sous forme de liste

** ▼ Exemple 1: Lorsque names = ['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff'] **

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv' ,names=['aaa','bbb','ccc','ddd','eee','fff'])
df

image.png


** ▼ Exemple 2: `names = ['aaa', 'bbb', 'aaa', 'ddd']` Duplicate is an error **

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv' ,names=['aaa','bbb','aaa','ddd'])
df

### Spécifiez un préfixe commun pour le nom de l'en-tête `prefix = 'chaîne de caractères', en-tête = Aucun` └ Valide uniquement lorsque header = None (ignoré sinon) └ Un numéro de colonne est ajouté à la chaîne de caractères spécifiée.  

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv', prefix="XXX", header=None)
df

image.png


## 5. Spécification de la colonne d'en-tête (index) Décrivez ʻindex_col = integer` dans l'option. Par défaut, les colonnes avec des numéros d'index sont ajoutées automatiquement.
```python import pandas as pd df = pd.read_csv('~/desktop/test.csv' ,index_col=0) df ```

image.png


Par défaut (non spécifié) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/c24e0186-6c71-e4b8-9b26-81fbeaa279f7.png)
## 6. Lire les colonnes Peut être spécifié par numéro de colonne ou nom de colonne.

① Précisez par numéro de colonne ② Spécifiez par nom de colonne


▼ Utilisez ce qui suit pour le fichier d'origine ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563526/3046793e-146a-441a-8c88-938a8f3d9f14.png)
import pandas as pd
df = pd.read_csv('~/desktop/test.csv')
df

### ① Précisez par numéro de colonne Décrivez ʻusecols = [] `dans l'option └ Type de liste └ Décrit dans [] même si la spécification est une colonne

Spécifiez plusieurs colonnes


import pandas as pd
df = pd.read_csv('~/desktop/test.csv', usecols=[0,3,6])
df

image.png

** ▼ Pour 1 colonne (par exemple, 0ème colonne uniquement) ** usecols=[0]

Spécifiez une seule colonne (Exemple: 0ème colonne uniquement)


import pandas as pd
df = pd.read_csv('~/desktop/test.csv', usecols=[0])
df

image.png

** ▼ Erreur si ce n'est pas le type de liste **

Erreur


import pandas as pd
df = pd.read_csv('~/desktop/test.csv', usecols=0)
df

#production
# ValueError: 'usecols' must either be list-like of all strings, all unicode, all integers or a callable.

### ② Spécifiez par nom de colonne

Il est également possible d'extraire uniquement le nom de colonne spécifié.

▼ Exemple: ʻusecols = ['colonne 1', 'colonne 4'] ` └ Spécifiez la colonne 1 et la colonne 4.

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv', usecols=['Colonne 1','Colonne 4'])
df

image.png


▼ Il est également possible de donner un nom de colonne lors de la lecture et d'extraire par ce nom.

Exemple: ・ En-tête = 0Noms = 'ABCDEFG' ・ ʻUscols = ['A', 'C'] `

import pandas as pd
df = pd.read_csv('~/desktop/test.csv', header=0, names='ABCDEFG' ,usecols=['A','C'])
df

image.png


## 7. Lire la ligne

① Spécifiez le nombre de lignes à lire depuis le début (2) Spécifiez le nombre de lignes à exclure depuis le début ③ Exclure la ligne spécifiée ④ Spécifiez le nombre de lignes à exclure de la fin


### ① Spécifiez le nombre de lignes à lire depuis le début Décrivez ʻusecols = integer` dans l'option. Utile lors de la vérification du contenu lorsque le nombre de lignes est énorme.
▼ Exemple: `nrows = 3` Lisez du haut vers la troisième ligne.

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv', nrows=3)
df

image.png


### (2) Spécifiez le nombre de lignes à exclure depuis le début Décrivez `skiprows = integer` dans l'option.

▼ Exemple: skiprows = 6 Passez à la 6ème ligne à partir du haut. Si aucun en-tête n'est spécifié, la 6ème ligne sera l'en-tête.

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv', skiprows=6)
df

image.png


### ③ Exclure la ligne spécifiée Décrivez `skiprows = [integer]` dans l'option.

▼ Exemple: skiprows = [2,3,6,7,8] Passer les 2ème, 3ème, 5ème, 7ème et 8ème lignes à partir du haut.

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv', skiprows=[2,3,6,7,8])
df

image.png


### ④ Spécifiez le nombre de lignes à exclure de la fin Décrivez `skipfooter = integer, engine = 'python'` dans les options.

▼ Exemple: skipfooter = 6, engine = 'python', encoding = 'utf_8' Passer la 6ème ligne à partir du bas.

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv', skipfooter=6, engine='python', encoding='utf_8')
df

image.png


▼ Lorsqu'aucun code de caractère n'est spécifié `skipfooter=6, engine='python'` 

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv', skipfooter=6, engine='python')
df

image.png

Le japonais est brouillé.


▼ Lorsque python n'est pas spécifié `skipfooter=6` 

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv', skipfooter=6)
df

#production
# <ipython-input-81-77b6fdc5c66e>:2: ParserWarning: Falling back to the 'python' engine 
#because the 'c' engine does not support skipfooter; 
#you can avoid this warning by specifying engine='python'.

Une erreur s'affiche. Instructions pour décrire "engine = 'python'".


## 8. Spécifiez le type et lisez Décrivez `dtype = type` comme option. S'il ne peut pas être modifié, une erreur se produira.

▼ Convertissez en une chaîne de caractères avec dtype = str et vérifiez le type avec .dtypes (méthode dtypes).

Convertir en chaîne


import pandas as pd
df = pd.read_csv('~/desktop/test.csv', dtype=str)

df.dtypes

#production
Unnamed: 0    object
Objet de la colonne 1
Objet de la colonne 2
Objet de la colonne 3
Objet de la colonne 4
Unnamed: 5    object
Objet de la colonne 5
dtype: object

▼ Par défaut

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv')

df.dtypes

#production
Unnamed: 0     object
Objet de la colonne 1
Colonne 2 float64
Objet de la colonne 3
Colonne 4 float64
Unnamed: 5     float64
Objet de la colonne 5
dtype: object

▼ Convertir la chaîne de caractères en flottant (erreur)

python


import pandas as pd
df = pd.read_csv('~/desktop/test.csv' ,dtype=float)
df.dtypes

#production
# ValueError: could not convert string to float

## 9. Lire des fichiers sur le WEB Il est également possible de lire des fichiers sur le WEB.

pd.read_csv ('URL', encoding = 'code de caractère')

** ▼ Lire les données statistiques de la population du gouvernement par préfecture et par sexe ** ・ Page de référence: e-Start

python


import pandas as pd

dfurl = pd.read_csv('https://www.e-stat.go.jp/stat-search/file-download?statInfId=000031524010&fileKind=1', encoding='shift_jis')
dfurl

image.png


### ▼ Si aucun code de caractère n'est spécifié (une erreur se produira)

Erreur


import pandas as pd

dfurl = pd.read_csv('https://www.e-stat.go.jp/stat-search/file-download?statInfId=000031524010&fileKind=1')
dfurl

#production
# UnicodeDecodeError: 'utf-8' codec can't decode byte 0x93 in position 0: invalid start byte

## 10. Lire le fichier compressé Les fichiers compressés tels que zip peuvent être lus sans rien spécifier. Formats de compression lisibles: «gzip», «bz2», «zip», «xz»

Parce qu'il lit le format compressé par analogie. └ Par défaut: compression = infer


** ▼ Lisez test.zip, un fichier zip sur le bureau **

python


import pandas as pd
df = pd.read_csv('~/desktop/test.zip')
df

image.png

■ Ce qui précède est identique à «compression = 'zip».

import pandas as pd
df = pd.read_csv('~/desktop/test.zip', compression='zip')
df

▼ Une erreur se produit si le format de compression n'est pas spécifié correctement.

Erreur


import pandas as pd
df = pd.read_csv('~/desktop/test.zip', compression='gzip')
df

#production
# BadGzipFile: Not a gzipped file (b'PK')

▼ Erreur même si deux fichiers ou plus sont compressés

Erreur


import pandas as pd
df = pd.read_csv('~/desktop/2files.zip')
df

#production
# ValueError: Multiple files found in compressed zip file ['test.csv', 'space.csv']

▼ Erreur même si deux fichiers ou plus sont compressés

Erreur


import pandas as pd
df = pd.read_csv('~/desktop/2files.zip')
df

#production
# ValueError: Multiple files found in compressed zip file ['test.csv', 'space.csv']

▼ Erreur même si PW est défini

Erreur


import pandas as pd
df = pd.read_csv('~/desktop/test.zip')
df

#production
# RuntimeError: File 'test.csv' is encrypted, password required for extraction

## 11. Lire en spécifiant un délimiteur `sep = 'séparateur'` └ Il en va de même pour "delimiter = 'separator'".

** ▼ Exemple: fichier à lire ** Il y a plusieurs données dans une cellule. └ Données séparées par "@" └ Données séparées par ";" image.png


** ▼ Chargement par défaut **

python


import pandas as pd

df = pd.read_csv('~/desktop/test2.csv')
df

image.png


** ▼ `sep = '@'` ** Séparé par "@"

「@Séparé par "(sep)


import pandas as pd

df = pd.read_csv('~/desktop/test2.csv', sep='@')
df

image.png

** ▼ delimita = '@' ** Séparé par "@"

「@(Délimiteur)


import pandas as pd

df = pd.read_csv('~/desktop/test2.csv', delimiter='@')
df

image.png


** ▼ `sep = ';'` ** Séparé par ";"

「;Séparé par "(sep)


import pandas as pd

df = pd.read_csv('~/desktop/test2.csv', sep=';')
df

image.png


** ▼ Les options ne peuvent pas être répétées. ** **

Erreur


import pandas as pd

df = pd.read_csv('~/desktop/test2.csv', sep=';', sep='@')
df

#production
# SyntaxError: keyword argument repeated

** ▼ 2 caractères ne peuvent pas être spécifiés (la liste ne peut pas être utilisée) **

Erreur


import pandas as pd

df = pd.read_csv('~/desktop/test2.csv', sep=[';','@'])
df

#production
# TypeError: unhashable type: 'list'

** Le délimiteur ▼ 2 et sep ne peuvent pas être utilisés ensemble. ** ** └ La priorité est donnée au délimiteur.
image.png

[Retour en haut](Liste des principales options de pandas read_csv pour lire le fichier #pythoncsv maître)

Recommended Posts

[Python] Maîtrisez la lecture des fichiers csv. Liste des principales options pour pandas.read_csv.
[Python] Lecture de fichiers CSV
[Python: UnicodeDecodeError] L'une des solutions d'erreur lors de la lecture de CSV
À propos de la liste de base des bases de Python
python Remarque: map -faire la même chose pour chaque élément de la liste
Pandas du débutant, par le débutant, pour le débutant [Python]
Python> sys.path> Liste de chaînes indiquant le chemin pour rechercher des modules
Recherche de synonymes dans la liste de mots (csv) par Python Japanese WordNet
J'ai mesuré la vitesse de la notation d'inclusion de liste, pendant et pendant avec python2.7.
Le moyen le plus rapide pour les débutants de maîtriser Python
[python] Vérifier les éléments de la liste tous, tous
L'histoire selon laquelle le coût d'apprentissage de Python est faible
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
[Python] Obtenez les principaux sujets de Yahoo News
Copiez la liste en Python
Lire et écrire des fichiers CSV et JSON avec Python
Code de caractères pour la lecture et l'écriture de fichiers csv avec python
Traitement d'image? L'histoire du démarrage de Python pour
[Python] Analyser le dossier, y compris les sous-dossiers → Exporter la liste des fichiers au format CSV
L'histoire de la lecture des données HSPICE en Python
Script Python pour obtenir une liste d'exemples d'entrée pour le concours AtCoder
Code pour vérifier le fonctionnement de Python Matplot lib
Exemple de lecture et d'écriture de CSV avec Python
Comment obtenir une liste de fichiers dans le même répertoire avec python
Liste des bibliothèques Python pour les data scientists et les data ingénieurs
Connaissez l'emplacement du fichier de définition de classe Python.
Liste d'exemples de sites de distribution de programmes pour les livres Python
[python] Récupère la liste des classes définies dans le module
[Python] Obtenir la liste des noms ExifTags de la bibliothèque Pillow
[Python] Affiche toutes les combinaisons d'éléments de la liste
Python: obtenir une liste de méthodes pour un objet
[Maya Python] Écraser le contenu du script 2 ~ list Notes
Liste des modules python
le zen de Python
Essayez d'obtenir la liste des fonctions du paquet Python> os
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
[Maya Python] Écraser le contenu du script 3 ~ Liste des plugins inconnus
[Note] Liste des commandes de base pour la construction d'un environnement python / conda
Prise en compte des décorateurs Python du type qui passe des variables
Obtenez le nombre d'occurrences pour chaque élément de la liste
[Python] Les principales faiblesses et inconvénients de Google Colaboratory [Pour les débutants]
Google recherche la chaîne sur la dernière ligne du fichier en Python
2015-11-26 python> Afficher la liste des fonctions du module> import math> dir (math)
[Python] Lecture facile des fichiers image du numéro de série avec OpenCV
python Remarque: enumerate () -Obtenir l'index et l'élément de la liste en même temps et tourner pour l'instruction
Liste Python, pour instruction, dictionnaire
Résumé des opérations de liste Python3
Lire et écrire des fichiers csv
Lire des fichiers .txt avec Python
[Python] Copie d'une liste multidimensionnelle
[Python / PyQ] 4. liste, pour instruction
#List Python pour les super débutants
À propos des fonctionnalités de Python
Le pouvoir des pandas: Python
Mémorandum de l'outil de gestion de paquets Python ez_setup
Comment modifier le niveau de journalisation d'Azure SDK pour Python
Envelopper (partie de) la bibliothèque AtCoder en Cython pour une utilisation en Python
[Python] Organiser la structure de base de l'application Flask (Viser la dé-copie)