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)
・ La page officielle est ici
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 |
Lorsque le fichier csv suivant est lu
** ▼ 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.
** ▼ 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 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
Lors de la sortie sous forme de fichier csv avec utf8.
-Les têtes automatiquement insérées dans la 1ère ligne et la 1ère colonne restent. ・ NaN devient une ligne vierge
Les blancs sont traités comme "NaN" (données vides). Ce qui suit est également traité comme NaN.
La valeur par défaut lors de la lecture est "par analogie".
▼ Fichier original
▼ Résultat de lecture
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.
** ▼ Fichier d'origine ** (disons "desktop test2.csv")
** ▼ Lire le fichier **
pd.read_csv('~/desktop/test2.csv' ,header=None)
python
import pandas as pd
df = pd.read_csv('~/desktop/test2.csv' ,header=None)
df
** ▼ 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
(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 1: lorsque names = '123345'
**
import pandas as pd
df = pd.read_csv('~/desktop/test.csv' ,names='12345')
df
Les deux premières colonnes manquantes sont vides.
import pandas as pd
df = pd.read_csv('~/desktop/test.csv' ,names='abcdefghi')
df
De nombreux titres de colonnes sont des colonnes vides (NaN).
python
import pandas as pd
df = pd.read_csv('~/desktop/test.csv' ,names='aaabbbccc')
df
#production
# ValueError: Duplicate names are not allowed.
** ▼ 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
python
import pandas as pd
df = pd.read_csv('~/desktop/test.csv' ,names=['aaa','bbb','aaa','ddd'])
df
python
import pandas as pd
df = pd.read_csv('~/desktop/test.csv', prefix="XXX", header=None)
df
① Précisez par numéro de colonne ② Spécifiez par nom de colonne
import pandas as pd
df = pd.read_csv('~/desktop/test.csv')
df
Spécifiez plusieurs colonnes
import pandas as pd
df = pd.read_csv('~/desktop/test.csv', usecols=[0,3,6])
df
** ▼ 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
** ▼ 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.
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
Exemple:
・ En-tête = 0
・ Noms = 'ABCDEFG'
・ ʻUscols = ['A', 'C'] `
import pandas as pd
df = pd.read_csv('~/desktop/test.csv', header=0, names='ABCDEFG' ,usecols=['A','C'])
df
① 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
python
import pandas as pd
df = pd.read_csv('~/desktop/test.csv', nrows=3)
df
▼ 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
▼ 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
▼ 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
python
import pandas as pd
df = pd.read_csv('~/desktop/test.csv', skipfooter=6, engine='python')
df
Le japonais est brouillé.
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'".
▼ 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
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
python
import pandas as pd
df = pd.read_csv('~/desktop/test.csv' ,dtype=float)
df.dtypes
#production
# ValueError: could not convert string to float
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
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
Parce qu'il lit le format compressé par analogie.
└ Par défaut: compression = infer
python
import pandas as pd
df = pd.read_csv('~/desktop/test.zip')
df
■ Ce qui précède est identique à «compression = 'zip».
import pandas as pd
df = pd.read_csv('~/desktop/test.zip', compression='zip')
df
Erreur
import pandas as pd
df = pd.read_csv('~/desktop/test.zip', compression='gzip')
df
#production
# BadGzipFile: Not a gzipped file (b'PK')
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
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
import pandas as pd
df = pd.read_csv('~/desktop/test.zip')
df
#production
# RuntimeError: File 'test.csv' is encrypted, password required for extraction
** ▼ Exemple: fichier à lire ** Il y a plusieurs données dans une cellule. └ Données séparées par "@" └ Données séparées par ";"
python
import pandas as pd
df = pd.read_csv('~/desktop/test2.csv')
df
「@Séparé par "(sep)
import pandas as pd
df = pd.read_csv('~/desktop/test2.csv', sep='@')
df
** ▼ delimita = '@'
** Séparé par "@"
「@(Délimiteur)
import pandas as pd
df = pd.read_csv('~/desktop/test2.csv', delimiter='@')
df
「;Séparé par "(sep)
import pandas as pd
df = pd.read_csv('~/desktop/test2.csv', sep=';')
df
Erreur
import pandas as pd
df = pd.read_csv('~/desktop/test2.csv', sep=';', sep='@')
df
#production
# SyntaxError: keyword argument repeated
Erreur
import pandas as pd
df = pd.read_csv('~/desktop/test2.csv', sep=[';','@'])
df
#production
# TypeError: unhashable type: 'list'
Recommended Posts