Opérations sur les fichiers Excel avec Pandas
Pandas offre de riches fonctionnalités de manipulation de fichiers Excel, nous aidant à lire et écrire facilement.xlset.xlsxdes fichiers, avec prise en charge d'opérations complexes telles que plusieurs feuilles, l'indexation et la sélection de colonnes. C'est un outil essentiel dans l'analyse de données.
| Opération | Méthode | Description |
|---|---|---|
| Lire un fichier Excel | pd.read_excel() |
Lire un fichier Excel et renvoyer un DataFrame |
| Écrire un DataFrame dans Excel | DataFrame.to_excel() |
Écrire un DataFrame dans un fichier Excel |
| Charger un fichier Excel | pd.ExcelFile() |
Charger un fichier Excel et accéder à plusieurs feuilles |
| Utiliser ExcelWriter pour écrire dans plusieurs feuilles | pd.ExcelWriter() |
Écrire plusieurs DataFrames dans différentes feuilles du même fichier Excel |
pd.read_excel() - 读取 Excel 文件
pd.read_excel()La méthode est utilisée pour lire des données à partir d’un fichier Excel et les charger en tant que DataFrame. Elle prend en charge la lecture.xlset.xlsxde fichiers formatés.
La syntaxe est la suivante :
pandas.read_excel(io, sheet_name=0, *, header=0, names=None, index_col=None, usecols=None, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, parse_dates=False, date_parser=<no_default>, date_format=None, thousands=None, decimal='.', comment=None, skipfooter=0, storage_options=None, dtype_backend=<no_default>, engine_kwargs=None)
Description du paramètre :
-
io: Il s’agit d’un paramètre obligatoire, spécifiant le chemin ou l’objet fichier du fichier Excel à lire. -
sheet_name=0: Spécifiez le nom ou l’index de la feuille à lire. La valeur par défaut est 0, c’est-à-dire la première feuille. -
header=0: Spécifiez la ligne à utiliser comme noms de colonnes. La valeur par défaut est 0, c’est-à-dire la première ligne. -
names=None: Une liste utilisée pour spécifier les noms de colonnes. Si elle est fournie, elle remplacera les noms de colonnes du fichier. -
index_col=None: Spécifiez la colonne à utiliser comme index de ligne. Elle peut être un nom de colonne ou un numéro. -
usecols=None: Spécifiez les colonnes à lire. Cela peut être une liste de noms de colonnes ou une liste d’indices de colonnes. -
dtype=None: Spécifiez les types de données des colonnes. Cela peut être au format dictionnaire, avec les clés comme noms de colonnes et les valeurs comme types de données. -
engine=None: Spécifiez le moteur d'analyse. La valeur par défaut estNone, pandas choisira automatiquement. -
converters=None: Un dictionnaire de fonctions utilisées pour convertir les données. -
true_values=None: Spécifiez les valeurs qui doivent être traitées comme booléennesTruevaleurs. -
false_values=None: Spécifiez les valeurs qui doivent être traitées comme booléennesFalsevaleurs. -
skiprows=None: Spécifiez le nombre de lignes à ignorer ou une liste de lignes à ignorer. -
nrows=None: Spécifiez le nombre de lignes à lire. -
na_values=None: Spécifiez les valeurs qui doivent être traitées comme des valeurs manquantes. -
keep_default_na=True: Spécifiez s'il faut traiter les valeurs manquantes par défaut (telles queNaN) analyser commeNA。 -
na_filter=True: Spécifiez s'il faut convertir les données enNA。 -
verbose=False: Spécifiez s'il faut afficher des informations détaillées sur la progression. -
parse_dates=False: Spécifiez s'il faut analyser les dates. -
date_parser=<no_default>: Une fonction utilisée pour analyser les dates. -
date_format=None: Spécifier le format des dates. -
thousands=None: Spécifier le séparateur de milliers. -
decimal='.': Spécifier le caractère de séparation décimale. -
comment=None: Spécifier le caractère de commentaire. -
skipfooter=0: Spécifier le nombre de lignes à ignorer à la fin du fichier. -
storage_options=None: Un dictionnaire de paramètres pour le stockage cloud. -
dtype_backend=<no_default>: Spécifier le backend de type de données. -
engine_kwargs=None: Un dictionnaire de paramètres supplémentaires à transmettre au moteur.
Cet article utiliseexample_pandas_data.xlsxcomme exemple. Vous pouveztélécharger example_pandas_data.xlsxpour tester.
Exemple
# Lire le fichier data.xlsx
df = pd.read_excel('example_pandas_data.xlsx')
# Afficher le DataFrame lu
print(df)
La sortie est :
表格 1 Unnamed: 1 Unnamed: 2 0 Name Age City 1 Alice 25 New York 2 Bob 30 Los Angeles 3 Charlie 35 Chicago
read_excel lit la première feuille par défaut (sheet_name=0). En supposant que le fichier data.xlsx n'ait qu'une seule feuille, les données lues sont stockées dans un DataFrame.
Si le fichier data.xlsx contient plusieurs feuilles, vous pouvez spécifier sheet_name pour lire les données d'une feuille particulière, par exemplepd.read_excel('data.xlsx', sheet_name='Sheet1')。
Exemple
# Lire la première feuille par défaut
df = pd.read_excel('data.xlsx')
print(df)
# Lire le contenu d'une feuille spécifiée (par nom de feuille)
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
print(df)
# Lire plusieurs feuilles, en retournant un dictionnaire
dfs = pd.read_excel('data.xlsx', sheet_name=['Sheet1', 'Sheet2'])
print(dfs)
# Personnaliser les noms de colonnes et ignorer les deux premières lignes
df = pd.read_excel('data.xlsx', header=None, names=['A', 'B', 'C'], skiprows=2)
print(df)
DataFrame.to_excel() - Écrire un DataFrame dans un fichier Excel
to_excel()La méthode est utilisée pour écrire un DataFrame dans un fichier Excel, prenant en charge.xlset.xlsxdes formats.
La syntaxe est la suivante :
DataFrame.to_excel(excel_writer, *, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, inf_rep='inf', freeze_panes=None, storage_options=None, engine_kwargs=None)
Description du paramètre :
-
excel_writer: Ceci est un paramètre obligatoire, spécifiant le chemin du fichier Excel ou l'objet fichier dans lequel écrire. -
sheet_name='Sheet1': Spécifiez le nom de la feuille de calcul dans laquelle écrire, avec pour valeur par défaut'Sheet1'。 -
na_rep='': Spécifiez la chaîne représentant les valeurs manquantes (NaN) dans le fichier Excel. La valeur par défaut est une chaîne vide. -
float_format=None: Spécifiez le format des nombres à virgule flottante. S'il estNone, le format par défaut d'Excel est utilisé. -
columns=None: Spécifiez les colonnes à écrire. Si c'estNone, toutes les colonnes sont écrites. -
header=True: Spécifiez s'il faut écrire les noms de colonnes comme première ligne. Si c'estFalse, les noms de colonnes ne sont pas écrits. -
index=True: Spécifiez s'il faut écrire l'index comme première colonne. Si c'estFalse, l'index n'est pas écrit. -
index_label=None: Spécifiez le libellé de la colonne d'index. Si c'estNone, le libellé de l'index n'est pas écrit. -
startrow=0: Spécifiez le numéro de ligne à partir duquel commencer à écrire. La valeur par défaut est la ligne 0. -
startcol=0: Spécifiez le numéro de colonne à partir duquel commencer à écrire. La valeur par défaut est la colonne 0. -
engine=None: Spécifiez le moteur utilisé lors de l'écriture dans le fichier Excel. La valeur par défaut estNone, pandas choisira automatiquement. -
merge_cells=True: Spécifiez s'il faut fusionner les cellules. Si c'estTrue, les cellules ayant la même valeur sont fusionnées. -
inf_rep='inf': Spécifiez la chaîne représentant les valeurs infinies dans le fichier Excel. La valeur par défaut est'inf'。 -
freeze_panes=None: Spécifiez la position des volets figés. Si elle estNone, les volets ne sont pas figés. -
storage_options=None: Un dictionnaire de paramètres pour le stockage cloud. -
engine_kwargs=None: Un dictionnaire de paramètres supplémentaires à transmettre au moteur.
Exemple
# Créer un DataFrame simple
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'City': ['New York', 'Los Angeles', 'Chicago']
})
# Écrire le DataFrame dans un fichier Excel, dans la feuille 'Sheet1'
df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)
# Écrire plusieurs feuilles avec ExcelWriter
with pd.ExcelWriter('output.xlsx') as writer:
df.to_excel(writer, sheet_name='Sheet1', index=False)
df.to_excel(writer, sheet_name='Sheet2', index=False)
ExcelFile - Charger un fichier Excel
ExcelFileIl s'agit d'une classe pour lire les fichiers Excel. Elle peut gérer plusieurs feuilles et accéder aux données qu'elles contiennent sans rouvrir le fichier.
La syntaxe est la suivante :
excel_file = pd.ExcelFile('data.xlsx')
Méthodes courantes :
| Méthode | Description de la fonction |
|---|---|
sheet_names |
Renvoie une liste des noms de toutes les feuilles du fichier |
parse(sheet_name) |
Analyser la feuille spécifiée et renvoyer un DataFrame |
close() |
Fermer le fichier pour libérer les ressources |
Exemple
# Utiliser ExcelFile pour charger un fichier Excel
excel_file = pd.ExcelFile('data.xlsx')
# Afficher les noms de toutes les feuilles
print(excel_file.sheet_names)
# Lire la feuille spécifiée
df = excel_file.parse('Sheet1')
print(df)
# Fermer le fichier
excel_file.close()
ExcelWriter - Écrire un fichier Excel
ExcelWriter est une classe fournie par pandas, utilisée pour écrire des objets DataFrame ou Series dans des fichiers Excel. Avec ExcelWriter, vous pouvez écrire plusieurs feuilles de calcul dans un seul fichier Excel et disposer d'un contrôle plus flexible sur le processus d'écriture.
La syntaxe est la suivante :
pandas.ExcelWriter(path, engine=None, date_format=None, datetime_format=None, mode='w', storage_options=None, if_sheet_exists=None, engine_kwargs=None)
Description du paramètre :
-
path: Il s'agit d'un paramètre obligatoire, spécifiant le chemin, l'URL ou l'objet fichier du fichier Excel à écrire. Il peut s'agir d'un chemin de fichier local, d'un chemin de stockage distant (comme S3), d'un lien URL ou d'un objet fichier déjà ouvert.。 -
engine: Il s'agit d'un paramètre facultatif utilisé pour spécifier le moteur d'écriture dans le fichier Excel. S'il estNone, pandas sélectionnera automatiquement un moteur disponible (par défaut, il préfèreopenpyxl, et s'il n'est pas disponible, il sélectionne un autre moteur disponible). Les moteurs courants incluent'openpyxl'(pour.xlsx),'xlsxwriter'(fournit des fonctionnalités avancées de mise en forme et de graphiques),'odf'(pour les formats OpenDocument tels que.ods) etc.。 -
date_format: Il s'agit d'un paramètre facultatif, spécifiant la chaîne de format pour les dates écrites dans le fichier Excel, par exemple"YYYY-MM-DD"。 -
datetime_formatCeci est un paramètre facultatif qui spécifie la chaîne de format pour les objets datetime écrits dans le fichier Excel, par exemple"YYYY-MM-DD HH:MM:SS"。 -
modeCeci est un paramètre facultatif, dont la valeur par défaut est'w', indiquant le mode d'écriture. S'il est défini sur'a', cela signifie le mode ajout, ajout de données à un fichier existant (pris en charge uniquement par certains moteurs, tels queopenpyxl)。 -
storage_optionsIl s'agit d'un paramètre facultatif utilisé pour spécifier des options supplémentaires pour la connexion au backend de stockage, telles que les informations d'authentification, les autorisations d'accès, etc., applicables à l'écriture vers un stockage distant (tel que S3, GCS)。 -
if_sheet_existsCeci est un paramètre facultatif, dont la valeur par défaut est'error', en spécifiant le comportement lorsqu'une feuille de calcul existe déjà. Les options incluent'error'(lever une erreur),'new'(créer une nouvelle feuille de calcul),'replace'(remplacer le contenu de la feuille de calcul existante),'overlay'(écraser sur la feuille de calcul existante)。 -
engine_kwargsIl s'agit d'un paramètre facultatif utilisé pour transmettre d'autres arguments nommés au moteur. Ces arguments sont transmis aux fonctions du moteur correspondant, par exemplexlsxwriter.Workbook(file, **engine_kwargs)ouopenpyxl.Workbook(**engine_kwargs)wait。
Création d'un objet ExcelWriter :
Exemple
df.to_excel(writer, sheet_name='Sheet1')
Ici, ExcelWriter est utilisé comme gestionnaire de contexte pour garantir que le fichier est correctement fermé une fois l'opération terminée.
Écriture dans plusieurs feuilles de calcul :
Vous pouvez utiliser le même objet ExcelWriter pour écrire différents DataFrames dans différentes feuilles de calcul du même fichier Excel.
Exemple
df2 = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
with pd.ExcelWriter("path_to_file.xlsx") as writer:
df1.to_excel(writer, sheet_name="Sheet1")
df2.to_excel(writer, sheet_name="Sheet2")
Définition du format de date ou du format datetime :
Exemple
df = pd.DataFrame(
[
[date(2014, 1, 31), date(1999, 9, 24)],
[datetime(1998, 5, 26, 23, 33, 4), datetime(2014, 2, 28, 13, 5, 13)],
],
index=["Date", "Datetime"],
columns=["X", "Y"],
)
with pd.ExcelWriter(
"path_to_file.xlsx",
date_format="YYYY-MM-DD",
datetime_format="YYYY-MM-DD HH:MM:SS"
) as writer:
df.to_excel(writer)
Ajout de contenu à un fichier Excel existant :
Exemple
df.to_excel(writer, sheet_name="Sheet3")
Utilisation du paramètre if_sheet_exists pour remplacer une feuille de calcul existante :
Exemple
"path_to_file.xlsx",
mode="a",
engine="openpyxl",
if_sheet_exists="replace",
) as writer:
df.to_excel(writer, sheet_name="Sheet1")
Écriture de plusieurs DataFrames dans la même feuille de calcul, notez que le paramètre if_sheet_exists doit être défini sur overlay :
Exemple
mode="a",
engine="openpyxl",
if_sheet_exists="overlay",
) as writer:
df1.to_excel(writer, sheet_name="Sheet1")
df2.to_excel(writer, sheet_name="Sheet1", startcol=3)
Stockage du fichier Excel en mémoire :
Exemple
df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
buffer = io.BytesIO()
with pd.ExcelWriter(buffer) as writer:
df.to_excel(writer)
Emballage du fichier Excel dans un fichier zip compressé :
Exemple
df = pd.DataFrame([["ABC", "XYZ"]], columns=["Foo", "Bar"])
with zipfile.ZipFile("path_to_file.zip", "w") as zf:
with zf.open("filename.xlsx", "w") as buffer:
with pd.ExcelWriter(buffer) as writer:
df.to_excel(writer)
Passage d'arguments supplémentaires au moteur sous-jacent :
Exemple
"path_to_file.xlsx",
engine="xlsxwriter",
engine_kwargs={"options": {"nan_inf_to_errors": True}}
) as writer:
df.to_excel(writer)
En mode ajout, engine_kwargs sera transmis à load_workbook d'openpyxl :
Exemple
"path_to_file.xlsx",
engine="openpyxl",
mode="a",
engine_kwargs={"keep_vba": True}
) as writer:
df.to_excel(writer, sheet_name="Sheet2")