{
"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",
" Titel | \n",
" Sprache | \n",
" Autor*innen | \n",
" Lizenz | \n",
" Veröffentlichungsdatum | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Python basics | \n",
" en | \n",
" Veit Schiele | \n",
" BSD-3-Clause | \n",
" 2021-10-28 | \n",
"
\n",
" \n",
" | 1 | \n",
" Jupyter Tutorial | \n",
" en | \n",
" Veit Schiele | \n",
" BSD-3-Clause | \n",
" 2019-06-27 | \n",
"
\n",
" \n",
" | 2 | \n",
" Jupyter Tutorial | \n",
" de | \n",
" Veit Schiele | \n",
" BSD-3-Clause | \n",
" 2020-10-26 | \n",
"
\n",
" \n",
" | 3 | \n",
" PyViz Tutorial | \n",
" en | \n",
" Veit Schiele | \n",
" BSD-3-Clause | \n",
" 2020-04-13 | \n",
"
\n",
" \n",
"
\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",
" Titel | \n",
" Sprache | \n",
" Autor*innen | \n",
" Lizenz | \n",
" Veröffentlichungsdatum | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Python basics | \n",
" en | \n",
" Veit Schiele | \n",
" BSD-3-Clause | \n",
" 2021-10-28 | \n",
"
\n",
" \n",
" | 1 | \n",
" Jupyter Tutorial | \n",
" en | \n",
" Veit Schiele | \n",
" BSD-3-Clause | \n",
" 2019-06-27 | \n",
"
\n",
" \n",
" | 2 | \n",
" Jupyter Tutorial | \n",
" de | \n",
" Veit Schiele | \n",
" BSD-3-Clause | \n",
" 2020-10-26 | \n",
"
\n",
" \n",
" | 3 | \n",
" PyViz Tutorial | \n",
" en | \n",
" Veit Schiele | \n",
" BSD-3-Clause | \n",
" 2020-04-13 | \n",
"
\n",
" \n",
"
\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
}