Files
DSAI/02_daten_tabellarisch/code/daten_tabellarisch_1.ipynb
2024-10-21 10:10:42 +02:00

7693 lines
443 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div style=\"\n",
" border: 2px solid #4CAF50; \n",
" padding: 15px; \n",
" background-color: #f4f4f4; \n",
" border-radius: 10px; \n",
" align-items: center;\">\n",
"\n",
"<h1 style=\"margin: 0; color: #4CAF50;\">Einführung tabellarische Daten</h1>\n",
"<h2 style=\"margin: 5px 0; color: #555;\">DSAI</h2>\n",
"<h3 style=\"margin: 5px 0; color: #555;\">Jakob Eggl</h3>\n",
"\n",
"<div style=\"flex-shrink: 0;\">\n",
" <img src=\"https://www.htl-grieskirchen.at/wp/wp-content/uploads/2022/11/logo_bildschirm-1024x503.png\" alt=\"Logo\" style=\"width: 250px; height: auto;\"/>\n",
"</div>\n",
"<p1> © 2024/25 Jakob Eggl. Nutzung oder Verbreitung nur mit ausdrücklicher Genehmigung des Autors.</p1>\n",
"</div>\n",
"<div style=\"flex: 1;\">\n",
"</div> "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Allgemeines"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Viele Daten sind in tabellarischer Form\n",
"* Gespeichert oft in csv, txt oder in zBsp. Datenbank\n",
"* Einfach zu interpretieren\n",
"* Gute Skalierbarkeit\n",
"* Einfacher Austausch zwischen verschiedenen Systemen und Plattformen\n",
"* Einfache Sortierung, Filterung, Aggregierung"
]
},
{
"cell_type": "markdown",
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"source": [
"## Aufbau und Eigenschaften"
]
},
{
"attachments": {
"image.png": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAB7AAAAH3CAYAAAAypsC9AAAgAElEQVR4Aeydd5QFRZXG8X/17FHXdI7hKGLErLgYEBEQVBCMCEpQWAkuSFRBBQwIKEhWRERUJOgCigQREEwIgoAgKAbALGZl3dx7fs1+zzt3qvt1z7z3pmfm63Nmul93dYWvvrp1696q6jUqH0bACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEBoDAGgPIg7NgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRqCyA9skMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYgUEgYAf2IKrBmTACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAE7sM0BI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARGAQCdmAPohqcCSNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAEbAD2xwwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBiBQSDQ2YF95513Vv4zBuaAOWAOmAPmgDlgDpgD5oA5YA6YA+aAOWAOmAPmgDlgDpgD5oA5YA6YA+aAOWAOmANwYBqHHdh2zHtigjlgDpgD5oA5YA6YA+aAOWAOmAPmgDlgDpgD5oA5YA6YA+aAOWAOmAPmgDlgDpgDvTlgB7ZJ05s0nv3i2S/mgDlgDpgD5oA5YA6YA+aAOWAOmAPmgDlgDpgD5oA5YA6YA+aAOWAOmAPmgDkwDQ7YgW0Hth3Y5oA5YA6YA+aAOWAOmAPmgDlgDpgD5oA5YA6YA+aAOWAOmAPmgDlgDpgD5oA5YA4MggN2YJuIgyDiNGZnOE7P+jEHzAFzwBwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHDAHlhcH7MC2A9sObHPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHDAHBsEBO7BNxEEQ0TNfltfMF9eX68scMAfMAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB8wBc2AaHLAD2w5sO7DNAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHBgEB+zANhEHQcRpzM5wnJ71Yw6YA+aAOWAOmAPmgDlgDpgD5oA5YA6YA+aAOWAOmAPmgDlgDpgD5oA5YA4sLw7YgW0Hth3Y5oA5YA6YA+aAOWAOmAPmgDlgDpgD5oA5YA6YA+aAOWAOmAPmgDlgDpgD5oA5YA4MggN2YJuIgyCiZ74sr5kvri/XlzlgDpgD5oA5YA6YA+aAOWAOmAPmgDlgDpgD5oA5YA6YA+aAOWAOmAPmwDQ4YAe2Hdh2YJsD5oA5YA6YA+aAOWAOmAPmgDlgDpgD5oA5YA6YA+aAOWAOmAPmgDlgDpgD5oA5MAgO2IFtIg6CiNOYneE4PevHHDAHzAFzwBwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHFheHLAD2w7sVgf2N7/5zerxj398tcYaa9RnfruRL30j/81vflOddNJJ1UMe8pDqyU9+cnXBBRcsab1EnrzgBS+obrnlliXNjzm69Bx1HbgOzAFzwBwwB8wBc2CpOXD77bdXO++8c3XPe96zeu1rX1vdfPPNtY4adVfGOt/4xjesuw5gXHzeeefV407Gnit1TJHHceeff35v7r31rW8d4cT1Urczp3+3rL/++utrebPmmmvafjIAedLEy4W0ny984Qu1PYy6PeWUUyracVP8q/V+lt/f//73Z4rRHXfcUb3+9a8fycYPf/jDM0mfcm6wwQYzb/O5vCeccMJMyjtkfg8FkyhjXC8eCw25zaz0vDHee8ITnjBz+TxkXCMmjLVm3VcvFBs7sAesWC+0Uif5Xjbu8HuS8TuuhXXmCBgEDcYd/pbacBF5slKNTebqwrhq3IybOWAOmAPmgDlgDiwVB6JBHZ2Z3+Ql6q52YA+Hn7G+VuqYYhLjuGgcX+px4FK17aGlyySYpz3taaPxOfIG2WL7yXDkizjTt/3gFNt2221HdYuTlHuKz+e76zjL71kbxbPz0g7s4bW9abeVzIGlch5HGbNUeZg21o5/9bWv5Vjn6GB2YM/lasTEDuyObvHlSP7Vluds3PEAbG7DXyo+5Jn7F1988ZIOoCJPVqqxaanq2ukOo825HlwP5oA5YA6YA+bA8uNAXIG99dZbj2aZR93VDuzh1Gt2gCzXXZ1+/etfV9dee231wQ9+sNpqq62qb33rW6OxWh7HfelLXxo96ypjonF80g7strx3zd9qC/erX/2q2muvvUYOTk0ytwN7OLIlcnIh7SeuwP7Upz7Vu83G9FfqdZbfdmBPl/9DcdZmPv/iF7+o6NdoZ3vsscdMJ3sMBZMoY+zAnm47yPzzb+MdOcB4zw7suZyImEzbgc2Y56abbqpOPPHE6lWvetWidg/u6GruFWyNrqEjqXw9l1BDwSMbd/g9lLw5H8PhTOSJHdjDqRe3EdeFOWAOmAPmgDlgDpgD8zkQdVc7sOfjs1ScyQ6Q5erAjqusp+HEjMZxridZX9PO+yTzOpS4cJpss802Iwf2YYcdVuHUHkr+nI+5Mm6a7Wc1Y53ltx3Yc3k3aW4MxVmbywUP7nGPe9TycNa7FQwFkyhj7MCebjvI/PNv4x05wHjPDuy5nIiYTNuBnWUy/UOsnz7XXX3NfcLZgb2CtiXPxh1+9yGYw84VFCsVj8gTO7BXR52vVC67XOavOWAOmAPmgDmw8jkQdVc7sIdT39kBYgd2uW6icdwO7DJGs5Tj0ekfP1Uwyzw4re48mGb7Wc31kOW3HdjdObkQ3mTHwFAcpXZg31mvPtdOHEOpl4VwzO9Mtw0b3+njy3jPDuy5OEdM7MDu6O52Y51LooXikRXFm2++ufr4xz8++gbT8573vOqzn/1sxXZgOQ2UykMOOaRad911RzOGCX/GGWfUYbNxh9/EwYziz3/+89WOO+5YPf3pT6/fvec971l/l5m084zjn/3sZ9XJJ59cPyccnfnaa69dbb/99vV2AsRJ/s4+++xqs802q/7hH/6hDrPmmmtWW2yxxUy/HXXNNddUO++8c0Xa5JO80KhPOumkuuwZ76iYNylreZDENnIvfvGLK7C44IILKrahkoLz7Gc/u/rud787qisU0/jNpQ996EP1NjzMZtQ7fN/nRz/6UY2d7rFlXaxv8ibs11tvverGG2+sn6tuqHeVlzqgLjJn2P7h3HPPrTbddNM6LjAina9+9av1N7543w7sybTrWHe+NqbmgDmw2jmQ+0L6PbYj2mWXXep++iEPeUi1zz77VD/5yU9GfR991qWXXlrtueee1bOe9axRH4jOc/jhh8/Z0i4bgYj/1ltvrbe+Qw943OMeV299hH7DH9sg6VuX9OeXXXbZKF3VlfQa9ZnSk9CH6HsVbiWfpWOgG0gHyfof5e+C1Q033FA95znPGek++++//0jf/OEPfzhHBzr++OMr6n8lY9tUtu9973sVq/823njjinaBboa+hm57/fXXz8OELbYJn/lMG5BOmR1kXeqrKX+Tvj9Ob28ay+T7fL8WnXyjjTaqyw0eRx111Ly2yjjrgAMOqMcx4AOvkS+HHnpoxbaZWZZguERWbbfddiNZ9Za3vKUinklj0RRfk/wcl6c+XBo31lHexo098zhL284hg8GaMUpJ3ir+IZwjFmpDOvOsxJGYb9rX+eefX7Hlvdow5ze/+c2jLfBjGlzzPjLviCOOGLVb3onbk9NW3vSmN43iRBbD5cjFGK/yrLPSiXn19VxHhbDSWZhNoy11qc+VUj9d2sRiMEZ3fOc731m3DXS+vO0/OMa2oXot3c9xIWeRY7OuC+lf42w8uVzIp/e+9701FsgQrrmHfME+pPjo9/gdda0sv5Et2LkIS5vgXX5Tn8Kjj10x99tXXHFFbYsinzvssEOtt2cbGemQBltZq12us846Fe1HeejTli6//PKaH/CEdPfdd9/quuuuqzbYYIM6/mnsuKF85nOpL8ljo1133bXIP/iBzTfbXtEVIzbCr4vtl/4dfV845zP8yGWY9O9ZYaJ8M1akH0XPlo6CrTe2K/RAbK/Pf/7zR9igYysOznBbTjZstdEeHMP52jYhc6AfB2Lbknym74r9Uu7LhDGy/W1ve9ucMR8yrmTLiW2e68X0pUq/T9+kd+KZ/rnJfyN5Q3miT4v3u6YrPaPJzhNtCbk/oK/GBhHzO+66o6u5VzCvwJ7xCuysKKJkykgokvCbjjMqmAyMacAKE880OMiTlUR+cx+CS0mL7+n6Xe9618ioCClRKPUsniVAUCrf8Y53FMMQfhbKDuWicaOIxjzqWphkvGNj51lpu5wozMACRVHx8g7fSHvmM59Z36OuYnl5hpJNeOGVFTMpQO9+97tH8ebteuIzhDBcaKsb8hG3PyM86dzrXvcapUGeCLf77ruPuITwWq6rJcYJTD/vpywYL+NlDpgDk+IA/V6czHXggQfWE8HUl+qMgQqdgnRzX6kwOr/xjW8cKc45bCl++jsm6dEXcq14OGdj2Di9ZtbfhJtUPfSJp03HkD5DfH2wOvXUU0fYEwdOR+KgXlQfr3vd60b12ie/KyUs/JQuKkx0xikbv8XbVEfwOX7PVTpw3/qaNqZd9PamsUy+z4TM0hiA8YlkCnyTo1+Y6iy9O8sSxkRMclE4nTfZZJMKh8u0MSL+rvIz5wkuKb/5nLk0bqxDPhh7ymCS4xPH4jgLIy7jlyxvc9qzwLBPGhGLUjkzR+LqLNpkdLTE96PMi2kIO/hJGN4Bszj2b2sr66+/fnXVVVfVXIzxxrS5Vjp9sFgNYbtg1kcux/hKdgMwHVefV1999Uxkyyzqd1ybkH1qofJqt912q9AHM9+RM9IxKGesl9gW4v2muF796ldXP/7xj2dWJ019u2RDtPF0yT/2xXPOOWdeH0mfGSfJRPmNTajJLkldyS45zukZ7Yq53ybv6h/og3/wgx9UnFWXpEPd4Zx4wAMeUN8nz5RF3B3XliQbCd8UlolBLEIh3ajfKo1pnXNf0lXfwOmKriyc8hmM0KtjHXWx/Y6ry2jjXO6YkH90OPSmjB86X/ykhPrigw8+eBRWOqNwAG/p7rLV6pnPtqeYAwvnAP2Gxh7I5/e///3FvizKJ2Tf6aefPi9cbOt8zzmO47r0pe95z3vq/uehD33oSBYQJzL34osvHvVL1Df9TQ6n9NHbx+l58t+oj9S7/M7+m+jTaurneD+m26ZnqB9s08uQgcTRh9u9PNMdA9uBvYQObMh4v/vdb05jEFHjqltmVMgpqufxTOODSFlJ1ACBlS6sfPnKV75SrzYgLLNT1IGj8H/729+u4/jc5z43cnpuuOGGtbOWxsTsQJRnlEJW8D7qUY+q8w3ZmVlPGNI5+uijqy9/+cu9iN2nESgsjYfZtsKBVRcYrFhNwYxDfhM2K+axsfNMikdUSqIwo36iEOEd0kDxVdoYa5Svs846axQnK96Z5ZKVVSnn4PTABz6wjgeHOM5v4mEmMAKW+FHeGWhQNpRc7pEfVnYTN5izMp771Al1Qxyc11prrfq+8lk624G98M5Vde6zMTQHzAFzYC4HsgNGhqjcD9H3aeUA7zBQoJ/lGkxjH0ccF110UX0/96tN8aOjMMjI6fJbfTHpsEJbE75YGY6OQRroToSl30U/Wsn1TPmk76D/US9Z/xNWCjcOK3CMRjfwZIXPS17ykpHegm66knEdVzZWN8FF9FPwRt879thjR3WBAY37xIPuJ721xGnd07iga32x89O4fC72edbbGS+U9PamsUy8D/+axk/ShYk7OvX322+/uk1znxVZ7GhFG+8qS8AW/BeLQ5f3yVOcANQk33Ke+nBp3FiH9q/VDuJVPItjcZzVVi95p6kuOMwyTDTky5Cj9DNH5MCmXeLwibjEa+KRQy3izTXtIU4Y5/q2226r+cWkFcbmxIUsxujFCkjaqfozuA2XyWNb3lUGn+fqKBEzcIbHEaNJtqVcn9hS2uoz5mO5XXdpE7JPTQrj2OZiu8htTljG+9nOo7iQubOwZ5En2nG08Rx55JGtNp4u+X/EIx5RPeYxjynKpuhs6yq/o12yya7I7kXgF+2Kbf02treSAzs7GeOktNyWomyU40AcYAUt+VadNp2zvBdPpnHOfUmXvh1+aCzSVAbuS/ch3011VLL9Eh4eSLeMNtFpYJDjnBUm4Bh1wjYs1cdHm3fkdbQFU4cam+ay+ffcftd4GI8uHKDfkAO7bVwRF0HEd9ratvoH8jHJvpS+STsdd9HbSzhEedNWBvw36LDEkfvEqF/mPrGrnSfL5Kwfl/LedK+jT7pXMDuwl9CBDTFl/GMgc9ppp82ZtYEjFjJgMBGJ2e6EGV8Qi0ECittHPvKROlxUEtuUMQbIbO3IFjWKV2lhRJMCw8rjuE2ZiBmVXTpzGo6ezeqcB54f+9jHRga+mIeY19jYCdOkrEVhhtA85phj6sEFmGNw4F0GXcJOih71waBA96knwmYhIKN53EacdCQcYj0yIxAlNK7s1j2VE6e50sToyf24gps6YoYQ+UOZj8ZkO7CtSIhHPpsL5oA5MCkO0O9FBwz9EFsHouuwXTR9Hv0WZ1b5ldIlDgxZOLXVx9EfEzb3q/RlKO1M7MqGHn4THr2HQYXioq8nrtgXRwMFz3CuYgjkHfQ1+tFSXlfCPXQTYYP+F2cpq3xg9dKXvrQO1xUrMNSkR96J9cP2uSsZU+HW9YyBDZ0PvY4tmKkPVoXA38hT7qPLoaPTpthKG2xVf5Hbfeura177hst6O9u5leo+6sBxLBPvq/xwtFR+dOEsI5gIAL453zkcODJxlLyBb9SZVRc5jkn/Jk9ZfkqPL+VJY5OYjyYuKWwe64AZ75A2YeJkibaxZxxnUS+0b+Qw8lbGcu4PXX5GfkbegWnmiIzb2UHCeFATf3jnlFNOGa24iHhzzaQp9YN8aiF+LiCO4TSWJB9xgjOOGcnotrxHTvj67zpexAx+agxewqipLVHHhI91S53mttS1Pks2l1J+hnwvb7vb1iZiOfpgzCSOT3/607XsZ5U0soU65I92IRxjvXCt9OJ94mK1L/0IZxl8ieujH/3o6B29O41z3NkPGw+rbZVOycYT84+sov8Hv6hbk38WOKBPIDfi6lLZrUgjy2/ZJYkPW1fEQ7ZC5U3nNrti7rfpE77zne/U/Ss6De+SH9UfOr6c+dxjJTzhlFZbWyIs74gD0VZHPWNnpZ4zZ7K8V1rTOOe+JOob2UYnfSPyg/JRR5QBHQUbbBzXgE8p3211RHh4IPtv5EcprknfWygmcXFXF0yiLVU4ouuI65ocxjP18egyLEjiHn9wivKzXbhW8KNj084mjYvj+3t/bSxWFxb0G3Jg0+7oy+jH+NPCPe4jIzWmiX0DcpV+EXmPfMHWIH07LpzIfemFF1644L40ps/4VpzNerv0Ez2P5xgHZdC4L/cN0acV38njhdwndrHzkJ8sk9v045j/0nUvz3THwHZgL6EDWwqWKhuyRIMFJPvpT386Z4Z2m7EvKolRGUPBoUGyYpnvv6gTjmc5VeOqYJ7TmbPaWIZn8poVKX17CHKjBKg80zzHmW8qB9/poRxxy6eomMfGTt6alLUozMAMpS+XJSouWj0djYsIHa1qz0JAWBMnKxKUfwQQ96LCrZU3Ma8KXzqT9xKPYv6jQd4O7NWlEEQe+Np1bw6YA9PiQO6H4uo7lHf0H/VhX/jCF0Z9LHpM/OanwuhMH0eec78a42fFm5x/nL/+9a+P4o+KvuLKAyWllc+zNupMq26a4kX/i6tBSvpf1DMzPvF3xAq9MBokFQ4nuY0+d0+gYDUweqOwiWfprpGnUcdXfTZxm7AxvtI19SUjgOKb9Lmr3h45FsuZ72tlK/lknBMnkKptR0woNxiDdTQgZFmiSTIqP/q3DB+qCz2b1jnLT01OVXo5T/oUEOOQcVxSWDASFxjrxPrPY0/kKxgr/XgmL4oHgy6Oaz0n33oWZYKeD+kcHZqRd+Qxc0TGbQxk4gZO6Fj2XLaIN04qGd+Rs3F73JyW8Mtn8qg20Jb3nA//vlvvi5iBLTyO2HRpS8TBO7Fuc1vqU5/IuJiH5XhNm9BuNnliRi7PQjGOK4iJM/cNwjHWC9dKP96PK7ioqzhhKdpr9O40zlGG5nYef6sMTfnPunV0OGNbKjkoY9rZJgQe2S5J+fvYFWPdICvzbi+5fbz2ta8d7TJBfx319xw2YhOvJb8jTpkz2PHgJ+8p/DTqNseZy6C+ROGoD/Up0jdyHUX9hffgqcqvfrZPHREHaZT4oXxN87xQTJTfzNsSJug3sYz5HcYp8VMgsV7iqkXJizix5AMf+MBItkwTJ8dtm81q4QD9hhzYLCKIO7XRr0neqR0jQ0p9lfBi3ENYvSe7U+wj1LZ5J/elbNGtuKKfRvI2p6908rmtr8lyMOsfYPDIRz6yLgNlQf/M7+T09FvpdrHzUM4cL7JT5e977uiT7hXMDuwldGCL9CICykacRQpx+xAoKokiKnHHrTFxNqOwsVXZK1/5ylFDViOhA2er8JKje6eddqoNHOSTWeXMyFfD0Llp1Y7KOMkzsw432mijeXkgX1Las9KnwSb5iIpMrIsozLgu5TkrOigyUbBggMdYx7u5DoU1z+I7bBvOYE4KVNy+KuZVWJfO5Jf0ohDPQifyRIK/VEbfs6JkDpgD5oA5sBAO5H4o9nvZcKyBBH2VZsBjwGH7WozB8VuH6pPb+tXYx6ELychPOciH+k7FFQdKelY6Rz1hIZgM/Z0u+l/EtoSR7mWs0NfWXnvtEfaEy065oeMzjfwxSNZ26mACRmzDiR6oVesaqEae6l7MUxO3aQOql6Yz9RUdmDHeSV636e0yEESOxbFMvF/SXaOzVG0bfDGI53IzxmFsxHgmyxLJI5U7Togp4a5wkzxn+Zn1+JwnjDNduVRyYAsvlWEcJgrHmbwJ31wvkZNZJsQ4hnAd+6XIO/KW8ZBxO5Z9XPnAWDjFM45sTXgupRXDxuvYt7XlfQjYDjEPETNwjW2MtsQkA+HdJpcpW6zbcW1JceZz5twQMeuSJ3CUY6mtX1kMxmp/yg9xaVJkxLGpXpruZ7kb9ValNY1zlCOZF/G3uNWU/zZO53qhrJQlpp1lWMkuyTtx94hxdsXYb0eZJRyzbI3lxaYYV6O3hY3viQMRp1yXYKVvRCu88jTNcy5DF30j11HW1fJz0uhj+6W8TfyYJhaKe6GYRDlDHIpP5REnJIfGlTHyJcoYJtqqP2CSHrulaCty9HQWecW0fW27iTmwOA7E8W6Wz1HeacxB+2/zfTTJmNjmuVa95b40yumYvvrMnL5kTz7nsig9zjmPpBOfR0w0Fs3v5PT0W+l2sfN0yUvM17jrXp7pjoHtwF5CB7YanSqeLQa01B/CMcMjE7Pt+2tZSeQ3DlFtH4jjmm17lF5cmZAVOwYDpVn8MX1WOvMeK5/VQDjHbwsorWmdaYg0cIzc0enOQIbtFqKQUWNXXppmozYJM72nc5x9x8zOuJr6zDPPHOGc6zBiHesc4cL2VdqSBoc2z0mPckhRQ4lqW7VEelGIx+0kiIutEbXKKnNQZfN5cR2v8TN+5oA5sJo5kPuh2O+VBgZxdSYGgUsuuWTUh8bZrhpgtPWrWRfq48COu6es1vpr0/8itl2xQk/jG4ZRT+Qax42+f75asY56KDok252BRdzpSLor2GtGesYeQ3NpBfJC6mvaddGmt7MqKuZZg27yFO/HLeB4Rpya/Am3GN+oHGCKgTHv7ICc4XtjWZZEwyVxRF2f8RTjKsU9rXOb/CzliTFBVy4txIHNN1mbyprHWYqf8Mh9tXsZepriWer7sV9i547YbzRxJJZd486mcsSxJVuSxvH+LrvsUu+4xrs5rTyGK8XflvdSeN+b+91wOEpdCpeoc7C6rk0u806sW+koimsh9al3l+M52itoE8j0UjkWgzG708U4WQygT71oVzyeN9VL0/1xcjemOcnrKEew8USnbSmdpvxHOZA5HeslyuKYdu7foo2K+KizbFe87rrrRnVRsivGfpv+PMpVypbbB3qMVkaTJp8QQr8phR0nGyNO2tFQeDJpSN8rjXqGnk/rnMv7yU9+coQfaZb0jVhHJX7EfpYFSnxaAuc/+HW1/UZ+aOvyaWGQ410oJm120YwJacQyZltq3io864Gy8TK5mkVc6OXgK+d4LpN/2wZkDiycA/QbGu9m+RzlofwYtO823wfjErVZ2rA+XRf7CK5VZ7kv7evAjluIK85x5ywHc/+G/+aBD3xgLXdkFxj3TlOabXYe3snxamFoU3xt9zv6pHsFswN7CR3YNCAcwnSaECXuz6/tErJRikZ8xhln1Kt7GVCxmqHtG9h8E/JJT3pSTXZWMyEQiJM99TGA0fnyF43LkYTkralxKxz5YMs9KRJRMVaYWZwvv/zyecIubpUA3ggU8ovCzSoXlT/meVx5VZa4jTiCZMstt6zjywO2LAQy1lKKyMvOO+88ci7HyQJRkFOOAw88cOTExvBPffLtI/KWDXl8GweeUO+UO36TToJfZfJ54Z2tsTN25oA5YA7czQH6vTiYiP1eaWCAA0Y7quBYYoBCn3X11VfP+b6bBhht/WqbwSwaNRQXAxutxKAf3nXXXeutYEmf/vTKK6+sdTXSXE31W9L/4iCwK1bUpVbWo4/EbzFirATj1YRrLGv8Hvh73/veejzA6pq4G5MGqnHLSzSifFEAACAASURBVLDXN//Qafm2ozDmWeQ273Ova33F/E37Gr2dcQ1544xxO7dffpOPeJ/wlB+s4A+G9Vh+jMClvLPFc/xeJNzMsoTnjJ1o/+jOMXzcYq4U/6TuZflJHpCFbXnqyiU5mNvGOqQTJ0RQN6effnpx7FkyJgmHKG/jOEvPh3TO/RLjWtoWecwckXE7czL2HXCz7RvYON3o6+Ay4zqN5TP266+/fj3Gg+c8I59HH3306Nva5K8t70PCeEh5yZjBY+UvtiUcaPSFTXKZd/q0pS71qXwsxzNtQobn3OfENrEYjLFfYcylPeRvQ8bJ/0310nQ/y92ot06zLqIcQRbwyRUtVMg2nja+tXEafpfsdFF+k/Y4u2S2K6IfUw9NdsVYNvXxEcssW8GcRSDkBf7Qr8t50Fc2RvsanNE3UcE2fkeVfJHPmK9pXefydtE3cLbLZgsuyCTiAQ+2WEemgBV/lJk6evKTn1z/7mr7jfwAD3SzaWGQ410oJpqAACboz22YkGbc9ZJ3sLvzDn0rO/iIc+CoPl55ZbKj+muc31oItBBHleL02TYjc6DMgahHZPkc+yz5MZCFTFKSHEQmIhu5TxtHPqh9x08dNekCuS9VH0R9xfQ1runbN5XqHTkUJ2LTN0T/TfRbyS6w2HRLdh7ylmUyOBG2lO9x93p5pjsGtgN7CR3YamSlsxoEpIiD3FJYSEW4rCTyO26rFN+lEd/vfvcbNXQp6RiBuJbinJU8FCOcwqzOvummm0aCIQ5EZmHgIV+kiYJFg8fIwHd1HvrQh9ZlQjhh7ItO5lh+ruN2lhHvJmGWG2gUNCgy2lI9r0DPQkBYK744c1h50soQhUFoMEM/lyH+Fg94h++16BtUMQzX1LuEuAS/0vG53JEaF+NiDpgD5kB3DtDv9XFgEz5+ezD2WzIUcE/9XFu/mnWhuOKD/ldxKy4GAAxudL90jjrCSuVBF/2vL1booBh7hClGIXSetdZaq76HcZLB4ErFdFy5MJrJqCyMOGc9jcE0Oqe2LYxhdV1qJ13rC8fCuLwu9nmT3i7Hs4wKuf3ym7TjfZW5dN54443rsQ8yAkMv/MIJABZwT4ZgTRTOsqQUJ/fAdzGz0PvgR56i/OySp65c6uLAJq+xnZbSl/yMxpw8pojydugylNWGOL9yWSln5oiM23EcmN/jd3TYEI/CcJ3bJrzU915xBqld6J14jvFSV21578O71RQ2GyhjPxQ/RxBxL8llMMt1m3HsUp+Sc/nd5fa7S5ugrIvBONZJvo42lqZ6abqf5W6Ma5r10NfG05T/Nk7Db+kaURZH+Z2xjL/1Tl+7Yuy3s9wC0yxbwTzjwcILbI6E79KWpPNHp2MsC9exLWcHyTTrOpc350u/o74xrk3pHe1qRB09//nPH/U3et5k+6W89Pf6vqrCc45ycVq4zAIT8o6eW/qkDOXM2KiPV5nhJDunRGzos5lYqDA+d7cRGCtj1cYB+g1NhMvyOfZZccwxbsyitht39ejal45zYFMW+ib5oZRWPMdy4JjGNoLc2XPPPUef8MJ/Ix9NfJfr2GfJga10x40XpF92sfMQZ1Ofgx7Q117Q0SfdK5gd2EvowGZW3Gte85o5nSEEjYNYSMQgl2+ZxC2yI6lpfITLSiK/ISAzOWN4rvmm5G677Ta6LyWdsxTc/A4KJNvSRMGRw5B3KY7kaVp/WUmP+aDhUw5wayo/ZfnYxz42KqsUc/LbJMxKZYlb/ZAH0o5CjneyYiasFV/J8BDzo3AIuzjLMpaZa/GA8AgXthHKYRBwTEJAiPIsCn6l4/P0eGtsja05YA6sBg7Q70UHTOz3cv+tPjN+V099Fwo+O47ot/q5tn4160JRJyEfOS7qA4NPyXmhsKU+eaXVY8RG5dZZ+l8frLL+pe8Z5oER9zVpcqVhOq486HVaRSKsS3oabYa44HIOz3tg+L73vW/B3O47IB1XrtLz3O5VXs7ozhgM0dtz++U38cX7bPG83XbbjcqruMBO39LOMkJhdGZbe7iYw6E7a6WNwnJW+FLZJn0vy88ueerKpa4O7K5jzzgmzGOKKFOWgwxl9WGsc67pczJHonE7btea32Wspf6nNLbME3yo59tuu63mJRPFmwxZMV5xrynveu7zXN0zy6PoqKEtYc+I9dkml0t1G/FGzoyrT8m5+N5yvaZNbL755nPwE5Yy4i4G45e//OVztplW3LSf2Jc11UvT/Sx3o9467boAj642nqb8t3Eafsu+F2VxlN9tdknJsazXCfsmu2Lst0tyK8tWYZ75of63S1uKeS19vga5ihOD/or8i5PTrmPiz+Xt0rfz3rgxCotoNMGubx0RP+2m5NyNcnFa+MwCE+Ud/RBZLt7qnPkb+3i9m51LfJbm5z//+dRs3UrX57l9t/FY+XjQb/R1YDNmYdvtUvtWO99pp51qHVsc6tqXyk7Fe7HPjH1pl75Jeh79nPrj2P/08d/ILtA3XWGRz9HOQzmzvCM85Y06lnBsO/fyTHcMbAf2FJ2spcqMpEdx4vt/rKjAOU2DozO8/vrri50hpGeLaa30JfzWW2892uYlK4lqJCgGGLZ4j3RYIc33dWKjlcL4xS9+sdpiiy1GaaDkkU8GxiIsSiXfnNZqYQi97rrrVgcddFCtYJXKPel7DPBZgY2yrQE+5WN2HDNwEGJKM5afsOSdrbSpCwmPKIAiLlwrntI5r/DG2J6/XZQVM2Ed44vbHIFn/u6BwvLtIQbB4C3B04Q96R5++OGjQTjbs7J9UuRJNjYpHZ9XvnLgOnYdmwPmwLQ4QP/T14GNEo4TG8Ox+mr0IfpM9Xfqk9v61djHZYNZKS5hQJxs40q/KL0CPYfZsavhW81d9L8+WMWVMuDJtpB6P9YRdcsnUKLepnCr4XzZZZfVDmgwQqc9++yz5+lpGqiCB21C33OWTo9xM35/Uu1E+A2B21319siNOLDP99H1DzvssHrsBA7o9nHbS1Zd8+1m2jPP4RnjJiYOY8Rs2h76uOOOq2gL1AXvPO95z6t1cuST8Jz2OctP2keXPHXhUlcHtsoI7m1jzzyuVfy8H+VtHGcp7qGdWWV11FFHVUyQoO4Z0zHmzf1NNm6X2hdjM8ZgPKOcTWNLuBhXbcA/ZCF/F154YT3Ol0GuxF9h2JR3Pfd5rr7X5uwDqy5tSXK5qW4j5n3rM767HK+7tInFYIyTkvZJO0VnjG1NeDXVS9N98tyktyrOaZ672nia8t/G6SabV5bfXeyS4NTVrpj7bTmXhSNx0TdQj/zJRkZ74Vq7CbIiGd2I9/q0JfptbGr048RPv84qNHQmfToo6hnK17TOubx99A1kPFtW5zEKn/uI3yIn733qSGVllTu7PaIv8afPtOj5tM6zwkT5R09EX6SM9KnvfOc7611MYrvKfTzvMjFHPEJfx8GjOH2e278aD+OxGA7Qb/R1YCs9+rA4ZqGdM8mbT/AiQxWOc2zzXOtZ7ku7OLB5t2vfxM4N6C8lOYs8bPLfCBP6AOmffdLtY+dhjExfqbEwZ307XDh1OXf0SfcKZgf2EjuwI/m6kMBh3CGYA+aAOWAOmAPmgDlgDpgD5gAcwFmLU1tGYCaCmBvduJGNpyXD5ayxJE9L6UiZdXmdXjeuGifjZA6YA+aAOWAOzJ4DcUXieuutV914443Ws2fsRzHvZ897Y27MF8OBXp7pjoHtwJ6x4M0zHe3AtlBYjFDwu+aPOWAOmAPmgDlgDpgDq5cDrEbWttecr7jiChvWOo7v7MBeve3GMtN1bw6YA+aAOWAOmANtHGCFO1vsapLowQcfXK+2bHvHz8wpc8AcWO0c6OiT7hXMDuyOBo5Jkc8ObAuySXHJ8ZhL5oA5YA6YA+aAOWAOrA4OsC07n+vh8zVs78X2mNyL387UtyLNiW6csAO7G07mk3EyB8wBc8AcMAfMgdXCgbjFsJzX66yzzqr4rNRqqWOX0/LMHJgeB3p5pjsGtgPbDmyv0pgxBywkpyckja2xNQfMAXPAHDAHzIGVyIH4HUsZ0+J5jz32qG6//Xbr9T30ejuwLStWoqxwmcxrc8AcMAfMAXNg4RzIDmy+mX3uuedax+6hY5t/C+efsTN2y50DHX3SvYLZgT1jAewV2BZEy10QOf/msDlgDpgD5oA5YA6YA7PlwLXXXlvtuOOO1dprrz3aynDNNdes751//vn1qmzXSb86sQO7H17ml/EyB8wBc8AcMAfMgZXOATmw73nPe1abbbZZdckll3jr8Bn7TlY6x1w+y9GVzIFenumOge3AthD2LDJzwBwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB3pzoKNPulcwO7BNxN5EXMmzRFw2z4IyB8wBc8AcMAfMAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB7pxoJdnumNgO7DtwLYD2xwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB8yB3hzo6JPuFcwObBOxNxE946TbjBPjZJzMAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB8wBc8AcMAdWMgd6eaY7BrYD2w5sO7DNAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHOjNgY4+6V7B7MA2EXsTcSXPEnHZPAvKHDAHzAFzwBwwB8wBc8AcMAfMAXPAHDAHzAFzwBwwB8wBc8AcMAfMAXPAHOjGgV6e6Y6BOzuwO8bnYEbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEFoSAHdgLgs0vGQEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMwKQRsAN70og6PiNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAEVgQAnZgLwg2v2QEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAKTRsAO7Ekj6viMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkZgQQjYgb0g2PySETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAITBoBO7AnjajjMwJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYgQUhYAf2gmDzS0bACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBIzBpBOzAnjSijs8IGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYAQWhIAd2AuCzS8ZASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIzApBGwA3vSiDo+I2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARWBACdmAvCDa/ZASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwApNGwA7sSSPq+IyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRmBBCNiBvSDY/JIRMAJGwAgYgfkIfOpTn6rWWGON6qtf/erooe597WtfG91baReUbe21167OPPPMZVG0Up2Qd8owrXr6t3/7t+qf//mf67+77rprpjhRJng5rbJNszDKO3W2mg74ctRRR1WPfvSjq/vc5z7Vt771rcEXv9SuBp9pZ9AIGAEjYASMgBEwAkbACBgBI2AEjIARMAI9EMBW9cQnPrE644wzerzloAtBYNU4sP/3f/+3+spXvlK97GUvq+51r3tVD3vYw6r999+/+s1vfrMQ3PzO/yPwox/9qNpiiy2WpVF8NVai62s11rrLPAkEfv/731dbbrll9djHPrb67ne/2xilHDjLwYH929/+ttp4441rx+bnPve5xjLFBxdddFHdh/LenXfeOXqE4rbUDuxYHpy1+e+Tn/zkKL+qp+jQtQN7BM+8i9tuu6169rOfXb3lLW+p/uM//mPec24I03POOaf4nDjWXXfd6m1ve1v13//938UwpZur0YH9X//1X9W73/3uWlc94ogjqtNPP726/vrrS/AM6p44ENvVkDL4P//zP9Wll15avfKVr6wnBSAjNthgg+qzn/1s9e///u/zssrY4brrrqu23377OjwTCXbcccfqJz/5ybywpRt9xx533HFH3cYYozBWIZ/XXHNNRTz5gCPIbfJPOZjo8KEPfaj661//moPW73sMNA+W4o3f/e531SGHHFLjKX5cfPHFFdzx0Y5AH062xzTbp9gCqPOnPOUpdVui/dHXdWnnyI1/+Zd/qZ70pCdVt9xyS2vGSWeXXXap+8q2gMoPbRoOkp/DDjtsXt87FK5KTr7hDW+o80qe11lnner4448vyqNYdvA7+eSTa1yYtNV20AbPO++86hWveEWFvtfloC/abrvtRu0ZTN/xjncU7T8///nPqwMOOKB61rOeVeOOvN9qq63myeBxuibl5y/2g3ADjuhZPNNv+lg8AtI/IrZtbbmtHg8++ODFZ8gxDAqB22+/vdar1b7FE8azXeXJoAq0yMygKyKj11tvvZG8Q9dF5y3pnItMblGvS37Snq+++urGuBRuMe2Xd+HGXnvtVf3tb39rTItwyPSbb765MYwfGAEjcDcCyJtPf/rT1Ute8pLR+FsyOOpKffFCdr/oRS+qFtPm+6ZZCk8Zpu3AlmxizFGyWeR8/exnP6vWX3/9efpoDEe9fOYzn5ljF0FPJo0h9gXkfVU4sOmEaTD3v//9qze96U314AeDIJWz+eabV7/61a9iPfq6AwK/+MUvaiWQwR3C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BIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAIzBOzAnkHhCyNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAEVgnAnZgrxN9p20EjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAIzBOzAnkHhCyNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAEVgnAnZgrxN9p20EjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAIzBOzAnkHhCyNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAEVgnAnZgrxN9p20EjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAIzBOzAnkHhCyNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAEVgnAnZgrxN9p20EjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAIzBOzAnkHhCyNgBIyAETACq0Pgox/9aHOVq1yledWrXjVLVPde/epXz+795Cc/ae5zn/s0j3rUo5rf//73s/s78eLf/u3fWhzAA1x25YOyPuxhD2vudKc7NT/96U935aJuqWy7Kico16mnntrc4AY3aK5xjWs0n/jEJ7aE0ypeRm4h05BjPoyAETACRsAIGAEjYASMgBEwAkbACKwLgZJ9bV152Q7pMp6/+c1v3nz1q1/dDtldah7hzs1udrPmDW94wyydEp9+9rOfNXe+852bI488ssGG42M5COwIB/b//d//NZ/73OeaBz/4wc11r3vd1rh229vetnnhC1/Y/O53v1sOsjsk1m9+85vNPe5xDxsrJ1zf//3f/928+c1vbvbbb7+W+xjDTznlFHN/wnXmrG1vBP7jP/6jOeaYY5qrXe1qzfve975qYaT87AQHNgrwX/7lXzbXvva1Bzni6LfPPvvsVmZFRXAqzkrKg2IfJxrkiiav5D3mP4fp+s37U3FgP/3pT5+sI30qnOiqy7HP6Lef8YxntDrrC17wguZ1r3td8/nPf35sNCsPv6s5sJkk86xn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YASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRmAzEbADezPRd95GwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASMwQcAO7AkU/mEEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAKbiYAd2JuJvvM2AkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBiBCQJ2YE+g8A8jYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBHYTATswN5M9J23ETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAITBCwA3sChX8YASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIzAZiJgB/Zmou+8jYARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGYIKAHdgTKPzDCBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AENhMBO7A3E33nbQSMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjYASMgBEwAhME7MCeQOEfRsAILCICb37zm5ub3exmzSc+8YlJ8bh385vfvPn4xz8+ucfzu971rs073/nOyT3/WB0E4MTOO+/cfOlLX1qdSq9oTbdSX//JT37SPPjBD26e8pSnNL/97W+rWvRFL3pR+w7vrkJYb3vzPmMIMmKZAnw4+eSTmzvf+c7NrW51q+Yzn/nMwhe/NF4vfKFdQCNgBIyAETACRsAIGAEjYASMgBHYcggsqy1gsxpCdtUvf/nLm1WEhckX7tztbndb42Mo8Qm73EMe8pBRNr2FqeQSFWRlHdgYAm9729s2GIIdpkfg61//evOoRz1qjXNx+tT85iwQ+NOf/tS8613vavbcc8/WiI8x/NWvfnXz61//ehbZVaf5s5/9rOXOXe5yl+YLX/hC53slgzj3tqIDW3WlT/30pz/txEQPfvGLXzRPeMIT2nZ905vepNtzvaLY4Djuyx9HDA66MU66sZWQorVsDmzwu/vd796LXwkLML3oooua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ME0E7MCeJvpO2wgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBHoI2IHdg8IXRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBIyAETACRsAIGAEjME0E7MCeJvpO2wgYASNgBIyAETACRsAIGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYASNgBHoI2IHdg8IXRsAIGAEjYARmB4Hf//73xaabblp86lOfmlimzz///OK1r31tcd11100sTSc0HQT+4z/+o9h3332Lf/zHfyz+/d//feSZOOecc4o11lij+OUvfznyuP/t3/6t+Nu//dviq1/96sjjdoTVCFCnz3nOc4rrr7++OpCfGAEjYASMgBEwAkbACBgBI2AEjIARMAJGwAgYgQYITNSB/fjjjxd77LFHgYErPf7nf/6nuOSSS4r3vve9xaqrrloawNZcc83ixBNPLP785z+nwcv///3f/11ceOGFxUYbbVSGf+UrX1kb/v/+7/+Kf/3Xfy123HHH4vnPf375zhve8Ibi6quvzsbvm8sRePjhh4tDDz20WGeddUr8wHGbbbYpbrvttgJ8fXQPgbbtpHslcI6MwOwigCMNJx1Onbof/d5Pf/rTVgW1A/tZuITzKqusUtx0003PPqi4or8688wzyzr50Ic+VOCsHfXBxALq/J//+Z+L//qv/+ob/UMPPVRsuOGG5TtdcADagd23yhwgQaDrDuz//d//La655ppi66237o0DGEN885vfrG2jjF8++9nPFowzaNPI66OPPrr4y1/+kiCw9K/wSGU/fQIyKz1++9vfFvvtt18Z//Oe97wyn1X6dRvdDnl37bXXFitWrCiIl/wfcsghBeXysRSBP/zhD0vqGn58//vfL+COj3oE2nCyPqbuPsUmcdpppxUbbLBBKQsYB2NXwL5QNQ7mfhP7AzKBiVepvOB/znYCSsoP9gzCkZ999tmnePrpp7sLYsOcUebnPve5WTyEEfrbM888Uxmj8GlSX237h3HK98oCzdkDcZ4+6eabb64snXT8QSfsarxE//ftb3+7Mh3Cve1tbyvGNS6oTNgPxooAMvjXv/51ccQRR/RsmJIh6HV1nBhnxtrwn75hEvxnYvyk+f/kk08Wxx9/fGnTp43yox3W6V7D6Gr4D+r61bTOh0kr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EpCABCQgAQlIQAISWEsCBrDXkr73loAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCCBEQED2CMUfpGABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQggbUkYAB7Lel7bwlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISGBEwgD1C4RcJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACElhLAgaw15K+95aABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCQggREBA9gjFH6RgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIIG1JGAAey3pe28JSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEhgRMIA9QuEXCUhAAhKQgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhJYSwIGsNeSvveWgAQkIAEJSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIIERAQPYIxR+kYAEJCABCUhguQn87ne/a/bZZ5/mqKOOah588MHlzt78JCCBgRD4xCc+0TzsYQ9rvvnNbw6kRBZDAhKQgAQkIAEJSEACEpCABCQgAQlIYFYJrGoAGyf24Ycf3uDgKo9///vfzeWXX97stddezaMf/ejWAbbttts2p59+evO3v/2tTN7+/69//av53Oc+1+yyyy5t+sc97nGd6f/xj380n/3sZzdJe8oppzSUyWN6Avfcc09z4oknNjvssEPL/JGPfGSzYcOG5qabbmr++9//Tp+RKVeNQJ92smqF8kYSkMDMEnjHO97R6n8CVeP+jj322Oaf//xn288awJ7N6v7JT37SbLPNNs2jHvWoZuPGjRMfAjvg/PPPbx7+8Ic3r3rVq1ZkwgLy9/znP7/5wx/+MLE8JlhdAkMPYP/nP/9prrnmmmbPPfdssF/RX4whGB8wTigP5PmWW25pDjzwwDY917zyla9sfvGLX5RJq/9z/de//vVm9913bx7xiEe045sTTjihc+xx1113Na9//evbdKSnnF32dR/brm85qg8zJyf/+Mc/NowPGVOGfHz1q19tkB2P8QT6yOT4nJb265///Ofm/e9/f9u2aUf8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"
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"![image.png](attachment:image.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Eigenschaften von Tabellen"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Hat immer ein <em> \"Länge mal Breite </em> Format\"\n",
"* Wird oft als Matrix modelliert (für numerische Daten zBsp mit $\\mathbb{R}^{m\\times n}$)\n",
"* (Normalerweise) unabhängige Einträge (i.i.d.)\n",
"* Verschiedene Datentypen: numerisch (float, int), text (string, char), leer (None, null, NaN, \"\")\n",
"* Jede Spalte ist ein Feature -> Was ist ein Feature?\n",
"* Jede Zeile ist ein Datenpunkt -> Was ist ein Datenpunkt?\n",
"* Jede Spalte <em>kann </em> ein Label sein -> Was ist ein Label?"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Feature"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Spalte des tabellarischen Datasets\n",
"* Eine <em> Eigenschaft </em>\n",
"* Label ist <em> kein </em> Feature\n",
"* Kann/Muss oft normalisiert, aggregiert oder vorverarbeitet (preprocessing) werden, dadurch kann die Qualität des Features verbessert werden (kann aber auch schlechter werden)\n",
"* Kann in Beziehung zu anderen Features stehen und durch Korrelationen oder Abhängigkeiten beeinflusst werden (ZBsp Feature \"Preis\" in einem Datensatz über Autos hängt meistens direkt mit der Leistung des Autos zusammen)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Datenpunkt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Zeile des tabellarischen Datasets\n",
"* Steht für einen Eintrag\n",
"* Je mehr Zeilen, desto mehr Daten\n",
"* Quantität $\\neq$ Qualität:\n",
" * Können Duplikate beinhalten\n",
" * Daten modellieren vielleicht die \"echte Situation\" nicht gut\n",
" * Können leere Felder haben\n",
" * Können falsch sein (Umfragen etc.)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Label"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Label ist quasi ein Namensschild bzw. eine Zugehörigkeit\n",
"* Zbsp in diesem Titanic Dataset könnte man <em> survived </em> verwenden, um zu analysieren, welche Unterschiede zwischen Überlebenden und Nicht-Überlebenden bestehen/bestanden\n",
"* Anderes Beispiel wäre aber auch Alter (Frauen und Kinder zuerst?), oder vielleicht eine geometrische Untersuchung mit den Cabin-Nummern (Vielleicht auf einer Seite der Kabine mehr Mortalitätsrate?)\n",
"* Kann auch eine reelle Zahl (float) sein (Regression)\n",
"* Analysen können auch ohne Label durchgeführt werden:\n",
" * Gruppierungen\n",
" * Dimensions-Reduzierung (zBsp.: PCA)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Einführung in Pandas"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Way to Go für Tabellarische Daten\n",
"* Daten können aus verschiedenen Quellen eingelesen und ggf. auch wieder gespeichert werden (txt, csv, sql)\n",
"* Eingelesene Daten werden in sogenannten <em>DataFrames</em> gespeichert\n",
"* Es gibt auch <em>Series</em> als Datenstruktur für Listen- oder Array-ähnlichen Datenstrukturen\n",
"* Pandas bietet eine flexible Indizierungsmöglichkeit\n",
"* Viele statistische Größen (Mittelwert, Median, etc.) können einfach berechnet werden\n",
"* Gute Integration mit weiteren Python-Bibliotheken (NumPy, Matplotlib, Scikit-Learn, etc.)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Im folgenden wird nun Pandas anhand von einem Beispiel eingeführt. Dabei wird dieses Dataset in diesem Notebook überall verwendet"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Importieren von Pandas\n",
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Erstellung und Indizierung"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# Wir erstellen ein Dataframe aus einer Liste ohne Index Spalte:\n",
"\n",
"df = pd.DataFrame({'Name' : [\"Peter\", \"Karla\", \"Anne\", \"Nino\", \"Andrzej\"],\n",
" 'Geschlecht' : ['M',pd.NA,'W','M','M'],\n",
" 'Alter' : [45, 53, 16, 22, 61],\n",
" 'Größe' : [1.77,1.72, 1.82, 1.71, 1.68],\n",
" 'Nationalität': [\"deutsch\", \"schweizerisch\", \"deutsch\", \"italienisch\", \"polnisch\"],\n",
" 'Gehalt' : [3400, 4000, 0, pd.NA, 2300]\n",
" }\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" <th>Größe</th>\n",
" <th>Nationalität</th>\n",
" <th>Gehalt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" <td>45</td>\n",
" <td>1.77</td>\n",
" <td>deutsch</td>\n",
" <td>3400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Karla</td>\n",
" <td>&lt;NA&gt;</td>\n",
" <td>53</td>\n",
" <td>1.72</td>\n",
" <td>schweizerisch</td>\n",
" <td>4000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Anne</td>\n",
" <td>W</td>\n",
" <td>16</td>\n",
" <td>1.82</td>\n",
" <td>deutsch</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Nino</td>\n",
" <td>M</td>\n",
" <td>22</td>\n",
" <td>1.71</td>\n",
" <td>italienisch</td>\n",
" <td>&lt;NA&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Andrzej</td>\n",
" <td>M</td>\n",
" <td>61</td>\n",
" <td>1.68</td>\n",
" <td>polnisch</td>\n",
" <td>2300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"0 Peter M 45 1.77 deutsch 3400\n",
"1 Karla <NA> 53 1.72 schweizerisch 4000\n",
"2 Anne W 16 1.82 deutsch 0\n",
"3 Nino M 22 1.71 italienisch <NA>\n",
"4 Andrzej M 61 1.68 polnisch 2300"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Name Anne\n",
"Geschlecht W\n",
"Alter 16\n",
"Größe 1.82\n",
"Nationalität deutsch\n",
"Gehalt 0\n",
"Name: 2, dtype: object"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Indizierung mit loc\n",
"# Wir wählen die Zeile mit dem Index 2 aus\n",
"df.loc[2]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Name Peter\n",
"Geschlecht M\n",
"Alter 45\n",
"Größe 1.77\n",
"Nationalität deutsch\n",
"Gehalt 3400\n",
"Name: 0, dtype: object"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Indizierung mit iloc\n",
"# Wir wählen die erste Zeile aus\n",
"df.iloc[0]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# Nun erstellen wir ein Dataframe aus einer Liste mit Index Spalte:\n",
"\n",
"df = pd.DataFrame({'Name' : [\"Peter\", \"Karla\", \"Anne\", \"Nino\", \"Andrzej\"],\n",
" 'Geschlecht' : ['M',pd.NA,'W','M','M'],\n",
" 'Alter' : [45, 53, 16, 22, 61],\n",
" 'Größe' : [1.77,1.72, 1.82, 1.71, 1.68],\n",
" 'Nationalität': [\"deutsch\", \"schweizerisch\", \"deutsch\", \"italienisch\", \"polnisch\"],\n",
" 'Gehalt' : [3400, 4000, 0, pd.NA, 2300]\n",
" },\n",
" index = ['A', 'B', 'C', 'D', 'E']\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" <th>Größe</th>\n",
" <th>Nationalität</th>\n",
" <th>Gehalt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" <td>45</td>\n",
" <td>1.77</td>\n",
" <td>deutsch</td>\n",
" <td>3400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>Karla</td>\n",
" <td>&lt;NA&gt;</td>\n",
" <td>53</td>\n",
" <td>1.72</td>\n",
" <td>schweizerisch</td>\n",
" <td>4000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>Anne</td>\n",
" <td>W</td>\n",
" <td>16</td>\n",
" <td>1.82</td>\n",
" <td>deutsch</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D</th>\n",
" <td>Nino</td>\n",
" <td>M</td>\n",
" <td>22</td>\n",
" <td>1.71</td>\n",
" <td>italienisch</td>\n",
" <td>&lt;NA&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>Andrzej</td>\n",
" <td>M</td>\n",
" <td>61</td>\n",
" <td>1.68</td>\n",
" <td>polnisch</td>\n",
" <td>2300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"A Peter M 45 1.77 deutsch 3400\n",
"B Karla <NA> 53 1.72 schweizerisch 4000\n",
"C Anne W 16 1.82 deutsch 0\n",
"D Nino M 22 1.71 italienisch <NA>\n",
"E Andrzej M 61 1.68 polnisch 2300"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Index ist nun selber gewählt, vorher numerisch (0-4), nun (A-E)."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Name Peter\n",
"Geschlecht M\n",
"Alter 45\n",
"Größe 1.77\n",
"Nationalität deutsch\n",
"Gehalt 3400\n",
"Name: A, dtype: object"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Indizierung mit Index\n",
"\n",
"df.loc['A']"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Name Peter\n",
"Geschlecht M\n",
"Alter 45\n",
"Größe 1.77\n",
"Nationalität deutsch\n",
"Gehalt 3400\n",
"Name: A, dtype: object"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# iloc indizierung nach wie vor möglich um die 1. Zeile auszuwählen\n",
"df.iloc[0]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Peter'"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Wir können auch nur bestimmte Spalten auswählen\n",
"df.loc['A', 'Name']"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>Karla</td>\n",
" <td>&lt;NA&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>Anne</td>\n",
" <td>W</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D</th>\n",
" <td>Nino</td>\n",
" <td>M</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>Andrzej</td>\n",
" <td>M</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht\n",
"A Peter M\n",
"B Karla <NA>\n",
"C Anne W\n",
"D Nino M\n",
"E Andrzej M"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Es ist auch die Indizierung von mehreren Spalten möglich\n",
"df.loc[:, ['Name', 'Geschlecht']]"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>Karla</td>\n",
" <td>&lt;NA&gt;</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht\n",
"A Peter M\n",
"B Karla <NA>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Bzw. auch inklusive Zeilen\n",
"df.loc[['A', 'B'], ['Name', 'Geschlecht']]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"# Ebenso kann über eine Maske indiziert werden\n",
"temp = df.loc[df['Alter'] > 20]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" <th>Größe</th>\n",
" <th>Nationalität</th>\n",
" <th>Gehalt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" <td>45</td>\n",
" <td>1.77</td>\n",
" <td>deutsch</td>\n",
" <td>3400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>Karla</td>\n",
" <td>&lt;NA&gt;</td>\n",
" <td>53</td>\n",
" <td>1.72</td>\n",
" <td>schweizerisch</td>\n",
" <td>4000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D</th>\n",
" <td>Nino</td>\n",
" <td>M</td>\n",
" <td>22</td>\n",
" <td>1.71</td>\n",
" <td>italienisch</td>\n",
" <td>&lt;NA&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>Andrzej</td>\n",
" <td>M</td>\n",
" <td>61</td>\n",
" <td>1.68</td>\n",
" <td>polnisch</td>\n",
" <td>2300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"A Peter M 45 1.77 deutsch 3400\n",
"B Karla <NA> 53 1.72 schweizerisch 4000\n",
"D Nino M 22 1.71 italienisch <NA>\n",
"E Andrzej M 61 1.68 polnisch 2300"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"temp"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"# Mehrere Bedingungen können auch kombiniert werden\n",
"temp = df.loc[(df['Alter'] > 20) & (df['Gehalt'] > 0)]"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" <th>Größe</th>\n",
" <th>Nationalität</th>\n",
" <th>Gehalt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" <td>45</td>\n",
" <td>1.77</td>\n",
" <td>deutsch</td>\n",
" <td>3400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>Karla</td>\n",
" <td>&lt;NA&gt;</td>\n",
" <td>53</td>\n",
" <td>1.72</td>\n",
" <td>schweizerisch</td>\n",
" <td>4000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>Andrzej</td>\n",
" <td>M</td>\n",
" <td>61</td>\n",
" <td>1.68</td>\n",
" <td>polnisch</td>\n",
" <td>2300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"A Peter M 45 1.77 deutsch 3400\n",
"B Karla <NA> 53 1.72 schweizerisch 4000\n",
"E Andrzej M 61 1.68 polnisch 2300"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"temp"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"# Das Dataframe kann auch mittels SQL ähnlicher Syntax gefiltert werden\n",
"temp = df.query('Alter > 20 & Größe > 1.71')"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" <th>Größe</th>\n",
" <th>Nationalität</th>\n",
" <th>Gehalt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" <td>45</td>\n",
" <td>1.77</td>\n",
" <td>deutsch</td>\n",
" <td>3400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>Karla</td>\n",
" <td>&lt;NA&gt;</td>\n",
" <td>53</td>\n",
" <td>1.72</td>\n",
" <td>schweizerisch</td>\n",
" <td>4000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"A Peter M 45 1.77 deutsch 3400\n",
"B Karla <NA> 53 1.72 schweizerisch 4000"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"temp"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Die Ergebnisse sind Peter bzw. Peter\n"
]
}
],
"source": [
"# Eine andere Art der Indizierung ist die Verwendung von at und iat\n",
"# at und iat sind schneller als loc und iloc, da sie nur einen Wert zurückgeben\n",
"\n",
"# Beispiel:\n",
"a = df.at['A', 'Name']\n",
"b = df.iat[0, 0]\n",
"\n",
"print(f'Die Ergebnisse sind {a} bzw. {b}')"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"A Peter Müller M 45 1.77 deutsch 3400\n",
"B Karla <NA> 53 1.72 schweizerisch 4000\n",
"C Anne W 16 1.82 deutsch 0\n",
"D Nino M 22 1.71 italienisch <NA>\n",
"E Andrzej M 61 1.68 polnisch 2300\n",
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"A Peter M 45 1.77 deutsch 3400\n",
"B Karla <NA> 53 1.72 schweizerisch 4000\n",
"C Anne W 16 1.82 deutsch 0\n",
"D Nino M 22 1.71 italienisch <NA>\n",
"E Andrzej M 61 1.68 polnisch 2300\n"
]
}
],
"source": [
"# at und iat können auch für das Setzen von Werten verwendet werden\n",
"df.at['A', 'Name'] = 'Peter Müller'\n",
"print(df)\n",
"df.iat[0, 0] = 'Peter'\n",
"print(df)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"# iat und at liefert einen Fehler, wenn mehere Werte ausgegeben werden sollen\n",
"# df.at[['A', 'B'], ['Name']] # Fehler: Richtig wäre die nächste Zeile\n",
"# df.loc[['A', 'B'], ['Name']]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"# Außerdem kann auch einfach wie bei einer Liste eine (oder mehrere) Spalte(n) ausgewählt werden\n",
"names = df['Name']"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A Peter\n",
"B Karla\n",
"C Anne\n",
"D Nino\n",
"E Andrzej\n",
"Name: Name, dtype: object\n"
]
}
],
"source": [
"print(names)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.series.Series'>\n"
]
}
],
"source": [
"print(type(names)) # Das Ergebnis ist nun eine Series"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"# Gleiches Ergebnis liefert die Adressierung via dem Punkt \".\" (Ähnlich wie bei Objekten)\n",
"names = df.Name"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A Peter\n",
"B Karla\n",
"C Anne\n",
"D Nino\n",
"E Andrzej\n",
"Name: Name, dtype: object\n"
]
}
],
"source": [
"print(names)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.series.Series'>\n"
]
}
],
"source": [
"print(type(names)) # Der Typ ist also auch gleich"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Spalten und Datentypen"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Datentypen von Python und Pandas sind ähnlich, müssen aber dennoch unterschieden werden. Kann Pandas einen Datentyp nicht eindeutig zuordnen wird dieser automatisch als `object` angenommen. In numerischen Spalten ist dies meist ein Zeichen das Daten fehlen und diese zuerst bearbeitet (zBsp. beseitigt) werden müssen.\n",
"\n",
"\n",
"| Pandas Type | Native Python Type | Beschreibung |\n",
"|-------------|---------------------|-----------------------|\n",
"| object | string | Zahlen und Strings |\n",
"| int64 | int | Ganzzahlen |\n",
"| float64 | float | Gleitkomma |\n",
"| datetime64 | N/A | Datum und Zeit |\n",
"\n",
"Verwende `info`() um Informationen über Datentypen und Spalten anzuzeigen."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Index: 5 entries, A to E\n",
"Data columns (total 6 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 Name 5 non-null object \n",
" 1 Geschlecht 4 non-null object \n",
" 2 Alter 5 non-null int64 \n",
" 3 Größe 5 non-null float64\n",
" 4 Nationalität 5 non-null object \n",
" 5 Gehalt 4 non-null object \n",
"dtypes: float64(1), int64(1), object(4)\n",
"memory usage: 452.0+ bytes\n"
]
}
],
"source": [
"# Informationen über das Dataframe\n",
"df.info()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.series.Series'>\n",
"Index: 5 entries, A to E\n",
"Series name: Name\n",
"Non-Null Count Dtype \n",
"-------------- ----- \n",
"5 non-null object\n",
"dtypes: object(1)\n",
"memory usage: 252.0+ bytes\n"
]
}
],
"source": [
"# Für beliebige Spalten kann folgendes verwendet werden\n",
"df['Name'].info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In der Info wird auch angegeben, wie viele Werte None (=null) sind."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## NaN-Values und None/null"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" <th>Größe</th>\n",
" <th>Nationalität</th>\n",
" <th>Gehalt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D</th>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"A False False False False False False\n",
"B False True False False False False\n",
"C False False False False False False\n",
"D False False False False False True\n",
"E False False False False False False"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Um die Felder anzuzeigen, welche fehlende Werte enthalten, verwenden wir den folgenden Befehl\n",
"df.isna()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" <th>Größe</th>\n",
" <th>Nationalität</th>\n",
" <th>Gehalt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>False</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" <td>True</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"A True True True True True True\n",
"B True False True True True True\n",
"C True True True True True True\n",
"D True True True True True False\n",
"E True True True True True True"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Ähnlich können wir auch die Felder anzeigen, welche keine fehlenden Werte enthalten\n",
"df.notna()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Warum ist es wichtig, solche Werte zu überprüfen bzw. sich mit sochen Werten zu befassen?"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"# Um nan-Werte zu löschen, verwenden wir den folgenden Befehl\n",
"cleaned_df = df.dropna()"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" <th>Größe</th>\n",
" <th>Nationalität</th>\n",
" <th>Gehalt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" <td>45</td>\n",
" <td>1.77</td>\n",
" <td>deutsch</td>\n",
" <td>3400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>Anne</td>\n",
" <td>W</td>\n",
" <td>16</td>\n",
" <td>1.82</td>\n",
" <td>deutsch</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>Andrzej</td>\n",
" <td>M</td>\n",
" <td>61</td>\n",
" <td>1.68</td>\n",
" <td>polnisch</td>\n",
" <td>2300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"A Peter M 45 1.77 deutsch 3400\n",
"C Anne W 16 1.82 deutsch 0\n",
"E Andrzej M 61 1.68 polnisch 2300"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cleaned_df"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"# Dies kann auch mit einzelnen Spalten gemacht werden\n",
"cleaned_df_2 = df.dropna(subset=['Gehalt'])"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" <th>Größe</th>\n",
" <th>Nationalität</th>\n",
" <th>Gehalt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" <td>45</td>\n",
" <td>1.77</td>\n",
" <td>deutsch</td>\n",
" <td>3400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>Karla</td>\n",
" <td>&lt;NA&gt;</td>\n",
" <td>53</td>\n",
" <td>1.72</td>\n",
" <td>schweizerisch</td>\n",
" <td>4000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>Anne</td>\n",
" <td>W</td>\n",
" <td>16</td>\n",
" <td>1.82</td>\n",
" <td>deutsch</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>Andrzej</td>\n",
" <td>M</td>\n",
" <td>61</td>\n",
" <td>1.68</td>\n",
" <td>polnisch</td>\n",
" <td>2300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"A Peter M 45 1.77 deutsch 3400\n",
"B Karla <NA> 53 1.72 schweizerisch 4000\n",
"C Anne W 16 1.82 deutsch 0\n",
"E Andrzej M 61 1.68 polnisch 2300"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cleaned_df_2"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"NULL percent of column Geschlecht: 20.0 %\n",
"NULL absolute of column Geschlecht: 1\n"
]
}
],
"source": [
"column = 'Geschlecht'\n",
"\n",
"amount_null = df.filter([column]).isnull().sum() / len(df) * 100\n",
"amount_null_count = df.filter([column]).isnull().sum()\n",
"\n",
"\n",
"print(f'NULL percent of column {column}: ', amount_null.iloc[0], '%')\n",
"print(f'NULL absolute of column {column}: ', amount_null_count.iloc[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Sortieren und Filtern"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Verwende zum Sortieren des Dataframes die Methode `sort_values('Spalte')`. Verwende dabei `inplace`, damit die Änderungen direkt im aktuellen Dataframe durchgeführt werden."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"# Wir sortieren zuerst nach dem Alter\n",
"df.sort_values('Alter', inplace=True) # Wir verwenden inplace=True um das Dataframe zu überschreiben"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" <th>Größe</th>\n",
" <th>Nationalität</th>\n",
" <th>Gehalt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>Anne</td>\n",
" <td>W</td>\n",
" <td>16</td>\n",
" <td>1.82</td>\n",
" <td>deutsch</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D</th>\n",
" <td>Nino</td>\n",
" <td>M</td>\n",
" <td>22</td>\n",
" <td>1.71</td>\n",
" <td>italienisch</td>\n",
" <td>&lt;NA&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" <td>45</td>\n",
" <td>1.77</td>\n",
" <td>deutsch</td>\n",
" <td>3400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>Karla</td>\n",
" <td>&lt;NA&gt;</td>\n",
" <td>53</td>\n",
" <td>1.72</td>\n",
" <td>schweizerisch</td>\n",
" <td>4000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>Andrzej</td>\n",
" <td>M</td>\n",
" <td>61</td>\n",
" <td>1.68</td>\n",
" <td>polnisch</td>\n",
" <td>2300</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"C Anne W 16 1.82 deutsch 0\n",
"D Nino M 22 1.71 italienisch <NA>\n",
"A Peter M 45 1.77 deutsch 3400\n",
"B Karla <NA> 53 1.72 schweizerisch 4000\n",
"E Andrzej M 61 1.68 polnisch 2300"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"# Wir können auch nach mehreren Spalten sortieren\n",
"df.sort_values(['Geschlecht', 'Alter'], inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" <th>Größe</th>\n",
" <th>Nationalität</th>\n",
" <th>Gehalt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>D</th>\n",
" <td>Nino</td>\n",
" <td>M</td>\n",
" <td>22</td>\n",
" <td>1.71</td>\n",
" <td>italienisch</td>\n",
" <td>&lt;NA&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" <td>45</td>\n",
" <td>1.77</td>\n",
" <td>deutsch</td>\n",
" <td>3400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>Andrzej</td>\n",
" <td>M</td>\n",
" <td>61</td>\n",
" <td>1.68</td>\n",
" <td>polnisch</td>\n",
" <td>2300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>Anne</td>\n",
" <td>W</td>\n",
" <td>16</td>\n",
" <td>1.82</td>\n",
" <td>deutsch</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>Karla</td>\n",
" <td>&lt;NA&gt;</td>\n",
" <td>53</td>\n",
" <td>1.72</td>\n",
" <td>schweizerisch</td>\n",
" <td>4000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"D Nino M 22 1.71 italienisch <NA>\n",
"A Peter M 45 1.77 deutsch 3400\n",
"E Andrzej M 61 1.68 polnisch 2300\n",
"C Anne W 16 1.82 deutsch 0\n",
"B Karla <NA> 53 1.72 schweizerisch 4000"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"# Wir können auch die Sortierung umkehren für jede der Spalten\n",
"df.sort_values(['Geschlecht', 'Alter'], ascending=[False, False], inplace=True) # gleich wie ascending=False"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" <th>Größe</th>\n",
" <th>Nationalität</th>\n",
" <th>Gehalt</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>Anne</td>\n",
" <td>W</td>\n",
" <td>16</td>\n",
" <td>1.82</td>\n",
" <td>deutsch</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>Andrzej</td>\n",
" <td>M</td>\n",
" <td>61</td>\n",
" <td>1.68</td>\n",
" <td>polnisch</td>\n",
" <td>2300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" <td>45</td>\n",
" <td>1.77</td>\n",
" <td>deutsch</td>\n",
" <td>3400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D</th>\n",
" <td>Nino</td>\n",
" <td>M</td>\n",
" <td>22</td>\n",
" <td>1.71</td>\n",
" <td>italienisch</td>\n",
" <td>&lt;NA&gt;</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>Karla</td>\n",
" <td>&lt;NA&gt;</td>\n",
" <td>53</td>\n",
" <td>1.72</td>\n",
" <td>schweizerisch</td>\n",
" <td>4000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter Größe Nationalität Gehalt\n",
"C Anne W 16 1.82 deutsch 0\n",
"E Andrzej M 61 1.68 polnisch 2300\n",
"A Peter M 45 1.77 deutsch 3400\n",
"D Nino M 22 1.71 italienisch <NA>\n",
"B Karla <NA> 53 1.72 schweizerisch 4000"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"# Um zu filtern, können wir auch den folgenden Befehl verwenden, dieser ist sehr ähnlich zu der normalen Indizierung\n",
"df_filtered = df.filter(['Name', 'Geschlecht', 'Alter'])"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Geschlecht</th>\n",
" <th>Alter</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>C</th>\n",
" <td>Anne</td>\n",
" <td>W</td>\n",
" <td>16</td>\n",
" </tr>\n",
" <tr>\n",
" <th>E</th>\n",
" <td>Andrzej</td>\n",
" <td>M</td>\n",
" <td>61</td>\n",
" </tr>\n",
" <tr>\n",
" <th>A</th>\n",
" <td>Peter</td>\n",
" <td>M</td>\n",
" <td>45</td>\n",
" </tr>\n",
" <tr>\n",
" <th>D</th>\n",
" <td>Nino</td>\n",
" <td>M</td>\n",
" <td>22</td>\n",
" </tr>\n",
" <tr>\n",
" <th>B</th>\n",
" <td>Karla</td>\n",
" <td>&lt;NA&gt;</td>\n",
" <td>53</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Geschlecht Alter\n",
"C Anne W 16\n",
"E Andrzej M 61\n",
"A Peter M 45\n",
"D Nino M 22\n",
"B Karla <NA> 53"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_filtered"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"C False\n",
"E False\n",
"A True\n",
"D False\n",
"B True\n",
"Name: Name, dtype: bool"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Um herauszufinden ob ein Wert in einer Spalte vorkommt, können wir folgenden Code verwenden\n",
"\n",
"df['Name'].isin(['Peter', 'Karla'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Datenimport und Datenexport in Pandas"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pandas stellt umfangreiche Methoden zum importieren, bearbeiten und speichern von Daten zur Verfügung.\n",
"\n",
"* Es werden zahlreiche Datenformate (.csv, .xlsx, .json, ...) unterstützt\n",
"* Daten können Lokal oder OnLine gespeichert werden\n",
"* Header können angepasst werden\n",
"* Datentypen können angepasst werden\n",
"* Spalten und Zeilen können verändert werden\n",
"* Fehlende Werte können bearbeitet werden\n",
"* ...\n",
"\n",
"<h3>Formate, welche unter anderem von Pandas unterstützt werden</h3>\n",
"\n",
"| Data Format | Read | Save |\n",
"| ------------ | :---------------: | --------------: |\n",
"| csv | `pd.read_csv()` | `df.to_csv()` |\n",
"| json | `pd.read_json()` | `df.to_json()` |\n",
"| excel | `pd.read_excel()` | `df.to_excel()` |\n",
"| hdf | `pd.read_hdf()` | `df.to_hdf()` |\n",
"| sql | `pd.read_sql()` | `df.to_sql()` |\n",
"| ... | ... | ... |"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Laden aus einer CSV Datei"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wir verwenden das *Titanic* Dataset. Dieses ist nun gespeichert im Ordner `_data/titanic.csv`"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"# wir verwenden dafür die Pakete os und pandas\n",
"\n",
"import os\n",
"import pandas as pd # bereits vorher importiert"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dataset saved to path ..\\..\\_data\\titanic.csv\n"
]
}
],
"source": [
"# Hilfsmethode\n",
"\n",
"path = os.path.join(\"..\", \"..\", \"_data\", \"titanic.csv\")\n",
"\n",
"if not os.path.exists(path):\n",
" os.makedirs(os.path.dirname(path), exist_ok=True)\n",
" df = pd.read_csv(\"https://raw.githubusercontent.com/rolandmueller/titanic/main/titanic3.csv\")\n",
" # df = sns.load_dataset(\"titanic\")\n",
" df.to_csv(path, index=False)\n",
" print(f\"Dataset saved to path {path}\")\n",
"else:\n",
" print(\"Dataset is already existing\")"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [],
"source": [
"path = os.path.join(\"..\", \"..\", \"_data\", \"titanic.csv\")\n",
"\n",
"titanic = pd.read_csv(path)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>pclass</th>\n",
" <th>survived</th>\n",
" <th>name</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>ticket</th>\n",
" <th>fare</th>\n",
" <th>cabin</th>\n",
" <th>embarked</th>\n",
" <th>boat</th>\n",
" <th>body</th>\n",
" <th>home.dest</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allen, Miss. Elisabeth Walton</td>\n",
" <td>female</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>24160</td>\n",
" <td>211.3375</td>\n",
" <td>B5</td>\n",
" <td>S</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>St Louis, MO</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allison, Master. Hudson Trevor</td>\n",
" <td>male</td>\n",
" <td>0.9167</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Miss. Helen Loraine</td>\n",
" <td>female</td>\n",
" <td>2.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mr. Hudson Joshua Creighton</td>\n",
" <td>male</td>\n",
" <td>30.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>135.0</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mrs. Hudson J C (Bessie Waldo Daniels)</td>\n",
" <td>female</td>\n",
" <td>25.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1304</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Hileni</td>\n",
" <td>female</td>\n",
" <td>14.5000</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>328.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1305</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Thamine</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1306</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Mapriededer</td>\n",
" <td>male</td>\n",
" <td>26.5000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2656</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>304.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1307</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Ortin</td>\n",
" <td>male</td>\n",
" <td>27.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2670</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1308</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zimmerman, Mr. Leo</td>\n",
" <td>male</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>315082</td>\n",
" <td>7.8750</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1309 rows × 14 columns</p>\n",
"</div>"
],
"text/plain": [
" pclass survived name \\\n",
"0 1 1 Allen, Miss. Elisabeth Walton \n",
"1 1 1 Allison, Master. Hudson Trevor \n",
"2 1 0 Allison, Miss. Helen Loraine \n",
"3 1 0 Allison, Mr. Hudson Joshua Creighton \n",
"4 1 0 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) \n",
"... ... ... ... \n",
"1304 3 0 Zabour, Miss. Hileni \n",
"1305 3 0 Zabour, Miss. Thamine \n",
"1306 3 0 Zakarian, Mr. Mapriededer \n",
"1307 3 0 Zakarian, Mr. Ortin \n",
"1308 3 0 Zimmerman, Mr. Leo \n",
"\n",
" sex age sibsp parch ticket fare cabin embarked boat \\\n",
"0 female 29.0000 0 0 24160 211.3375 B5 S 2 \n",
"1 male 0.9167 1 2 113781 151.5500 C22 C26 S 11 \n",
"2 female 2.0000 1 2 113781 151.5500 C22 C26 S NaN \n",
"3 male 30.0000 1 2 113781 151.5500 C22 C26 S NaN \n",
"4 female 25.0000 1 2 113781 151.5500 C22 C26 S NaN \n",
"... ... ... ... ... ... ... ... ... ... \n",
"1304 female 14.5000 1 0 2665 14.4542 NaN C NaN \n",
"1305 female NaN 1 0 2665 14.4542 NaN C NaN \n",
"1306 male 26.5000 0 0 2656 7.2250 NaN C NaN \n",
"1307 male 27.0000 0 0 2670 7.2250 NaN C NaN \n",
"1308 male 29.0000 0 0 315082 7.8750 NaN S NaN \n",
"\n",
" body home.dest \n",
"0 NaN St Louis, MO \n",
"1 NaN Montreal, PQ / Chesterville, ON \n",
"2 NaN Montreal, PQ / Chesterville, ON \n",
"3 135.0 Montreal, PQ / Chesterville, ON \n",
"4 NaN Montreal, PQ / Chesterville, ON \n",
"... ... ... \n",
"1304 328.0 NaN \n",
"1305 NaN NaN \n",
"1306 304.0 NaN \n",
"1307 NaN NaN \n",
"1308 NaN NaN \n",
"\n",
"[1309 rows x 14 columns]"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wie wir sehen haben wir 1309 Zeilen (Datenpunkte) und 14 Spalten.\n",
"\n",
"Was ist hier das Label?\n",
"\n",
"Datasets können aber auch genau umgekehrt aufgebaut sein."
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [],
"source": [
"# Transpornieren des Dataframes\n",
"\n",
"transposed_titanic = titanic.T"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>...</th>\n",
" <th>1299</th>\n",
" <th>1300</th>\n",
" <th>1301</th>\n",
" <th>1302</th>\n",
" <th>1303</th>\n",
" <th>1304</th>\n",
" <th>1305</th>\n",
" <th>1306</th>\n",
" <th>1307</th>\n",
" <th>1308</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>pclass</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>...</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>survived</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>name</th>\n",
" <td>Allen, Miss. Elisabeth Walton</td>\n",
" <td>Allison, Master. Hudson Trevor</td>\n",
" <td>Allison, Miss. Helen Loraine</td>\n",
" <td>Allison, Mr. Hudson Joshua Creighton</td>\n",
" <td>Allison, Mrs. Hudson J C (Bessie Waldo Daniels)</td>\n",
" <td>Anderson, Mr. Harry</td>\n",
" <td>Andrews, Miss. Kornelia Theodosia</td>\n",
" <td>Andrews, Mr. Thomas Jr</td>\n",
" <td>Appleton, Mrs. Edward Dale (Charlotte Lamson)</td>\n",
" <td>Artagaveytia, Mr. Ramon</td>\n",
" <td>...</td>\n",
" <td>Yasbeck, Mr. Antoni</td>\n",
" <td>Yasbeck, Mrs. Antoni (Selini Alexander)</td>\n",
" <td>Youseff, Mr. Gerious</td>\n",
" <td>Yousif, Mr. Wazli</td>\n",
" <td>Yousseff, Mr. Gerious</td>\n",
" <td>Zabour, Miss. Hileni</td>\n",
" <td>Zabour, Miss. Thamine</td>\n",
" <td>Zakarian, Mr. Mapriededer</td>\n",
" <td>Zakarian, Mr. Ortin</td>\n",
" <td>Zimmerman, Mr. Leo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>sex</th>\n",
" <td>female</td>\n",
" <td>male</td>\n",
" <td>female</td>\n",
" <td>male</td>\n",
" <td>female</td>\n",
" <td>male</td>\n",
" <td>female</td>\n",
" <td>male</td>\n",
" <td>female</td>\n",
" <td>male</td>\n",
" <td>...</td>\n",
" <td>male</td>\n",
" <td>female</td>\n",
" <td>male</td>\n",
" <td>male</td>\n",
" <td>male</td>\n",
" <td>female</td>\n",
" <td>female</td>\n",
" <td>male</td>\n",
" <td>male</td>\n",
" <td>male</td>\n",
" </tr>\n",
" <tr>\n",
" <th>age</th>\n",
" <td>29.0</td>\n",
" <td>0.9167</td>\n",
" <td>2.0</td>\n",
" <td>30.0</td>\n",
" <td>25.0</td>\n",
" <td>48.0</td>\n",
" <td>63.0</td>\n",
" <td>39.0</td>\n",
" <td>53.0</td>\n",
" <td>71.0</td>\n",
" <td>...</td>\n",
" <td>27.0</td>\n",
" <td>15.0</td>\n",
" <td>45.5</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>14.5</td>\n",
" <td>NaN</td>\n",
" <td>26.5</td>\n",
" <td>27.0</td>\n",
" <td>29.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>sibsp</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>parch</th>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>ticket</th>\n",
" <td>24160</td>\n",
" <td>113781</td>\n",
" <td>113781</td>\n",
" <td>113781</td>\n",
" <td>113781</td>\n",
" <td>19952</td>\n",
" <td>13502</td>\n",
" <td>112050</td>\n",
" <td>11769</td>\n",
" <td>PC 17609</td>\n",
" <td>...</td>\n",
" <td>2659</td>\n",
" <td>2659</td>\n",
" <td>2628</td>\n",
" <td>2647</td>\n",
" <td>2627</td>\n",
" <td>2665</td>\n",
" <td>2665</td>\n",
" <td>2656</td>\n",
" <td>2670</td>\n",
" <td>315082</td>\n",
" </tr>\n",
" <tr>\n",
" <th>fare</th>\n",
" <td>211.3375</td>\n",
" <td>151.55</td>\n",
" <td>151.55</td>\n",
" <td>151.55</td>\n",
" <td>151.55</td>\n",
" <td>26.55</td>\n",
" <td>77.9583</td>\n",
" <td>0.0</td>\n",
" <td>51.4792</td>\n",
" <td>49.5042</td>\n",
" <td>...</td>\n",
" <td>14.4542</td>\n",
" <td>14.4542</td>\n",
" <td>7.225</td>\n",
" <td>7.225</td>\n",
" <td>14.4583</td>\n",
" <td>14.4542</td>\n",
" <td>14.4542</td>\n",
" <td>7.225</td>\n",
" <td>7.225</td>\n",
" <td>7.875</td>\n",
" </tr>\n",
" <tr>\n",
" <th>cabin</th>\n",
" <td>B5</td>\n",
" <td>C22 C26</td>\n",
" <td>C22 C26</td>\n",
" <td>C22 C26</td>\n",
" <td>C22 C26</td>\n",
" <td>E12</td>\n",
" <td>D7</td>\n",
" <td>A36</td>\n",
" <td>C101</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>embarked</th>\n",
" <td>S</td>\n",
" <td>S</td>\n",
" <td>S</td>\n",
" <td>S</td>\n",
" <td>S</td>\n",
" <td>S</td>\n",
" <td>S</td>\n",
" <td>S</td>\n",
" <td>S</td>\n",
" <td>C</td>\n",
" <td>...</td>\n",
" <td>C</td>\n",
" <td>C</td>\n",
" <td>C</td>\n",
" <td>C</td>\n",
" <td>C</td>\n",
" <td>C</td>\n",
" <td>C</td>\n",
" <td>C</td>\n",
" <td>C</td>\n",
" <td>S</td>\n",
" </tr>\n",
" <tr>\n",
" <th>boat</th>\n",
" <td>2</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>3</td>\n",
" <td>10</td>\n",
" <td>NaN</td>\n",
" <td>D</td>\n",
" <td>NaN</td>\n",
" <td>...</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>body</th>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>135.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>22.0</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>312.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>328.0</td>\n",
" <td>NaN</td>\n",
" <td>304.0</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>home.dest</th>\n",
" <td>St Louis, MO</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" <td>New York, NY</td>\n",
" <td>Hudson, NY</td>\n",
" <td>Belfast, NI</td>\n",
" <td>Bayside, Queens, NY</td>\n",
" <td>Montevideo, Uruguay</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>14 rows × 1309 columns</p>\n",
"</div>"
],
"text/plain": [
" 0 1 \\\n",
"pclass 1 1 \n",
"survived 1 1 \n",
"name Allen, Miss. Elisabeth Walton Allison, Master. Hudson Trevor \n",
"sex female male \n",
"age 29.0 0.9167 \n",
"sibsp 0 1 \n",
"parch 0 2 \n",
"ticket 24160 113781 \n",
"fare 211.3375 151.55 \n",
"cabin B5 C22 C26 \n",
"embarked S S \n",
"boat 2 11 \n",
"body NaN NaN \n",
"home.dest St Louis, MO Montreal, PQ / Chesterville, ON \n",
"\n",
" 2 \\\n",
"pclass 1 \n",
"survived 0 \n",
"name Allison, Miss. Helen Loraine \n",
"sex female \n",
"age 2.0 \n",
"sibsp 1 \n",
"parch 2 \n",
"ticket 113781 \n",
"fare 151.55 \n",
"cabin C22 C26 \n",
"embarked S \n",
"boat NaN \n",
"body NaN \n",
"home.dest Montreal, PQ / Chesterville, ON \n",
"\n",
" 3 \\\n",
"pclass 1 \n",
"survived 0 \n",
"name Allison, Mr. Hudson Joshua Creighton \n",
"sex male \n",
"age 30.0 \n",
"sibsp 1 \n",
"parch 2 \n",
"ticket 113781 \n",
"fare 151.55 \n",
"cabin C22 C26 \n",
"embarked S \n",
"boat NaN \n",
"body 135.0 \n",
"home.dest Montreal, PQ / Chesterville, ON \n",
"\n",
" 4 \\\n",
"pclass 1 \n",
"survived 0 \n",
"name Allison, Mrs. Hudson J C (Bessie Waldo Daniels) \n",
"sex female \n",
"age 25.0 \n",
"sibsp 1 \n",
"parch 2 \n",
"ticket 113781 \n",
"fare 151.55 \n",
"cabin C22 C26 \n",
"embarked S \n",
"boat NaN \n",
"body NaN \n",
"home.dest Montreal, PQ / Chesterville, ON \n",
"\n",
" 5 6 \\\n",
"pclass 1 1 \n",
"survived 1 1 \n",
"name Anderson, Mr. Harry Andrews, Miss. Kornelia Theodosia \n",
"sex male female \n",
"age 48.0 63.0 \n",
"sibsp 0 1 \n",
"parch 0 0 \n",
"ticket 19952 13502 \n",
"fare 26.55 77.9583 \n",
"cabin E12 D7 \n",
"embarked S S \n",
"boat 3 10 \n",
"body NaN NaN \n",
"home.dest New York, NY Hudson, NY \n",
"\n",
" 7 \\\n",
"pclass 1 \n",
"survived 0 \n",
"name Andrews, Mr. Thomas Jr \n",
"sex male \n",
"age 39.0 \n",
"sibsp 0 \n",
"parch 0 \n",
"ticket 112050 \n",
"fare 0.0 \n",
"cabin A36 \n",
"embarked S \n",
"boat NaN \n",
"body NaN \n",
"home.dest Belfast, NI \n",
"\n",
" 8 \\\n",
"pclass 1 \n",
"survived 1 \n",
"name Appleton, Mrs. Edward Dale (Charlotte Lamson) \n",
"sex female \n",
"age 53.0 \n",
"sibsp 2 \n",
"parch 0 \n",
"ticket 11769 \n",
"fare 51.4792 \n",
"cabin C101 \n",
"embarked S \n",
"boat D \n",
"body NaN \n",
"home.dest Bayside, Queens, NY \n",
"\n",
" 9 ... 1299 \\\n",
"pclass 1 ... 3 \n",
"survived 0 ... 0 \n",
"name Artagaveytia, Mr. Ramon ... Yasbeck, Mr. Antoni \n",
"sex male ... male \n",
"age 71.0 ... 27.0 \n",
"sibsp 0 ... 1 \n",
"parch 0 ... 0 \n",
"ticket PC 17609 ... 2659 \n",
"fare 49.5042 ... 14.4542 \n",
"cabin NaN ... NaN \n",
"embarked C ... C \n",
"boat NaN ... C \n",
"body 22.0 ... NaN \n",
"home.dest Montevideo, Uruguay ... NaN \n",
"\n",
" 1300 1301 \\\n",
"pclass 3 3 \n",
"survived 1 0 \n",
"name Yasbeck, Mrs. Antoni (Selini Alexander) Youseff, Mr. Gerious \n",
"sex female male \n",
"age 15.0 45.5 \n",
"sibsp 1 0 \n",
"parch 0 0 \n",
"ticket 2659 2628 \n",
"fare 14.4542 7.225 \n",
"cabin NaN NaN \n",
"embarked C C \n",
"boat NaN NaN \n",
"body NaN 312.0 \n",
"home.dest NaN NaN \n",
"\n",
" 1302 1303 1304 \\\n",
"pclass 3 3 3 \n",
"survived 0 0 0 \n",
"name Yousif, Mr. Wazli Yousseff, Mr. Gerious Zabour, Miss. Hileni \n",
"sex male male female \n",
"age NaN NaN 14.5 \n",
"sibsp 0 0 1 \n",
"parch 0 0 0 \n",
"ticket 2647 2627 2665 \n",
"fare 7.225 14.4583 14.4542 \n",
"cabin NaN NaN NaN \n",
"embarked C C C \n",
"boat NaN NaN NaN \n",
"body NaN NaN 328.0 \n",
"home.dest NaN NaN NaN \n",
"\n",
" 1305 1306 \\\n",
"pclass 3 3 \n",
"survived 0 0 \n",
"name Zabour, Miss. Thamine Zakarian, Mr. Mapriededer \n",
"sex female male \n",
"age NaN 26.5 \n",
"sibsp 1 0 \n",
"parch 0 0 \n",
"ticket 2665 2656 \n",
"fare 14.4542 7.225 \n",
"cabin NaN NaN \n",
"embarked C C \n",
"boat NaN NaN \n",
"body NaN 304.0 \n",
"home.dest NaN NaN \n",
"\n",
" 1307 1308 \n",
"pclass 3 3 \n",
"survived 0 0 \n",
"name Zakarian, Mr. Ortin Zimmerman, Mr. Leo \n",
"sex male male \n",
"age 27.0 29.0 \n",
"sibsp 0 0 \n",
"parch 0 0 \n",
"ticket 2670 315082 \n",
"fare 7.225 7.875 \n",
"cabin NaN NaN \n",
"embarked C S \n",
"boat NaN NaN \n",
"body NaN NaN \n",
"home.dest NaN NaN \n",
"\n",
"[14 rows x 1309 columns]"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"transposed_titanic"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Es gibt einige andere Parameter, die beim Einlesen der Daten angepasst werden können. So kann explizit angegeben werden, welches Trennzeichen verwendet wird oder ob die erste Zeile als Header verwendet werden soll. Ebenso kann die Indexspalte explizit angegeben werden."
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [],
"source": [
"# Einlesen der Daten ohne Header\n",
"titanic = pd.read_csv(path, header=None)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>10</th>\n",
" <th>11</th>\n",
" <th>12</th>\n",
" <th>13</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>pclass</td>\n",
" <td>survived</td>\n",
" <td>name</td>\n",
" <td>sex</td>\n",
" <td>age</td>\n",
" <td>sibsp</td>\n",
" <td>parch</td>\n",
" <td>ticket</td>\n",
" <td>fare</td>\n",
" <td>cabin</td>\n",
" <td>embarked</td>\n",
" <td>boat</td>\n",
" <td>body</td>\n",
" <td>home.dest</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allen, Miss. Elisabeth Walton</td>\n",
" <td>female</td>\n",
" <td>29.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>24160</td>\n",
" <td>211.3375</td>\n",
" <td>B5</td>\n",
" <td>S</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>St Louis, MO</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allison, Master. Hudson Trevor</td>\n",
" <td>male</td>\n",
" <td>0.9167</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.55</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Miss. Helen Loraine</td>\n",
" <td>female</td>\n",
" <td>2.0</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.55</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mr. Hudson Joshua Creighton</td>\n",
" <td>male</td>\n",
" <td>30.0</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.55</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>135.0</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1305</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Hileni</td>\n",
" <td>female</td>\n",
" <td>14.5</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>328.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1306</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Thamine</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1307</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Mapriededer</td>\n",
" <td>male</td>\n",
" <td>26.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2656</td>\n",
" <td>7.225</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>304.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1308</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Ortin</td>\n",
" <td>male</td>\n",
" <td>27.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2670</td>\n",
" <td>7.225</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1309</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zimmerman, Mr. Leo</td>\n",
" <td>male</td>\n",
" <td>29.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>315082</td>\n",
" <td>7.875</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1310 rows × 14 columns</p>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 \\\n",
"0 pclass survived name sex age \n",
"1 1 1 Allen, Miss. Elisabeth Walton female 29.0 \n",
"2 1 1 Allison, Master. Hudson Trevor male 0.9167 \n",
"3 1 0 Allison, Miss. Helen Loraine female 2.0 \n",
"4 1 0 Allison, Mr. Hudson Joshua Creighton male 30.0 \n",
"... ... ... ... ... ... \n",
"1305 3 0 Zabour, Miss. Hileni female 14.5 \n",
"1306 3 0 Zabour, Miss. Thamine female NaN \n",
"1307 3 0 Zakarian, Mr. Mapriededer male 26.5 \n",
"1308 3 0 Zakarian, Mr. Ortin male 27.0 \n",
"1309 3 0 Zimmerman, Mr. Leo male 29.0 \n",
"\n",
" 5 6 7 8 9 10 11 12 \\\n",
"0 sibsp parch ticket fare cabin embarked boat body \n",
"1 0 0 24160 211.3375 B5 S 2 NaN \n",
"2 1 2 113781 151.55 C22 C26 S 11 NaN \n",
"3 1 2 113781 151.55 C22 C26 S NaN NaN \n",
"4 1 2 113781 151.55 C22 C26 S NaN 135.0 \n",
"... ... ... ... ... ... ... ... ... \n",
"1305 1 0 2665 14.4542 NaN C NaN 328.0 \n",
"1306 1 0 2665 14.4542 NaN C NaN NaN \n",
"1307 0 0 2656 7.225 NaN C NaN 304.0 \n",
"1308 0 0 2670 7.225 NaN C NaN NaN \n",
"1309 0 0 315082 7.875 NaN S NaN NaN \n",
"\n",
" 13 \n",
"0 home.dest \n",
"1 St Louis, MO \n",
"2 Montreal, PQ / Chesterville, ON \n",
"3 Montreal, PQ / Chesterville, ON \n",
"4 Montreal, PQ / Chesterville, ON \n",
"... ... \n",
"1305 NaN \n",
"1306 NaN \n",
"1307 NaN \n",
"1308 NaN \n",
"1309 NaN \n",
"\n",
"[1310 rows x 14 columns]"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
"# Einlesen der Daten mit expliziter Angabe der Indexspalte\n",
"titanic = pd.read_csv(path, index_col=\"age\")"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>pclass</th>\n",
" <th>survived</th>\n",
" <th>name</th>\n",
" <th>sex</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>ticket</th>\n",
" <th>fare</th>\n",
" <th>cabin</th>\n",
" <th>embarked</th>\n",
" <th>boat</th>\n",
" <th>body</th>\n",
" <th>home.dest</th>\n",
" </tr>\n",
" <tr>\n",
" <th>age</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>29.0000</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allen, Miss. Elisabeth Walton</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>24160</td>\n",
" <td>211.3375</td>\n",
" <td>B5</td>\n",
" <td>S</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>St Louis, MO</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.9167</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allison, Master. Hudson Trevor</td>\n",
" <td>male</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2.0000</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Miss. Helen Loraine</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30.0000</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mr. Hudson Joshua Creighton</td>\n",
" <td>male</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>135.0</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25.0000</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mrs. Hudson J C (Bessie Waldo Daniels)</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14.5000</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Hileni</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>328.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>NaN</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Thamine</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26.5000</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Mapriededer</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2656</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>304.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27.0000</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Ortin</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2670</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29.0000</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zimmerman, Mr. Leo</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>315082</td>\n",
" <td>7.8750</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1309 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" pclass survived name \\\n",
"age \n",
"29.0000 1 1 Allen, Miss. Elisabeth Walton \n",
"0.9167 1 1 Allison, Master. Hudson Trevor \n",
"2.0000 1 0 Allison, Miss. Helen Loraine \n",
"30.0000 1 0 Allison, Mr. Hudson Joshua Creighton \n",
"25.0000 1 0 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) \n",
"... ... ... ... \n",
"14.5000 3 0 Zabour, Miss. Hileni \n",
"NaN 3 0 Zabour, Miss. Thamine \n",
"26.5000 3 0 Zakarian, Mr. Mapriededer \n",
"27.0000 3 0 Zakarian, Mr. Ortin \n",
"29.0000 3 0 Zimmerman, Mr. Leo \n",
"\n",
" sex sibsp parch ticket fare cabin embarked boat body \\\n",
"age \n",
"29.0000 female 0 0 24160 211.3375 B5 S 2 NaN \n",
"0.9167 male 1 2 113781 151.5500 C22 C26 S 11 NaN \n",
"2.0000 female 1 2 113781 151.5500 C22 C26 S NaN NaN \n",
"30.0000 male 1 2 113781 151.5500 C22 C26 S NaN 135.0 \n",
"25.0000 female 1 2 113781 151.5500 C22 C26 S NaN NaN \n",
"... ... ... ... ... ... ... ... ... ... \n",
"14.5000 female 1 0 2665 14.4542 NaN C NaN 328.0 \n",
"NaN female 1 0 2665 14.4542 NaN C NaN NaN \n",
"26.5000 male 0 0 2656 7.2250 NaN C NaN 304.0 \n",
"27.0000 male 0 0 2670 7.2250 NaN C NaN NaN \n",
"29.0000 male 0 0 315082 7.8750 NaN S NaN NaN \n",
"\n",
" home.dest \n",
"age \n",
"29.0000 St Louis, MO \n",
"0.9167 Montreal, PQ / Chesterville, ON \n",
"2.0000 Montreal, PQ / Chesterville, ON \n",
"30.0000 Montreal, PQ / Chesterville, ON \n",
"25.0000 Montreal, PQ / Chesterville, ON \n",
"... ... \n",
"14.5000 NaN \n",
"NaN NaN \n",
"26.5000 NaN \n",
"27.0000 NaN \n",
"29.0000 NaN \n",
"\n",
"[1309 rows x 13 columns]"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>pclass</th>\n",
" <th>survived</th>\n",
" <th>name</th>\n",
" <th>sex</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>ticket</th>\n",
" <th>fare</th>\n",
" <th>cabin</th>\n",
" <th>embarked</th>\n",
" <th>boat</th>\n",
" <th>body</th>\n",
" <th>home.dest</th>\n",
" </tr>\n",
" <tr>\n",
" <th>age</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Bowerman, Miss. Elsie Edith</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>113505</td>\n",
" <td>55.0000</td>\n",
" <td>E33</td>\n",
" <td>S</td>\n",
" <td>6</td>\n",
" <td>NaN</td>\n",
" <td>St Leonards-on-Sea, England Ohio</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Cleaver, Miss. Alice</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Frolicher, Miss. Hedwig Margaritha</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>13568</td>\n",
" <td>49.5000</td>\n",
" <td>B39</td>\n",
" <td>C</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>Zurich, Switzerland</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Gibson, Miss. Dorothy Winifred</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>112378</td>\n",
" <td>59.4000</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>7</td>\n",
" <td>NaN</td>\n",
" <td>New York, NY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Ostby, Miss. Helene Ragnhild</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>113509</td>\n",
" <td>61.9792</td>\n",
" <td>B36</td>\n",
" <td>C</td>\n",
" <td>5</td>\n",
" <td>NaN</td>\n",
" <td>Providence, RI</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Pears, Mrs. Thomas (Edith Wearne)</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>113776</td>\n",
" <td>66.6000</td>\n",
" <td>C2</td>\n",
" <td>S</td>\n",
" <td>8</td>\n",
" <td>NaN</td>\n",
" <td>Isleworth, England</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Ringhini, Mr. Sante</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>PC 17760</td>\n",
" <td>135.6333</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>232.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>Caldwell, Mrs. Albert Francis (Sylvia Mae Harb...</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>248738</td>\n",
" <td>29.0000</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>13</td>\n",
" <td>NaN</td>\n",
" <td>Bangkok, Thailand / Roseville, IL</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>Cook, Mrs. (Selena Rogers)</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>W./C. 14266</td>\n",
" <td>10.5000</td>\n",
" <td>F33</td>\n",
" <td>S</td>\n",
" <td>14</td>\n",
" <td>NaN</td>\n",
" <td>Pennsylvania</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>Jefferys, Mr. Ernest Wilfred</td>\n",
" <td>male</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>C.A. 31029</td>\n",
" <td>31.5000</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Guernsey / Elizabeth, NJ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>Karnes, Mrs. J Frank (Claire Bennett)</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>F.C.C. 13534</td>\n",
" <td>21.0000</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>India / Pittsburgh, PA</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>Laroche, Mrs. Joseph (Juliette Marie Louise La...</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>SC/Paris 2123</td>\n",
" <td>41.5792</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>14</td>\n",
" <td>NaN</td>\n",
" <td>Paris / Haiti</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>Oxenham, Mr. Percy Thomas</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>W./C. 14260</td>\n",
" <td>10.5000</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>13</td>\n",
" <td>NaN</td>\n",
" <td>Pondersend, England / New Durham, NJ</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Barton, Mr. David John</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>324669</td>\n",
" <td>8.0500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>England New York, NY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Berglund, Mr. Karl Ivar Sven</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>PP 4348</td>\n",
" <td>9.3500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Tranvik, Finland New York</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Bradley, Miss. Bridget Delia</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>334914</td>\n",
" <td>7.7250</td>\n",
" <td>NaN</td>\n",
" <td>Q</td>\n",
" <td>13</td>\n",
" <td>NaN</td>\n",
" <td>Kingwilliamstown, Co Cork, Ireland Glens Falls...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Braund, Mr. Owen Harris</td>\n",
" <td>male</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>A/5 21171</td>\n",
" <td>7.2500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Bridgerule, Devon</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Brobeck, Mr. Karl Rudolf</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>350045</td>\n",
" <td>7.7958</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Sweden Worcester, MA</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Connolly, Miss. Kate</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>370373</td>\n",
" <td>7.7500</td>\n",
" <td>NaN</td>\n",
" <td>Q</td>\n",
" <td>13</td>\n",
" <td>NaN</td>\n",
" <td>Ireland</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Dahlberg, Miss. Gerda Ulrika</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7552</td>\n",
" <td>10.5167</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Norrlot, Sweden Chicago, IL</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Davies, Mr. Evan</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>SC/A4 23568</td>\n",
" <td>8.0500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Dennis, Mr. Samuel</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>A/5 21172</td>\n",
" <td>7.2500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Dyker, Mrs. Adolf Fredrik (Anna Elisabeth Judi...</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>347072</td>\n",
" <td>13.9000</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>16</td>\n",
" <td>NaN</td>\n",
" <td>West Haven, CT</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Gilinski, Mr. Eliezer</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>14973</td>\n",
" <td>8.0500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>47.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Hellstrom, Miss. Hilda Maria</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7548</td>\n",
" <td>8.9625</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Hirvonen, Mrs. Alexander (Helga E Lindqvist)</td>\n",
" <td>female</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3101298</td>\n",
" <td>12.2875</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>15</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Johansson, Mr. Erik</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>350052</td>\n",
" <td>7.7958</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>156.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Karlsson, Mr. Nils August</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>350060</td>\n",
" <td>7.5208</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Kink, Miss. Maria</td>\n",
" <td>female</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>315152</td>\n",
" <td>8.6625</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Landergren, Miss. Aurora Adelia</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>C 7077</td>\n",
" <td>7.2500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>13</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Larsson-Rondberg, Mr. Edvard A</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>347065</td>\n",
" <td>7.7750</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Leeni, Mr. Fahim (\"Philip Zenni\")</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2620</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>6</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Maenpaa, Mr. Matti Alexanteri</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>STON/O 2. 3101275</td>\n",
" <td>7.1250</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Naidenoff, Mr. Penko</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>349206</td>\n",
" <td>7.8958</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Nysten, Miss. Anna Sofia</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>347081</td>\n",
" <td>7.7500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>13</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Ohman, Miss. Velin</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>347085</td>\n",
" <td>7.7750</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Perkin, Mr. John Henry</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>A/5 21174</td>\n",
" <td>7.2500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Riihivouri, Miss. Susanna Juhantytar \"Sanni\"</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3101295</td>\n",
" <td>39.6875</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Sirayanian, Mr. Orsen</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2669</td>\n",
" <td>7.2292</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Strandberg, Miss. Ida Sofia</td>\n",
" <td>female</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7553</td>\n",
" <td>9.8375</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Vartanian, Mr. David</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2658</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>13 15</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Vovk, Mr. Janko</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>349252</td>\n",
" <td>7.8958</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22.0</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Waelens, Mr. Achille</td>\n",
" <td>male</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>345767</td>\n",
" <td>9.0000</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Antwerp, Belgium / Stanton, OH</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" pclass survived name \\\n",
"age \n",
"22.0 1 1 Bowerman, Miss. Elsie Edith \n",
"22.0 1 1 Cleaver, Miss. Alice \n",
"22.0 1 1 Frolicher, Miss. Hedwig Margaritha \n",
"22.0 1 1 Gibson, Miss. Dorothy Winifred \n",
"22.0 1 1 Ostby, Miss. Helene Ragnhild \n",
"22.0 1 1 Pears, Mrs. Thomas (Edith Wearne) \n",
"22.0 1 0 Ringhini, Mr. Sante \n",
"22.0 2 1 Caldwell, Mrs. Albert Francis (Sylvia Mae Harb... \n",
"22.0 2 1 Cook, Mrs. (Selena Rogers) \n",
"22.0 2 0 Jefferys, Mr. Ernest Wilfred \n",
"22.0 2 0 Karnes, Mrs. J Frank (Claire Bennett) \n",
"22.0 2 1 Laroche, Mrs. Joseph (Juliette Marie Louise La... \n",
"22.0 2 1 Oxenham, Mr. Percy Thomas \n",
"22.0 3 0 Barton, Mr. David John \n",
"22.0 3 0 Berglund, Mr. Karl Ivar Sven \n",
"22.0 3 1 Bradley, Miss. Bridget Delia \n",
"22.0 3 0 Braund, Mr. Owen Harris \n",
"22.0 3 0 Brobeck, Mr. Karl Rudolf \n",
"22.0 3 1 Connolly, Miss. Kate \n",
"22.0 3 0 Dahlberg, Miss. Gerda Ulrika \n",
"22.0 3 0 Davies, Mr. Evan \n",
"22.0 3 0 Dennis, Mr. Samuel \n",
"22.0 3 1 Dyker, Mrs. Adolf Fredrik (Anna Elisabeth Judi... \n",
"22.0 3 0 Gilinski, Mr. Eliezer \n",
"22.0 3 1 Hellstrom, Miss. Hilda Maria \n",
"22.0 3 1 Hirvonen, Mrs. Alexander (Helga E Lindqvist) \n",
"22.0 3 0 Johansson, Mr. Erik \n",
"22.0 3 0 Karlsson, Mr. Nils August \n",
"22.0 3 0 Kink, Miss. Maria \n",
"22.0 3 1 Landergren, Miss. Aurora Adelia \n",
"22.0 3 0 Larsson-Rondberg, Mr. Edvard A \n",
"22.0 3 1 Leeni, Mr. Fahim (\"Philip Zenni\") \n",
"22.0 3 0 Maenpaa, Mr. Matti Alexanteri \n",
"22.0 3 0 Naidenoff, Mr. Penko \n",
"22.0 3 1 Nysten, Miss. Anna Sofia \n",
"22.0 3 1 Ohman, Miss. Velin \n",
"22.0 3 0 Perkin, Mr. John Henry \n",
"22.0 3 0 Riihivouri, Miss. Susanna Juhantytar \"Sanni\" \n",
"22.0 3 0 Sirayanian, Mr. Orsen \n",
"22.0 3 0 Strandberg, Miss. Ida Sofia \n",
"22.0 3 1 Vartanian, Mr. David \n",
"22.0 3 0 Vovk, Mr. Janko \n",
"22.0 3 0 Waelens, Mr. Achille \n",
"\n",
" sex sibsp parch ticket fare cabin embarked boat \\\n",
"age \n",
"22.0 female 0 1 113505 55.0000 E33 S 6 \n",
"22.0 female 0 0 113781 151.5500 NaN S 11 \n",
"22.0 female 0 2 13568 49.5000 B39 C 5 \n",
"22.0 female 0 1 112378 59.4000 NaN C 7 \n",
"22.0 female 0 1 113509 61.9792 B36 C 5 \n",
"22.0 female 1 0 113776 66.6000 C2 S 8 \n",
"22.0 male 0 0 PC 17760 135.6333 NaN C NaN \n",
"22.0 female 1 1 248738 29.0000 NaN S 13 \n",
"22.0 female 0 0 W./C. 14266 10.5000 F33 S 14 \n",
"22.0 male 2 0 C.A. 31029 31.5000 NaN S NaN \n",
"22.0 female 0 0 F.C.C. 13534 21.0000 NaN S NaN \n",
"22.0 female 1 2 SC/Paris 2123 41.5792 NaN C 14 \n",
"22.0 male 0 0 W./C. 14260 10.5000 NaN S 13 \n",
"22.0 male 0 0 324669 8.0500 NaN S NaN \n",
"22.0 male 0 0 PP 4348 9.3500 NaN S NaN \n",
"22.0 female 0 0 334914 7.7250 NaN Q 13 \n",
"22.0 male 1 0 A/5 21171 7.2500 NaN S NaN \n",
"22.0 male 0 0 350045 7.7958 NaN S NaN \n",
"22.0 female 0 0 370373 7.7500 NaN Q 13 \n",
"22.0 female 0 0 7552 10.5167 NaN S NaN \n",
"22.0 male 0 0 SC/A4 23568 8.0500 NaN S NaN \n",
"22.0 male 0 0 A/5 21172 7.2500 NaN S NaN \n",
"22.0 female 1 0 347072 13.9000 NaN S 16 \n",
"22.0 male 0 0 14973 8.0500 NaN S NaN \n",
"22.0 female 0 0 7548 8.9625 NaN S C \n",
"22.0 female 1 1 3101298 12.2875 NaN S 15 \n",
"22.0 male 0 0 350052 7.7958 NaN S NaN \n",
"22.0 male 0 0 350060 7.5208 NaN S NaN \n",
"22.0 female 2 0 315152 8.6625 NaN S NaN \n",
"22.0 female 0 0 C 7077 7.2500 NaN S 13 \n",
"22.0 male 0 0 347065 7.7750 NaN S NaN \n",
"22.0 male 0 0 2620 7.2250 NaN C 6 \n",
"22.0 male 0 0 STON/O 2. 3101275 7.1250 NaN S NaN \n",
"22.0 male 0 0 349206 7.8958 NaN S NaN \n",
"22.0 female 0 0 347081 7.7500 NaN S 13 \n",
"22.0 female 0 0 347085 7.7750 NaN S C \n",
"22.0 male 0 0 A/5 21174 7.2500 NaN S NaN \n",
"22.0 female 0 0 3101295 39.6875 NaN S NaN \n",
"22.0 male 0 0 2669 7.2292 NaN C NaN \n",
"22.0 female 0 0 7553 9.8375 NaN S NaN \n",
"22.0 male 0 0 2658 7.2250 NaN C 13 15 \n",
"22.0 male 0 0 349252 7.8958 NaN S NaN \n",
"22.0 male 0 0 345767 9.0000 NaN S NaN \n",
"\n",
" body home.dest \n",
"age \n",
"22.0 NaN St Leonards-on-Sea, England Ohio \n",
"22.0 NaN NaN \n",
"22.0 NaN Zurich, Switzerland \n",
"22.0 NaN New York, NY \n",
"22.0 NaN Providence, RI \n",
"22.0 NaN Isleworth, England \n",
"22.0 232.0 NaN \n",
"22.0 NaN Bangkok, Thailand / Roseville, IL \n",
"22.0 NaN Pennsylvania \n",
"22.0 NaN Guernsey / Elizabeth, NJ \n",
"22.0 NaN India / Pittsburgh, PA \n",
"22.0 NaN Paris / Haiti \n",
"22.0 NaN Pondersend, England / New Durham, NJ \n",
"22.0 NaN England New York, NY \n",
"22.0 NaN Tranvik, Finland New York \n",
"22.0 NaN Kingwilliamstown, Co Cork, Ireland Glens Falls... \n",
"22.0 NaN Bridgerule, Devon \n",
"22.0 NaN Sweden Worcester, MA \n",
"22.0 NaN Ireland \n",
"22.0 NaN Norrlot, Sweden Chicago, IL \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN West Haven, CT \n",
"22.0 47.0 NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 156.0 NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN NaN \n",
"22.0 NaN Antwerp, Belgium / Stanton, OH "
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Achtung: Index ist nicht mehr eindeutig\n",
"\n",
"# Hier filtern wir nach allen Personen dem Alter von 22 Jahren\n",
"titanic.loc[22]"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [],
"source": [
"# Nun verwenden wir das Geschlecht als Index\n",
"titanic = pd.read_csv(path, index_col='sex')"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>pclass</th>\n",
" <th>survived</th>\n",
" <th>name</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>ticket</th>\n",
" <th>fare</th>\n",
" <th>cabin</th>\n",
" <th>embarked</th>\n",
" <th>boat</th>\n",
" <th>body</th>\n",
" <th>home.dest</th>\n",
" </tr>\n",
" <tr>\n",
" <th>sex</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allen, Miss. Elisabeth Walton</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>24160</td>\n",
" <td>211.3375</td>\n",
" <td>B5</td>\n",
" <td>S</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>St Louis, MO</td>\n",
" </tr>\n",
" <tr>\n",
" <th>male</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allison, Master. Hudson Trevor</td>\n",
" <td>0.9167</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Miss. Helen Loraine</td>\n",
" <td>2.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>male</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mr. Hudson Joshua Creighton</td>\n",
" <td>30.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>135.0</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mrs. Hudson J C (Bessie Waldo Daniels)</td>\n",
" <td>25.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Hileni</td>\n",
" <td>14.5000</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>328.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Thamine</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>male</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Mapriededer</td>\n",
" <td>26.5000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2656</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>304.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>male</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Ortin</td>\n",
" <td>27.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2670</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>male</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zimmerman, Mr. Leo</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>315082</td>\n",
" <td>7.8750</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1309 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" pclass survived name \\\n",
"sex \n",
"female 1 1 Allen, Miss. Elisabeth Walton \n",
"male 1 1 Allison, Master. Hudson Trevor \n",
"female 1 0 Allison, Miss. Helen Loraine \n",
"male 1 0 Allison, Mr. Hudson Joshua Creighton \n",
"female 1 0 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) \n",
"... ... ... ... \n",
"female 3 0 Zabour, Miss. Hileni \n",
"female 3 0 Zabour, Miss. Thamine \n",
"male 3 0 Zakarian, Mr. Mapriededer \n",
"male 3 0 Zakarian, Mr. Ortin \n",
"male 3 0 Zimmerman, Mr. Leo \n",
"\n",
" age sibsp parch ticket fare cabin embarked boat body \\\n",
"sex \n",
"female 29.0000 0 0 24160 211.3375 B5 S 2 NaN \n",
"male 0.9167 1 2 113781 151.5500 C22 C26 S 11 NaN \n",
"female 2.0000 1 2 113781 151.5500 C22 C26 S NaN NaN \n",
"male 30.0000 1 2 113781 151.5500 C22 C26 S NaN 135.0 \n",
"female 25.0000 1 2 113781 151.5500 C22 C26 S NaN NaN \n",
"... ... ... ... ... ... ... ... ... ... \n",
"female 14.5000 1 0 2665 14.4542 NaN C NaN 328.0 \n",
"female NaN 1 0 2665 14.4542 NaN C NaN NaN \n",
"male 26.5000 0 0 2656 7.2250 NaN C NaN 304.0 \n",
"male 27.0000 0 0 2670 7.2250 NaN C NaN NaN \n",
"male 29.0000 0 0 315082 7.8750 NaN S NaN NaN \n",
"\n",
" home.dest \n",
"sex \n",
"female St Louis, MO \n",
"male Montreal, PQ / Chesterville, ON \n",
"female Montreal, PQ / Chesterville, ON \n",
"male Montreal, PQ / Chesterville, ON \n",
"female Montreal, PQ / Chesterville, ON \n",
"... ... \n",
"female NaN \n",
"female NaN \n",
"male NaN \n",
"male NaN \n",
"male NaN \n",
"\n",
"[1309 rows x 13 columns]"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>pclass</th>\n",
" <th>survived</th>\n",
" <th>name</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>ticket</th>\n",
" <th>fare</th>\n",
" <th>cabin</th>\n",
" <th>embarked</th>\n",
" <th>boat</th>\n",
" <th>body</th>\n",
" <th>home.dest</th>\n",
" </tr>\n",
" <tr>\n",
" <th>sex</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allen, Miss. Elisabeth Walton</td>\n",
" <td>29.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>24160</td>\n",
" <td>211.3375</td>\n",
" <td>B5</td>\n",
" <td>S</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>St Louis, MO</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Miss. Helen Loraine</td>\n",
" <td>2.0</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mrs. Hudson J C (Bessie Waldo Daniels)</td>\n",
" <td>25.0</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Andrews, Miss. Kornelia Theodosia</td>\n",
" <td>63.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>13502</td>\n",
" <td>77.9583</td>\n",
" <td>D7</td>\n",
" <td>S</td>\n",
" <td>10</td>\n",
" <td>NaN</td>\n",
" <td>Hudson, NY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Appleton, Mrs. Edward Dale (Charlotte Lamson)</td>\n",
" <td>53.0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>11769</td>\n",
" <td>51.4792</td>\n",
" <td>C101</td>\n",
" <td>S</td>\n",
" <td>D</td>\n",
" <td>NaN</td>\n",
" <td>Bayside, Queens, NY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Whabee, Mrs. George Joseph (Shawneene Abi-Saab)</td>\n",
" <td>38.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2688</td>\n",
" <td>7.2292</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Wilkes, Mrs. James (Ellen Needs)</td>\n",
" <td>47.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>363272</td>\n",
" <td>7.0000</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Yasbeck, Mrs. Antoni (Selini Alexander)</td>\n",
" <td>15.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2659</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Hileni</td>\n",
" <td>14.5</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>328.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Thamine</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>466 rows × 13 columns</p>\n",
"</div>"
],
"text/plain": [
" pclass survived name \\\n",
"sex \n",
"female 1 1 Allen, Miss. Elisabeth Walton \n",
"female 1 0 Allison, Miss. Helen Loraine \n",
"female 1 0 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) \n",
"female 1 1 Andrews, Miss. Kornelia Theodosia \n",
"female 1 1 Appleton, Mrs. Edward Dale (Charlotte Lamson) \n",
"... ... ... ... \n",
"female 3 1 Whabee, Mrs. George Joseph (Shawneene Abi-Saab) \n",
"female 3 1 Wilkes, Mrs. James (Ellen Needs) \n",
"female 3 1 Yasbeck, Mrs. Antoni (Selini Alexander) \n",
"female 3 0 Zabour, Miss. Hileni \n",
"female 3 0 Zabour, Miss. Thamine \n",
"\n",
" age sibsp parch ticket fare cabin embarked boat body \\\n",
"sex \n",
"female 29.0 0 0 24160 211.3375 B5 S 2 NaN \n",
"female 2.0 1 2 113781 151.5500 C22 C26 S NaN NaN \n",
"female 25.0 1 2 113781 151.5500 C22 C26 S NaN NaN \n",
"female 63.0 1 0 13502 77.9583 D7 S 10 NaN \n",
"female 53.0 2 0 11769 51.4792 C101 S D NaN \n",
"... ... ... ... ... ... ... ... ... ... \n",
"female 38.0 0 0 2688 7.2292 NaN C C NaN \n",
"female 47.0 1 0 363272 7.0000 NaN S NaN NaN \n",
"female 15.0 1 0 2659 14.4542 NaN C NaN NaN \n",
"female 14.5 1 0 2665 14.4542 NaN C NaN 328.0 \n",
"female NaN 1 0 2665 14.4542 NaN C NaN NaN \n",
"\n",
" home.dest \n",
"sex \n",
"female St Louis, MO \n",
"female Montreal, PQ / Chesterville, ON \n",
"female Montreal, PQ / Chesterville, ON \n",
"female Hudson, NY \n",
"female Bayside, Queens, NY \n",
"... ... \n",
"female NaN \n",
"female NaN \n",
"female NaN \n",
"female NaN \n",
"female NaN \n",
"\n",
"[466 rows x 13 columns]"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic.loc['female']"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [],
"source": [
"# Einlesen der Daten mit expliziter Angabe des Trennzeichens\n",
"titanic = pd.read_csv(path, sep=\",\")"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>pclass</th>\n",
" <th>survived</th>\n",
" <th>name</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>ticket</th>\n",
" <th>fare</th>\n",
" <th>cabin</th>\n",
" <th>embarked</th>\n",
" <th>boat</th>\n",
" <th>body</th>\n",
" <th>home.dest</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allen, Miss. Elisabeth Walton</td>\n",
" <td>female</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>24160</td>\n",
" <td>211.3375</td>\n",
" <td>B5</td>\n",
" <td>S</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>St Louis, MO</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allison, Master. Hudson Trevor</td>\n",
" <td>male</td>\n",
" <td>0.9167</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Miss. Helen Loraine</td>\n",
" <td>female</td>\n",
" <td>2.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mr. Hudson Joshua Creighton</td>\n",
" <td>male</td>\n",
" <td>30.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>135.0</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mrs. Hudson J C (Bessie Waldo Daniels)</td>\n",
" <td>female</td>\n",
" <td>25.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1304</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Hileni</td>\n",
" <td>female</td>\n",
" <td>14.5000</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>328.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1305</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Thamine</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1306</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Mapriededer</td>\n",
" <td>male</td>\n",
" <td>26.5000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2656</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>304.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1307</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Ortin</td>\n",
" <td>male</td>\n",
" <td>27.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2670</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1308</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zimmerman, Mr. Leo</td>\n",
" <td>male</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>315082</td>\n",
" <td>7.8750</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1309 rows × 14 columns</p>\n",
"</div>"
],
"text/plain": [
" pclass survived name \\\n",
"0 1 1 Allen, Miss. Elisabeth Walton \n",
"1 1 1 Allison, Master. Hudson Trevor \n",
"2 1 0 Allison, Miss. Helen Loraine \n",
"3 1 0 Allison, Mr. Hudson Joshua Creighton \n",
"4 1 0 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) \n",
"... ... ... ... \n",
"1304 3 0 Zabour, Miss. Hileni \n",
"1305 3 0 Zabour, Miss. Thamine \n",
"1306 3 0 Zakarian, Mr. Mapriededer \n",
"1307 3 0 Zakarian, Mr. Ortin \n",
"1308 3 0 Zimmerman, Mr. Leo \n",
"\n",
" sex age sibsp parch ticket fare cabin embarked boat \\\n",
"0 female 29.0000 0 0 24160 211.3375 B5 S 2 \n",
"1 male 0.9167 1 2 113781 151.5500 C22 C26 S 11 \n",
"2 female 2.0000 1 2 113781 151.5500 C22 C26 S NaN \n",
"3 male 30.0000 1 2 113781 151.5500 C22 C26 S NaN \n",
"4 female 25.0000 1 2 113781 151.5500 C22 C26 S NaN \n",
"... ... ... ... ... ... ... ... ... ... \n",
"1304 female 14.5000 1 0 2665 14.4542 NaN C NaN \n",
"1305 female NaN 1 0 2665 14.4542 NaN C NaN \n",
"1306 male 26.5000 0 0 2656 7.2250 NaN C NaN \n",
"1307 male 27.0000 0 0 2670 7.2250 NaN C NaN \n",
"1308 male 29.0000 0 0 315082 7.8750 NaN S NaN \n",
"\n",
" body home.dest \n",
"0 NaN St Louis, MO \n",
"1 NaN Montreal, PQ / Chesterville, ON \n",
"2 NaN Montreal, PQ / Chesterville, ON \n",
"3 135.0 Montreal, PQ / Chesterville, ON \n",
"4 NaN Montreal, PQ / Chesterville, ON \n",
"... ... ... \n",
"1304 328.0 NaN \n",
"1305 NaN NaN \n",
"1306 304.0 NaN \n",
"1307 NaN NaN \n",
"1308 NaN NaN \n",
"\n",
"[1309 rows x 14 columns]"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In manchen Fällen kann das Trennzeichen (zBsp \",\") Probleme machen (zBsp Tausender-Trennzeichen oder als Gleitkomma für floats)"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [],
"source": [
"# In so einem Fall kann dann die eigene Option decimal verwendet werden\n",
"titanic = pd.read_csv(path, sep=\",\", decimal=\".\")"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>pclass</th>\n",
" <th>survived</th>\n",
" <th>name</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>ticket</th>\n",
" <th>fare</th>\n",
" <th>cabin</th>\n",
" <th>embarked</th>\n",
" <th>boat</th>\n",
" <th>body</th>\n",
" <th>home.dest</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allen, Miss. Elisabeth Walton</td>\n",
" <td>female</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>24160</td>\n",
" <td>211.3375</td>\n",
" <td>B5</td>\n",
" <td>S</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>St Louis, MO</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allison, Master. Hudson Trevor</td>\n",
" <td>male</td>\n",
" <td>0.9167</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Miss. Helen Loraine</td>\n",
" <td>female</td>\n",
" <td>2.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mr. Hudson Joshua Creighton</td>\n",
" <td>male</td>\n",
" <td>30.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>135.0</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mrs. Hudson J C (Bessie Waldo Daniels)</td>\n",
" <td>female</td>\n",
" <td>25.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1304</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Hileni</td>\n",
" <td>female</td>\n",
" <td>14.5000</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>328.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1305</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Thamine</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1306</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Mapriededer</td>\n",
" <td>male</td>\n",
" <td>26.5000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2656</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>304.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1307</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Ortin</td>\n",
" <td>male</td>\n",
" <td>27.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2670</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1308</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zimmerman, Mr. Leo</td>\n",
" <td>male</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>315082</td>\n",
" <td>7.8750</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1309 rows × 14 columns</p>\n",
"</div>"
],
"text/plain": [
" pclass survived name \\\n",
"0 1 1 Allen, Miss. Elisabeth Walton \n",
"1 1 1 Allison, Master. Hudson Trevor \n",
"2 1 0 Allison, Miss. Helen Loraine \n",
"3 1 0 Allison, Mr. Hudson Joshua Creighton \n",
"4 1 0 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) \n",
"... ... ... ... \n",
"1304 3 0 Zabour, Miss. Hileni \n",
"1305 3 0 Zabour, Miss. Thamine \n",
"1306 3 0 Zakarian, Mr. Mapriededer \n",
"1307 3 0 Zakarian, Mr. Ortin \n",
"1308 3 0 Zimmerman, Mr. Leo \n",
"\n",
" sex age sibsp parch ticket fare cabin embarked boat \\\n",
"0 female 29.0000 0 0 24160 211.3375 B5 S 2 \n",
"1 male 0.9167 1 2 113781 151.5500 C22 C26 S 11 \n",
"2 female 2.0000 1 2 113781 151.5500 C22 C26 S NaN \n",
"3 male 30.0000 1 2 113781 151.5500 C22 C26 S NaN \n",
"4 female 25.0000 1 2 113781 151.5500 C22 C26 S NaN \n",
"... ... ... ... ... ... ... ... ... ... \n",
"1304 female 14.5000 1 0 2665 14.4542 NaN C NaN \n",
"1305 female NaN 1 0 2665 14.4542 NaN C NaN \n",
"1306 male 26.5000 0 0 2656 7.2250 NaN C NaN \n",
"1307 male 27.0000 0 0 2670 7.2250 NaN C NaN \n",
"1308 male 29.0000 0 0 315082 7.8750 NaN S NaN \n",
"\n",
" body home.dest \n",
"0 NaN St Louis, MO \n",
"1 NaN Montreal, PQ / Chesterville, ON \n",
"2 NaN Montreal, PQ / Chesterville, ON \n",
"3 135.0 Montreal, PQ / Chesterville, ON \n",
"4 NaN Montreal, PQ / Chesterville, ON \n",
"... ... ... \n",
"1304 328.0 NaN \n",
"1305 NaN NaN \n",
"1306 304.0 NaN \n",
"1307 NaN NaN \n",
"1308 NaN NaN \n",
"\n",
"[1309 rows x 14 columns]"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Falls es keinen Header gibt, kann dieser selber erstellt werden mit dem `names` argument"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>own_class</th>\n",
" <th>survived</th>\n",
" <th>name</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>ticket</th>\n",
" <th>fare</th>\n",
" <th>cabin</th>\n",
" <th>embarked</th>\n",
" <th>boat</th>\n",
" <th>body</th>\n",
" <th>home.dest</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allen, Miss. Elisabeth Walton</td>\n",
" <td>female</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>24160</td>\n",
" <td>211.3375</td>\n",
" <td>B5</td>\n",
" <td>S</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>St Louis, MO</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allison, Master. Hudson Trevor</td>\n",
" <td>male</td>\n",
" <td>0.9167</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Miss. Helen Loraine</td>\n",
" <td>female</td>\n",
" <td>2.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mr. Hudson Joshua Creighton</td>\n",
" <td>male</td>\n",
" <td>30.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>135.0</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mrs. Hudson J C (Bessie Waldo Daniels)</td>\n",
" <td>female</td>\n",
" <td>25.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1304</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Hileni</td>\n",
" <td>female</td>\n",
" <td>14.5000</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>328.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1305</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Thamine</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1306</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Mapriededer</td>\n",
" <td>male</td>\n",
" <td>26.5000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2656</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>304.0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1307</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Ortin</td>\n",
" <td>male</td>\n",
" <td>27.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2670</td>\n",
" <td>7.2250</td>\n",
" <td>NaN</td>\n",
" <td>C</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1308</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zimmerman, Mr. Leo</td>\n",
" <td>male</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>315082</td>\n",
" <td>7.8750</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1309 rows × 14 columns</p>\n",
"</div>"
],
"text/plain": [
" own_class survived name \\\n",
"0 1 1 Allen, Miss. Elisabeth Walton \n",
"1 1 1 Allison, Master. Hudson Trevor \n",
"2 1 0 Allison, Miss. Helen Loraine \n",
"3 1 0 Allison, Mr. Hudson Joshua Creighton \n",
"4 1 0 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) \n",
"... ... ... ... \n",
"1304 3 0 Zabour, Miss. Hileni \n",
"1305 3 0 Zabour, Miss. Thamine \n",
"1306 3 0 Zakarian, Mr. Mapriededer \n",
"1307 3 0 Zakarian, Mr. Ortin \n",
"1308 3 0 Zimmerman, Mr. Leo \n",
"\n",
" sex age sibsp parch ticket fare cabin embarked boat \\\n",
"0 female 29.0000 0 0 24160 211.3375 B5 S 2 \n",
"1 male 0.9167 1 2 113781 151.5500 C22 C26 S 11 \n",
"2 female 2.0000 1 2 113781 151.5500 C22 C26 S NaN \n",
"3 male 30.0000 1 2 113781 151.5500 C22 C26 S NaN \n",
"4 female 25.0000 1 2 113781 151.5500 C22 C26 S NaN \n",
"... ... ... ... ... ... ... ... ... ... \n",
"1304 female 14.5000 1 0 2665 14.4542 NaN C NaN \n",
"1305 female NaN 1 0 2665 14.4542 NaN C NaN \n",
"1306 male 26.5000 0 0 2656 7.2250 NaN C NaN \n",
"1307 male 27.0000 0 0 2670 7.2250 NaN C NaN \n",
"1308 male 29.0000 0 0 315082 7.8750 NaN S NaN \n",
"\n",
" body home.dest \n",
"0 NaN St Louis, MO \n",
"1 NaN Montreal, PQ / Chesterville, ON \n",
"2 NaN Montreal, PQ / Chesterville, ON \n",
"3 135.0 Montreal, PQ / Chesterville, ON \n",
"4 NaN Montreal, PQ / Chesterville, ON \n",
"... ... ... \n",
"1304 328.0 NaN \n",
"1305 NaN NaN \n",
"1306 304.0 NaN \n",
"1307 NaN NaN \n",
"1308 NaN NaN \n",
"\n",
"[1309 rows x 14 columns]"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"own_header_titanic = pd.read_csv(path, header=0, names=['own_class', 'survived', 'name', 'sex', 'age', 'sibsp', 'parch', 'ticket', 'fare', 'cabin', 'embarked', 'boat', 'body', 'home.dest'])\n",
"\n",
"own_header_titanic # würde auch funktionieren wenn kein header gegeben wäre"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In unserem Fall wollen wir die Namen beibehalten, sprich wir verwenden die gleichen Spaltennamen wie im originalen Datenset. Um die Spaltennamen des ursprünglichen Datensets zu erhalten verwenden wir den `columns()` Befehl."
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
"# Alle Spaltennamen erhalten\n",
"columns = titanic.columns"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['pclass', 'survived', 'name', 'sex', 'age', 'sibsp', 'parch', 'ticket',\n",
" 'fare', 'cabin', 'embarked', 'boat', 'body', 'home.dest'],\n",
" dtype='object')"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"columns"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 1309 entries, 0 to 1308\n",
"Data columns (total 14 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 pclass 1309 non-null int64 \n",
" 1 survived 1309 non-null int64 \n",
" 2 name 1309 non-null object \n",
" 3 sex 1309 non-null object \n",
" 4 age 1046 non-null float64\n",
" 5 sibsp 1309 non-null int64 \n",
" 6 parch 1309 non-null int64 \n",
" 7 ticket 1309 non-null object \n",
" 8 fare 1308 non-null float64\n",
" 9 cabin 295 non-null object \n",
" 10 embarked 1307 non-null object \n",
" 11 boat 486 non-null object \n",
" 12 body 121 non-null float64\n",
" 13 home.dest 745 non-null object \n",
"dtypes: float64(3), int64(4), object(7)\n",
"memory usage: 143.3+ KB\n"
]
}
],
"source": [
"# Ausgeben lassen der Informationen über die Spalten inklusive Null-Count:\n",
"titanic.info()\n",
"\n",
"# Weitere Infos findet man oft auf der Webseite des Datesets, in diesem Fall: https://www.kaggle.com/c/titanic/data (Achtung, nicht genau das gleiche Dataset, in diesem Fall bereits bereinigt und aufgteilt in train und test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wir sehen, manche Spalten sind als Typ `object`, obwohl sie zbsp als string durchgehen könnten. Richtige Datentypen sind wichtig, da so dann mehr Methoden zur Verfügung stehen."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Für manche Spalten ist es aber dann Vorteilhaft, die <em>null</em> bzw. <em>None</em> Werte davor zu befüllen"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [],
"source": [
"# Betrachten wir die Spalte home.dest:\n",
"# Die Daten sind eigentlich Werte des Typs string, aber es wird als object interpretiert -> Dies ändern wir nun\n",
"\n",
"# Füllen der Daten mit dem Wert '' (leerer String)\n",
"titanic['home.dest'] = titanic['home.dest'].fillna(value='')\n",
"\n",
"\n",
"titanic['home.dest'] = titanic[\"home.dest\"].astype(\"string\")"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 1309 entries, 0 to 1308\n",
"Data columns (total 14 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 pclass 1309 non-null int64 \n",
" 1 survived 1309 non-null int64 \n",
" 2 name 1309 non-null object \n",
" 3 sex 1309 non-null object \n",
" 4 age 1046 non-null float64\n",
" 5 sibsp 1309 non-null int64 \n",
" 6 parch 1309 non-null int64 \n",
" 7 ticket 1309 non-null object \n",
" 8 fare 1308 non-null float64\n",
" 9 cabin 295 non-null object \n",
" 10 embarked 1307 non-null object \n",
" 11 boat 486 non-null object \n",
" 12 body 121 non-null float64\n",
" 13 home.dest 1309 non-null string \n",
"dtypes: float64(3), int64(4), object(6), string(1)\n",
"memory usage: 143.3+ KB\n"
]
}
],
"source": [
"titanic.info()"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 St Louis, MO\n",
"1 Montreal, PQ / Chesterville, ON\n",
"2 Montreal, PQ / Chesterville, ON\n",
"3 Montreal, PQ / Chesterville, ON\n",
"4 Montreal, PQ / Chesterville, ON\n",
" ... \n",
"1304 \n",
"1305 \n",
"1306 \n",
"1307 \n",
"1308 \n",
"Name: home.dest, Length: 1309, dtype: string"
]
},
"execution_count": 72,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic['home.dest']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wenn im Vorhinein die Datentypen schon feststehen, können auch diese beim Einlesen verwendet werden. Dafür muss ein Dictionary für das Argument `dtype` übergeben werden."
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [],
"source": [
"# Einlesen der Daten mit home.dest als String\n",
"titanic = pd.read_csv(path, dtype={\"home.dest\": 'string'}, header=0)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 1309 entries, 0 to 1308\n",
"Data columns (total 14 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 pclass 1309 non-null int64 \n",
" 1 survived 1309 non-null int64 \n",
" 2 name 1309 non-null object \n",
" 3 sex 1309 non-null object \n",
" 4 age 1046 non-null float64\n",
" 5 sibsp 1309 non-null int64 \n",
" 6 parch 1309 non-null int64 \n",
" 7 ticket 1309 non-null object \n",
" 8 fare 1308 non-null float64\n",
" 9 cabin 295 non-null object \n",
" 10 embarked 1307 non-null object \n",
" 11 boat 486 non-null object \n",
" 12 body 121 non-null float64\n",
" 13 home.dest 745 non-null string \n",
"dtypes: float64(3), int64(4), object(6), string(1)\n",
"memory usage: 143.3+ KB\n"
]
}
],
"source": [
"titanic.info()"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 St Louis, MO\n",
"1 Montreal, PQ / Chesterville, ON\n",
"2 Montreal, PQ / Chesterville, ON\n",
"3 Montreal, PQ / Chesterville, ON\n",
"4 Montreal, PQ / Chesterville, ON\n",
" ... \n",
"1304 <NA>\n",
"1305 <NA>\n",
"1306 <NA>\n",
"1307 <NA>\n",
"1308 <NA>\n",
"Name: home.dest, Length: 1309, dtype: string"
]
},
"execution_count": 75,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic['home.dest']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Es können auch sogenannte na-filter verwendet (und adaptiert) bzw. deaktiviert werden, welche Pandas ggf. unterbinden, leere String und dergleichen mit einen <b>NaN</b>-Symbol zu ersetzen."
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
"# Einlesen mit na_filter = False\n",
"titanic = pd.read_csv(path, na_filter=False, header=0, dtype={\"home.dest\": 'string'})"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 St Louis, MO\n",
"1 Montreal, PQ / Chesterville, ON\n",
"2 Montreal, PQ / Chesterville, ON\n",
"3 Montreal, PQ / Chesterville, ON\n",
"4 Montreal, PQ / Chesterville, ON\n",
" ... \n",
"1304 \n",
"1305 \n",
"1306 \n",
"1307 \n",
"1308 \n",
"Name: home.dest, Length: 1309, dtype: string"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic['home.dest']"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [],
"source": [
"titanic = pd.read_csv(path, header=0, sep=',', index_col=False, decimal='.')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Speichern eines Dataframes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wie am Anfang erwähnt können die Dataframes auch in einer Datei gespeichert werden."
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [],
"source": [
"# speichern des dataframes als json\n",
"\n",
"path = os.path.join(\"..\", \"..\", \"_data\", \"titanic.json\")\n",
"\n",
"titanic.to_json(path)"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [],
"source": [
"# Laden der json Datei:\n",
"titanic = pd.read_json(path)"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>pclass</th>\n",
" <th>survived</th>\n",
" <th>name</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>ticket</th>\n",
" <th>fare</th>\n",
" <th>cabin</th>\n",
" <th>embarked</th>\n",
" <th>boat</th>\n",
" <th>body</th>\n",
" <th>home.dest</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allen, Miss. Elisabeth Walton</td>\n",
" <td>female</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>24160</td>\n",
" <td>211.3375</td>\n",
" <td>B5</td>\n",
" <td>S</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>St Louis, MO</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allison, Master. Hudson Trevor</td>\n",
" <td>male</td>\n",
" <td>0.9167</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Miss. Helen Loraine</td>\n",
" <td>female</td>\n",
" <td>2.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mr. Hudson Joshua Creighton</td>\n",
" <td>male</td>\n",
" <td>30.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>None</td>\n",
" <td>135.0</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mrs. Hudson J C (Bessie Waldo Daniels)</td>\n",
" <td>female</td>\n",
" <td>25.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1304</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Hileni</td>\n",
" <td>female</td>\n",
" <td>14.5000</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>None</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>328.0</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1305</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Thamine</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>None</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1306</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Mapriededer</td>\n",
" <td>male</td>\n",
" <td>26.5000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2656</td>\n",
" <td>7.2250</td>\n",
" <td>None</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>304.0</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1307</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Ortin</td>\n",
" <td>male</td>\n",
" <td>27.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2670</td>\n",
" <td>7.2250</td>\n",
" <td>None</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1308</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zimmerman, Mr. Leo</td>\n",
" <td>male</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>315082</td>\n",
" <td>7.8750</td>\n",
" <td>None</td>\n",
" <td>S</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1309 rows × 14 columns</p>\n",
"</div>"
],
"text/plain": [
" pclass survived name \\\n",
"0 1 1 Allen, Miss. Elisabeth Walton \n",
"1 1 1 Allison, Master. Hudson Trevor \n",
"2 1 0 Allison, Miss. Helen Loraine \n",
"3 1 0 Allison, Mr. Hudson Joshua Creighton \n",
"4 1 0 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) \n",
"... ... ... ... \n",
"1304 3 0 Zabour, Miss. Hileni \n",
"1305 3 0 Zabour, Miss. Thamine \n",
"1306 3 0 Zakarian, Mr. Mapriededer \n",
"1307 3 0 Zakarian, Mr. Ortin \n",
"1308 3 0 Zimmerman, Mr. Leo \n",
"\n",
" sex age sibsp parch ticket fare cabin embarked boat \\\n",
"0 female 29.0000 0 0 24160 211.3375 B5 S 2 \n",
"1 male 0.9167 1 2 113781 151.5500 C22 C26 S 11 \n",
"2 female 2.0000 1 2 113781 151.5500 C22 C26 S None \n",
"3 male 30.0000 1 2 113781 151.5500 C22 C26 S None \n",
"4 female 25.0000 1 2 113781 151.5500 C22 C26 S None \n",
"... ... ... ... ... ... ... ... ... ... \n",
"1304 female 14.5000 1 0 2665 14.4542 None C None \n",
"1305 female NaN 1 0 2665 14.4542 None C None \n",
"1306 male 26.5000 0 0 2656 7.2250 None C None \n",
"1307 male 27.0000 0 0 2670 7.2250 None C None \n",
"1308 male 29.0000 0 0 315082 7.8750 None S None \n",
"\n",
" body home.dest \n",
"0 NaN St Louis, MO \n",
"1 NaN Montreal, PQ / Chesterville, ON \n",
"2 NaN Montreal, PQ / Chesterville, ON \n",
"3 135.0 Montreal, PQ / Chesterville, ON \n",
"4 NaN Montreal, PQ / Chesterville, ON \n",
"... ... ... \n",
"1304 328.0 None \n",
"1305 NaN None \n",
"1306 304.0 None \n",
"1307 NaN None \n",
"1308 NaN None \n",
"\n",
"[1309 rows x 14 columns]"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"titanic"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Index: 1309 entries, 0 to 1308\n",
"Data columns (total 14 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 pclass 1309 non-null int64 \n",
" 1 survived 1309 non-null int64 \n",
" 2 name 1309 non-null object \n",
" 3 sex 1309 non-null object \n",
" 4 age 1046 non-null float64\n",
" 5 sibsp 1309 non-null int64 \n",
" 6 parch 1309 non-null int64 \n",
" 7 ticket 1309 non-null object \n",
" 8 fare 1308 non-null float64\n",
" 9 cabin 295 non-null object \n",
" 10 embarked 1307 non-null object \n",
" 11 boat 486 non-null object \n",
" 12 body 121 non-null float64\n",
" 13 home.dest 745 non-null object \n",
"dtypes: float64(3), int64(4), object(7)\n",
"memory usage: 153.4+ KB\n"
]
}
],
"source": [
"titanic.info()"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [],
"source": [
"# We can delete the created json again\n",
"os.remove(path)"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [],
"source": [
"path = os.path.join(\"..\", \"..\", \"_data\", \"titanic.csv\")\n",
"\n",
"# In the case of a csv file, which occurs most often, we have a lot of possibilities\n",
"titanic.to_csv(path, sep=',', decimal='.', index=False, header=True) # and many more"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"## Aufgabe:\n",
"Laden Sie das *Titanic* Dataset erneut (Falls Link benötigt wird: https://raw.githubusercontent.com/rolandmueller/titanic/main/titanic3.csv).\n",
"\n",
"Bearbeiten Sie nun folgende Punkte! Dokumentieren Sie dabei ihre Schritte indem Sie ggf. auch Fehlversuche als Zellen zu belassen (um zu zeigen, dass etwas nicht funktioniert). \n",
"\n",
"* Wie ist das Dataset aufgebaut?\n",
"\n",
" Ein Datensatz hat (name, alter, kabine, etc.) und ob diese person überlebt hat.\n",
"* Was bedeuten die einzelnen Features?\n",
"\n",
" Es gibt personen mit (name, alter, etc.) und ob diese Personen überlebt haben.\n",
"* Extrahieren Sie Informationen über das Dataframe über die `info()` Methoden\n",
"\n",
" Namen sind Objects und bei body gibt es die wenigsten non-nulls\n",
"* Analysieren Sie die Datentypen und auch die Anzahl der leeren Zellen in jeder Spalte. Wie viele Prozent sind leer/fehlend?\n",
"\n",
" In body gibt es 90.7% NaN werte\n",
"* Filtern sie das Dataframe, sodass es nur Zeilen beinhaltet, bei der die `Geschlecht`-Spalte und bei der das `Alter` nicht leer ist\n",
"\n",
" Fertig!\n",
"* Sortieren Sie das Dataframe absteigend nach der Spalte `Alter`\n",
"\n",
" Fertig!\n",
"* Erstellen Sie ein neues Dataframe (`inplace=False`), wo Sie den Namen außerdem noch alphabetisch sortieren (aufsteigend). Es soll also zuerst absteigend nach `Alter`, danach aufsteigend nach `Name` sortiert werden.\n",
"\n",
" Fertig!\n",
"* Speichern Sie dieses neue Dataframe unter einem neuen Namen ab und verwenden Sie ab jetzt nur noch dieses Dataset.\n",
"\n",
" Fertig!\n",
"* Verwenden Sie die anschließend einen Befehl um die Ticket-Klasse `pclass` der jüngste(n) Passagier(in) herauszufinden und außerdem, ob diese Person überlebt hat. Sollte dieser Wert <em>leer</em> sein, so dürfen Sie diese Zeilen entfernen. Wie alt war diese Person?\n",
"\n",
" Age: 0.1667\n",
" pclass: 3\n",
" survived: 1\n",
"* Bonus: Finden Sie, unabhängig von den vorigen Aufgaben, den längsten Namen (Anzahl der Charakter). Wie viele Zeichen hat dieser Name?\n",
"\n",
" Length: 82\n",
" Name: 'Penasco y Castellana, Mrs. Victor de Satode (Maria Josefa Perez de Soto y Vallejo)'"
]
},
{
"cell_type": "code",
"execution_count": 85,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Index: 1309 entries, 0 to 1308\n",
"Data columns (total 14 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 pclass 1309 non-null int64 \n",
" 1 survived 1309 non-null int64 \n",
" 2 name 1309 non-null object \n",
" 3 sex 1309 non-null object \n",
" 4 age 1046 non-null float64\n",
" 5 sibsp 1309 non-null int64 \n",
" 6 parch 1309 non-null int64 \n",
" 7 ticket 1309 non-null object \n",
" 8 fare 1308 non-null float64\n",
" 9 cabin 295 non-null object \n",
" 10 embarked 1307 non-null object \n",
" 11 boat 486 non-null object \n",
" 12 body 121 non-null float64\n",
" 13 home.dest 745 non-null object \n",
"dtypes: float64(3), int64(4), object(7)\n",
"memory usage: 153.4+ KB\n"
]
}
],
"source": [
"#Aufgabe 3\n",
"titanic.info()"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"NULL percent of column body: 90.75630252100841 %\n",
"NULL absolute of column body: 1188\n"
]
}
],
"source": [
"#Aufgabe 4\n",
"column = 'body'\n",
"\n",
"amount_null = titanic.filter([column]).isnull().sum() / len(titanic) * 100\n",
"amount_null_count = titanic.filter([column]).isnull().sum()\n",
"\n",
"\n",
"print(f'NULL percent of column {column}: ', amount_null.iloc[0], '%')\n",
"print(f'NULL absolute of column {column}: ', amount_null_count.iloc[0])"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>pclass</th>\n",
" <th>survived</th>\n",
" <th>name</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>ticket</th>\n",
" <th>fare</th>\n",
" <th>cabin</th>\n",
" <th>embarked</th>\n",
" <th>boat</th>\n",
" <th>body</th>\n",
" <th>home.dest</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allen, Miss. Elisabeth Walton</td>\n",
" <td>female</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>24160</td>\n",
" <td>211.3375</td>\n",
" <td>B5</td>\n",
" <td>S</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>St Louis, MO</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Allison, Master. Hudson Trevor</td>\n",
" <td>male</td>\n",
" <td>0.9167</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>11</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Miss. Helen Loraine</td>\n",
" <td>female</td>\n",
" <td>2.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mr. Hudson Joshua Creighton</td>\n",
" <td>male</td>\n",
" <td>30.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>None</td>\n",
" <td>135.0</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Allison, Mrs. Hudson J C (Bessie Waldo Daniels)</td>\n",
" <td>female</td>\n",
" <td>25.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>113781</td>\n",
" <td>151.5500</td>\n",
" <td>C22 C26</td>\n",
" <td>S</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>Montreal, PQ / Chesterville, ON</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1301</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Youseff, Mr. Gerious</td>\n",
" <td>male</td>\n",
" <td>45.5000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2628</td>\n",
" <td>7.2250</td>\n",
" <td>None</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>312.0</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1304</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Hileni</td>\n",
" <td>female</td>\n",
" <td>14.5000</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>None</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>328.0</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1306</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Mapriededer</td>\n",
" <td>male</td>\n",
" <td>26.5000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2656</td>\n",
" <td>7.2250</td>\n",
" <td>None</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>304.0</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1307</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zakarian, Mr. Ortin</td>\n",
" <td>male</td>\n",
" <td>27.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2670</td>\n",
" <td>7.2250</td>\n",
" <td>None</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1308</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zimmerman, Mr. Leo</td>\n",
" <td>male</td>\n",
" <td>29.0000</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>315082</td>\n",
" <td>7.8750</td>\n",
" <td>None</td>\n",
" <td>S</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1046 rows × 14 columns</p>\n",
"</div>"
],
"text/plain": [
" pclass survived name \\\n",
"0 1 1 Allen, Miss. Elisabeth Walton \n",
"1 1 1 Allison, Master. Hudson Trevor \n",
"2 1 0 Allison, Miss. Helen Loraine \n",
"3 1 0 Allison, Mr. Hudson Joshua Creighton \n",
"4 1 0 Allison, Mrs. Hudson J C (Bessie Waldo Daniels) \n",
"... ... ... ... \n",
"1301 3 0 Youseff, Mr. Gerious \n",
"1304 3 0 Zabour, Miss. Hileni \n",
"1306 3 0 Zakarian, Mr. Mapriededer \n",
"1307 3 0 Zakarian, Mr. Ortin \n",
"1308 3 0 Zimmerman, Mr. Leo \n",
"\n",
" sex age sibsp parch ticket fare cabin embarked boat \\\n",
"0 female 29.0000 0 0 24160 211.3375 B5 S 2 \n",
"1 male 0.9167 1 2 113781 151.5500 C22 C26 S 11 \n",
"2 female 2.0000 1 2 113781 151.5500 C22 C26 S None \n",
"3 male 30.0000 1 2 113781 151.5500 C22 C26 S None \n",
"4 female 25.0000 1 2 113781 151.5500 C22 C26 S None \n",
"... ... ... ... ... ... ... ... ... ... \n",
"1301 male 45.5000 0 0 2628 7.2250 None C None \n",
"1304 female 14.5000 1 0 2665 14.4542 None C None \n",
"1306 male 26.5000 0 0 2656 7.2250 None C None \n",
"1307 male 27.0000 0 0 2670 7.2250 None C None \n",
"1308 male 29.0000 0 0 315082 7.8750 None S None \n",
"\n",
" body home.dest \n",
"0 NaN St Louis, MO \n",
"1 NaN Montreal, PQ / Chesterville, ON \n",
"2 NaN Montreal, PQ / Chesterville, ON \n",
"3 135.0 Montreal, PQ / Chesterville, ON \n",
"4 NaN Montreal, PQ / Chesterville, ON \n",
"... ... ... \n",
"1301 312.0 None \n",
"1304 328.0 None \n",
"1306 304.0 None \n",
"1307 NaN None \n",
"1308 NaN None \n",
"\n",
"[1046 rows x 14 columns]"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Aufgabe 5\n",
"cleaned_df_2 = titanic.dropna(subset=['sex', 'age'])\n",
"cleaned_df_2"
]
},
{
"cell_type": "code",
"execution_count": 91,
"metadata": {},
"outputs": [],
"source": [
"#Aufgabe 6\n",
"titanic.sort_values('age', ascending=False, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>pclass</th>\n",
" <th>survived</th>\n",
" <th>name</th>\n",
" <th>sex</th>\n",
" <th>age</th>\n",
" <th>sibsp</th>\n",
" <th>parch</th>\n",
" <th>ticket</th>\n",
" <th>fare</th>\n",
" <th>cabin</th>\n",
" <th>embarked</th>\n",
" <th>boat</th>\n",
" <th>body</th>\n",
" <th>home.dest</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Barkworth, Mr. Algernon Henry Wilson</td>\n",
" <td>male</td>\n",
" <td>80.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>27042</td>\n",
" <td>30.0000</td>\n",
" <td>A23</td>\n",
" <td>S</td>\n",
" <td>B</td>\n",
" <td>NaN</td>\n",
" <td>Hessle, Yorks</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Cavendish, Mrs. Tyrell William (Julia Florence...</td>\n",
" <td>female</td>\n",
" <td>76.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>19877</td>\n",
" <td>78.8500</td>\n",
" <td>C46</td>\n",
" <td>S</td>\n",
" <td>6</td>\n",
" <td>NaN</td>\n",
" <td>Little Onn Hall, Staffs</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1235</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Svensson, Mr. Johan</td>\n",
" <td>male</td>\n",
" <td>74.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>347060</td>\n",
" <td>7.7750</td>\n",
" <td>None</td>\n",
" <td>S</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Artagaveytia, Mr. Ramon</td>\n",
" <td>male</td>\n",
" <td>71.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>PC 17609</td>\n",
" <td>49.5042</td>\n",
" <td>None</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>22.0</td>\n",
" <td>Montevideo, Uruguay</td>\n",
" </tr>\n",
" <tr>\n",
" <th>135</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>Goldschmidt, Mr. George B</td>\n",
" <td>male</td>\n",
" <td>71.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>PC 17754</td>\n",
" <td>34.6542</td>\n",
" <td>A5</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>New York, NY</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1302</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Yousif, Mr. Wazli</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2647</td>\n",
" <td>7.2250</td>\n",
" <td>None</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1303</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Yousseff, Mr. Gerious</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2627</td>\n",
" <td>14.4583</td>\n",
" <td>None</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1305</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Zabour, Miss. Thamine</td>\n",
" <td>female</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2665</td>\n",
" <td>14.4542</td>\n",
" <td>None</td>\n",
" <td>C</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1262</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>van Billiard, Master. James William</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>A/5. 851</td>\n",
" <td>14.5000</td>\n",
" <td>None</td>\n",
" <td>S</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1268</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>van Melkebeke, Mr. Philemon</td>\n",
" <td>male</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>345777</td>\n",
" <td>9.5000</td>\n",
" <td>None</td>\n",
" <td>S</td>\n",
" <td>None</td>\n",
" <td>NaN</td>\n",
" <td>None</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1309 rows × 14 columns</p>\n",
"</div>"
],
"text/plain": [
" pclass survived name \\\n",
"14 1 1 Barkworth, Mr. Algernon Henry Wilson \n",
"61 1 1 Cavendish, Mrs. Tyrell William (Julia Florence... \n",
"1235 3 0 Svensson, Mr. Johan \n",
"9 1 0 Artagaveytia, Mr. Ramon \n",
"135 1 0 Goldschmidt, Mr. George B \n",
"... ... ... ... \n",
"1302 3 0 Yousif, Mr. Wazli \n",
"1303 3 0 Yousseff, Mr. Gerious \n",
"1305 3 0 Zabour, Miss. Thamine \n",
"1262 3 0 van Billiard, Master. James William \n",
"1268 3 0 van Melkebeke, Mr. Philemon \n",
"\n",
" sex age sibsp parch ticket fare cabin embarked boat \\\n",
"14 male 80.0 0 0 27042 30.0000 A23 S B \n",
"61 female 76.0 1 0 19877 78.8500 C46 S 6 \n",
"1235 male 74.0 0 0 347060 7.7750 None S None \n",
"9 male 71.0 0 0 PC 17609 49.5042 None C None \n",
"135 male 71.0 0 0 PC 17754 34.6542 A5 C None \n",
"... ... ... ... ... ... ... ... ... ... \n",
"1302 male NaN 0 0 2647 7.2250 None C None \n",
"1303 male NaN 0 0 2627 14.4583 None C None \n",
"1305 female NaN 1 0 2665 14.4542 None C None \n",
"1262 male NaN 1 1 A/5. 851 14.5000 None S None \n",
"1268 male NaN 0 0 345777 9.5000 None S None \n",
"\n",
" body home.dest \n",
"14 NaN Hessle, Yorks \n",
"61 NaN Little Onn Hall, Staffs \n",
"1235 NaN None \n",
"9 22.0 Montevideo, Uruguay \n",
"135 NaN New York, NY \n",
"... ... ... \n",
"1302 NaN None \n",
"1303 NaN None \n",
"1305 NaN None \n",
"1262 NaN None \n",
"1268 NaN None \n",
"\n",
"[1309 rows x 14 columns]"
]
},
"execution_count": 93,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Aufgabe 7\n",
"titanic_sorted_name = titanic.sort_values(['age', 'name'], ascending=[False, True], inplace=False)\n",
"titanic_sorted_name"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\flori\\AppData\\Local\\Temp\\ipykernel_8412\\4067016626.py:3: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
" temp.sort_values('age', ascending=True, inplace=True)\n"
]
},
{
"data": {
"text/plain": [
"pclass 3\n",
"survived 1\n",
"name Dean, Miss. Elizabeth Gladys \"Millvina\"\n",
"sex female\n",
"age 0.1667\n",
"sibsp 1\n",
"parch 2\n",
"ticket C.A. 2315\n",
"fare 20.575\n",
"cabin None\n",
"embarked S\n",
"boat 10\n",
"body NaN\n",
"home.dest Devon, England Wichita, KS\n",
"Name: 763, dtype: object"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Aufgabe 8\n",
"temp = titanic_sorted_name.dropna(subset=['age'])\n",
"temp.sort_values('age', ascending=True, inplace=True)\n",
"temp.iloc[0]"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"82"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Bonus\n",
"lengths = titanic_sorted_name['name'].apply(len)\n",
"longest_name = titanic_sorted_name.loc[lengths.idxmax(), 'name']\n",
"longest_name_length = lengths.max()\n",
"longest_name_length\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "dsai",
"language": "python",
"name": "python3"
},
"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.9.19"
}
},
"nbformat": 4,
"nbformat_minor": 2
}