{ "cells": [ { "cell_type": "markdown", "id": "ce23b3df", "metadata": {}, "source": [ "# Excel\n", "\n", "pandas unterstützt auch das Lesen von Tabellendaten, die in Dateien von Excel 2003 (und höher) gespeichert sind, entweder mit der Klasse `ExcelFile` oder der Funktion `pandas.read_excel`. Intern verwenden diese Werkzeuge die Zusatzpakete [xlrd](https://xlrd.readthedocs.io/en/latest/) und [openpyxl](https://openpyxl.readthedocs.io/en/stable/), um XLS- bzw. XLSX-Dateien zu lesen. Diese müssen separat von pandas mit uv installiert werden.\n", "\n", "Um `ExcelFile` zu verwenden, erstellt eine Instanz, indem ihr einen Pfad zu einer xls- oder xlsx-Datei übergebt:" ] }, { "cell_type": "code", "execution_count": 1, "id": "3c32b5bb", "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "id": "26a00ac1", "metadata": {}, "outputs": [], "source": [ "xlsx = pd.ExcelFile(\"library.xlsx\")" ] }, { "cell_type": "markdown", "id": "d1efbe82", "metadata": {}, "source": [ "Ihr könnt dann die Sheets der Datei anzeigen mit:" ] }, { "cell_type": "code", "execution_count": 3, "id": "8d4d6a79", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['books']" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xlsx.sheet_names" ] }, { "cell_type": "code", "execution_count": 4, "id": "e3c46b3a", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TitelSpracheAutor*innenLizenzVeröffentlichungsdatum
0Python basicsenVeit SchieleBSD-3-Clause2021-10-28
1Jupyter TutorialenVeit SchieleBSD-3-Clause2019-06-27
2Jupyter TutorialdeVeit SchieleBSD-3-Clause2020-10-26
3PyViz TutorialenVeit SchieleBSD-3-Clause2020-04-13
\n", "
" ], "text/plain": [ " Titel Sprache Autor*innen Lizenz Veröffentlichungsdatum\n", "0 Python basics en Veit Schiele BSD-3-Clause 2021-10-28\n", "1 Jupyter Tutorial en Veit Schiele BSD-3-Clause 2019-06-27\n", "2 Jupyter Tutorial de Veit Schiele BSD-3-Clause 2020-10-26\n", "3 PyViz Tutorial en Veit Schiele BSD-3-Clause 2020-04-13" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "books = pd.read_excel(xlsx, \"books\")\n", "\n", "books" ] }, { "cell_type": "markdown", "id": "385c4a7c", "metadata": {}, "source": [ "Wenn ihr mehrere Sheets einer Datei einlest, ist es schneller, die Excel-Datei zu erstellen, aber ihr könnt auch einfach den Dateinamen an `pandas.read_excel` übergeben:" ] }, { "cell_type": "code", "execution_count": 5, "id": "f726919f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TitelSpracheAutor*innenLizenzVeröffentlichungsdatum
0Python basicsenVeit SchieleBSD-3-Clause2021-10-28
1Jupyter TutorialenVeit SchieleBSD-3-Clause2019-06-27
2Jupyter TutorialdeVeit SchieleBSD-3-Clause2020-10-26
3PyViz TutorialenVeit SchieleBSD-3-Clause2020-04-13
\n", "
" ], "text/plain": [ " Titel Sprache Autor*innen Lizenz Veröffentlichungsdatum\n", "0 Python basics en Veit Schiele BSD-3-Clause 2021-10-28\n", "1 Jupyter Tutorial en Veit Schiele BSD-3-Clause 2019-06-27\n", "2 Jupyter Tutorial de Veit Schiele BSD-3-Clause 2020-10-26\n", "3 PyViz Tutorial en Veit Schiele BSD-3-Clause 2020-04-13" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "books = pd.read_excel(\"library.xlsx\", \"books\")\n", "\n", "books" ] }, { "cell_type": "markdown", "id": "a04fd24e", "metadata": {}, "source": [ "Um pandas-Daten im Excel-Format zu schreiben, müsst ihr zunächst einen `ExcelWriter` erstellen und dann mit [pandas.DataFrame.to_excel](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_excel.html) Daten in diesen schreiben:" ] }, { "cell_type": "code", "execution_count": 6, "id": "4f85f0cd", "metadata": {}, "outputs": [], "source": [ "writer = pd.ExcelWriter(\"library.xlsx\")\n", "\n", "books.to_excel(writer, \"books\")\n", "writer.close()" ] }, { "cell_type": "markdown", "id": "5ebdf730", "metadata": {}, "source": [ "Ihr könnt auch einen Dateipfad an `to_excel` übergeben und so den `ExcelWriter` umgehen:" ] }, { "cell_type": "code", "execution_count": 7, "id": "2dc2a960", "metadata": {}, "outputs": [], "source": [ "books.to_excel(\"library.xlsx\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.11 Kernel", "language": "python", "name": "python311" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.4" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }