Skip to content

Instantly share code, notes, and snippets.

@VintageAppMaker
Created March 19, 2024 10:56
Show Gist options
  • Save VintageAppMaker/f62a4e65927b4270dfd7e48680e5f34d to your computer and use it in GitHub Desktop.
Save VintageAppMaker/f62a4e65927b4270dfd7e48680e5f34d to your computer and use it in GitHub Desktop.
python-pandas.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/VintageAppMaker/f62a4e65927b4270dfd7e48680e5f34d/python-pandas.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"## Python Pandas 설명\n",
"\n",
"**Pandas**는 Python에서 데이터 분석을 위한 강력하고 인기 있는 라이브러리입니다. 데이터를 효율적으로 조작, 정제, 분석 및 시각화하는 데 도움이 되는 다양한 기능을 제공합니다.\n",
"\n",
"**핵심 기능:**\n",
"\n",
"* **데이터 구조:**\n",
" * **Series:** 1차원 배열과 유사하며, 데이터의 각 항목에 고유한 인덱스가 연결됩니다.\n",
" * **DataFrame:** 표 형식의 2차원 데이터 구조이며, 행과 열에 인덱스를 가질 수 있습니다.\n",
"* **데이터 불러오기:** CSV, Excel, SQL, JSON 등 다양한 데이터 소스로부터 데이터를 불러올 수 있습니다.\n",
"* **데이터 정제:** 누락된 값 처리, 이상값 제거, 데이터 형식 변환 등 다양한 데이터 정제 작업을 수행할 수 있습니다.\n",
"* **데이터 분석:** 통계 요약, 그룹화 연산, 필터링, 합계 및 평균 계산 등 다양한 데이터 분석 작업을 수행할 수 있습니다.\n",
"* **데이터 시각화:** Matplotlib과 같은 라이브러리와 함께 사용하여 다양한 그래프와 차트를 만들 수 있습니다.\n",
"\n",
"## 필수 예제\n",
"\n",
"**1. 데이터 불러오기 및 DataFrame 생성**"
],
"metadata": {
"id": "yew1sRxzSozb"
}
},
{
"cell_type": "code",
"source": [
"import pandas as pd\n",
"\n",
"# CSV 파일 불러오기\n",
"df = pd.read_csv(\"data.csv\")\n",
"\n",
"# DataFrame 생성\n",
"df = pd.DataFrame({\"Name\": [\"Alice\", \"Bob\", \"Carol\"], \"Age\": [25, 30, 35]})"
],
"outputs": [],
"execution_count": null,
"metadata": {
"id": "GhHLoRxfSozc"
}
},
{
"cell_type": "markdown",
"source": [
"**2. 데이터 확인**"
],
"metadata": {
"id": "JBmTg9lPSozc"
}
},
{
"cell_type": "code",
"source": [
"# DataFrame 정보 확인\n",
"print(df.info())\n",
"\n",
"# 첫 5개 행 출력\n",
"print(df.head())\n",
"\n",
"# 마지막 5개 행 출력\n",
"print(df.tail())"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 3 entries, 0 to 2\n",
"Data columns (total 2 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 Name 3 non-null object\n",
" 1 Age 3 non-null int64 \n",
"dtypes: int64(1), object(1)\n",
"memory usage: 176.0+ bytes\n",
"None\n",
" Name Age\n",
"0 Alice 25\n",
"1 Bob 30\n",
"2 Carol 35\n",
" Name Age\n",
"0 Alice 25\n",
"1 Bob 30\n",
"2 Carol 35\n"
]
}
],
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "OrJwn-RFSozc",
"outputId": "5182e7a3-88dc-44e8-eec0-769ff092c11f"
}
},
{
"cell_type": "markdown",
"source": [
"**3. 데이터 정제**"
],
"metadata": {
"id": "ESYi35s5Sozd"
}
},
{
"cell_type": "code",
"source": [
"# 누락된 값 처리\n",
"df[\"Age\"].fillna(0, inplace=True)\n",
"\n",
"# 이상값 제거\n",
"df = df[df[\"Age\"] < 100]\n",
"\n",
"# 데이터 형식 변환\n",
"df[\"Age\"] = df[\"Age\"].astype(\"int\")"
],
"outputs": [],
"execution_count": null,
"metadata": {
"id": "Q9uN3FAuSozd"
}
},
{
"cell_type": "markdown",
"source": [
"**4. 데이터 분석**"
],
"metadata": {
"id": "-JsB44GqSozd"
}
},
{
"cell_type": "code",
"source": [
"# 통계 요약\n",
"print(df.describe())\n",
"\n",
"# 그룹화 연산\n",
"df_grouped = df.groupby(\"Name\")\n",
"print(df_grouped[\"Age\"].mean())\n",
"\n",
"# 필터링\n",
"df_filtered = df[df[\"Age\"] > 30]\n",
"\n",
"# 합계 및 평균 계산\n",
"total_age = df[\"Age\"].sum()\n",
"average_age = df[\"Age\"].mean()"
],
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" Age\n",
"count 3.0\n",
"mean 30.0\n",
"std 5.0\n",
"min 25.0\n",
"25% 27.5\n",
"50% 30.0\n",
"75% 32.5\n",
"max 35.0\n",
"Name\n",
"Alice 25.0\n",
"Bob 30.0\n",
"Carol 35.0\n",
"Name: Age, dtype: float64\n"
]
}
],
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "BGH3I41hSozd",
"outputId": "b8ad2e34-1a3b-4dbe-860f-a8d4afbbedb8"
}
},
{
"cell_type": "markdown",
"source": [
"**5. 데이터 시각화**"
],
"metadata": {
"id": "eIYcyTDuSozd"
}
},
{
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"# 히스토그램\n",
"plt.hist(df[\"Age\"])\n",
"plt.show()\n",
"\n",
"# 산점도\n",
"plt.scatter(df[\"Age\"], df[\"Height\"])\n",
"plt.show()"
],
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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66yzug0RAOCjpeq3aRobG7N06dJ897vfzYsvvpjPf/7z2bNnT+ena6ZPn5558+Z17v/5z38+u3btym233ZaXX345TzzxRO69997Mnj37g/spAIAeq+qP9k6bNi2vv/565s+fn9bW1owdOzarV6/uvKl169at6dv3vcapq6vLU089lblz5+aSSy7JiBEjctttt+UrX/nKB/dTAAA9VtUxkiRz5szJnDlzun1u7dq1B22rr6/Pj3/846M5FQDQy/luGgCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFFiBAAoSowAAEWJEQCgKDECABQlRgCAosQIAFCUGAEAihIjAEBRYgQAKEqMAABFiREAoCgxAgAUJUYAgKKOKkYWL16ckSNHZuDAgZk4cWLWrVt3RMetWLEiffr0ybXXXns0pwUAeqGqY2TlypVpbGzMggULsmHDhowZMyZTpkzJjh07Dnvcq6++mj/6oz/KJz7xiaMeFgDofaqOkYULF2bWrFmZOXNmRo8enSVLlmTQoEFZtmzZIY85cOBAfv/3fz933313fumXfukXGhgA6F2qipH9+/dn/fr1aWhoeO8F+vZNQ0NDWlpaDnncn/zJn2TYsGG5+eabj+g8+/btS3t7e5cHANA7VRUjO3fuzIEDB1JbW9tle21tbVpbW7s95plnnsm3v/3tLF269IjP09TUlCFDhnQ+6urqqhkTAOhBjumnad58883cdNNNWbp0aYYOHXrEx82bNy+7d+/ufGzbtu0YTgkAlNS/mp2HDh2afv36pa2trcv2tra2DB8+/KD9/+u//iuvvvpqpk6d2rmto6PjZyfu3z+bN2/OL//yLx90XE1NTWpqaqoZDQDooaq6MjJgwICMHz8+zc3Nnds6OjrS3Nyc+vr6g/YfNWpUXnjhhWzcuLHz8du//dv55Cc/mY0bN3r7BQCo7spIkjQ2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IOPHj09zc3Pnto6OjjQ3N6e+vr7bY+rr67vsnyRr1qw55P4AwEdL1W/TNDY2ZsaMGZkwYUIuu+yyLFq0KHv27MnMmTOTJNOnT8+IESPS1NSUJLntttty5ZVX5oEHHsg111yTFStW5Lnnnsu3vvWtD/YnAQB6pKpjZNq0aXn99dczf/78tLa2ZuzYsVm9enXnTapbt25N377vXXC5/PLLs3z58txxxx356le/mo9//ONZtWpVLrroog/up/gIqampyYIFCw56G4sPnrU+Pqzz8WGdjw/rfHT6VN7v8zYAAMeQ76YBAIoSIwBAUWIEAChKjAAARYmRD6mmpqb86q/+ak455ZQMGzYs1157bTZv3nzQfi0tLfnUpz6Vk046KYMHD85v/MZv5K233iowcc90JOvc2tqam266KcOHD89JJ52USy+9NH/3d39XaOKe6Zvf/GYuueSSzj8EVV9fn3/+53/ufP7tt9/O7Nmzc8YZZ+Tkk0/O7/7u7x70xxJ5f4db5127duWLX/xiLrjggpx44ok599xz84d/+Ied3/3FkXu/3+d3VSqVXH311enTp89hv48NMfKh9fTTT2f27Nn58Y9/nDVr1uSdd97J5MmTs2fPns59Wlpa8ulPfzqTJ0/OunXr8u///u+ZM2dOl49Wc3hHss7Tp0/P5s2b8/jjj+eFF17Iddddl+uvvz7PP/98wcl7lnPOOSf33Xdf1q9fn+eeey6f+tSn8pnPfCb/+Z//mSSZO3du/vEf/zGPPPJInn766Wzfvj3XXXdd4al7nsOt8/bt27N9+/bcf//92bRpUx566KGsXr06N998c+mxe5z3+31+16JFiz7yX2FyxCr0CDt27KgkqTz99NOd2yZOnFi54447Ck7V+3S3zieddFLle9/7Xpf9Tj/99MrSpUuP93i9ymmnnVZ58MEHK2+88UblhBNOqDzyyCOdz7344ouVJJWWlpaCE/YO765zdx5++OHKgAEDKu+8885xnqr3+fl1fv755ysjRoyovPbaa5Uklccee6zccD2A/4XuId69lHr66acnSXbs2JF/+7d/y7Bhw3L55ZentrY2V155ZZ555pmSY/Z4P7/Oyc/+cN/KlSuza9eudHR0ZMWKFXn77bdz1VVXFZqyZztw4EBWrFiRPXv2pL6+PuvXr88777yThoaGzn1GjRqVc889Ny0tLQUn7dl+fp27s3v37gwePDj9+38ovzO1R+hunffu3Zsbb7wxixcvPuz3sPEev4E9QEdHR770pS/liiuu6PzLtVu2bEmS3HXXXbn//vszduzYfO9738ukSZOyadOmfPzjHy85co/U3TonycMPP5xp06bljDPOSP/+/TNo0KA89thjOf/88wtO2/O88MILqa+vz9tvv52TTz45jz32WEaPHp2NGzdmwIABB30ZZm1tbVpbW8sM24Mdap1/3s6dO3PPPffklltuKTBlz3e4dZ47d24uv/zyfOYznyk8Zc8hRnqA2bNnZ9OmTV2uenR0dCRJbr311s7vBRo3blyam5uzbNmyzu8G4sh1t85Jcuedd+aNN97I97///QwdOjSrVq3K9ddfnx/96Ee5+OKLC03b81xwwQXZuHFjdu/enUcffTQzZszI008/XXqsXudQ6/z/B0l7e3uuueaajB49OnfddVe5YXuwQ63zK6+8kh/84AfuKatW6feJOLzZs2dXzjnnnMqWLVu6bN+yZUslSeWv//qvu2y//vrrKzfeeOPxHLFXONQ6v/LKK5UklU2bNnXZPmnSpMqtt956PEfsdSZNmlS55ZZbKs3NzZUklf/5n//p8vy5555bWbhwYZnhepF31/ld7e3tlfr6+sqkSZMqb731VsHJepd31/m2226r9OnTp9KvX7/OR5JK3759K1deeWXpMT+03DPyIVWpVDJnzpw89thj+cEPfpDzzjuvy/MjR47M2WeffdDHUF9++eV87GMfO56j9mjvt8579+5NkoM+odSvX7/Oq1McnY6Ojuzbty/jx4/PCSeckObm5s7nNm/enK1btx7yXgeO3LvrnPzsisjkyZMzYMCAPP744xk4cGDh6XqPd9f59ttvz3/8x39k48aNnY8k+frXv57vfOc7ZYf8EPM2zYfU7Nmzs3z58vzDP/xDTjnllM73zocMGZITTzwxffr0yZe//OUsWLAgY8aMydixY/Pd7343L730Uh599NHC0/cc77fOo0aNyvnnn59bb701999/f84444ysWrUqa9asyT/90z8Vnr7nmDdvXq6++uqce+65efPNN7N8+fKsXbs2Tz31VIYMGZKbb745jY2NOf300zN48OB88YtfTH19fX7t136t9Og9yuHW+d0Q2bt3b/7mb/4m7e3taW9vT5KceeaZ6devX+Hpe47DrfPw4cO7vWn13HPPPeh/dvj/lL40Q/eSdPv4zne+02W/pqamyjnnnFMZNGhQpb6+vvKjH/2ozMA91JGs88svv1y57rrrKsOGDasMGjSocskllxz0UV8O7w/+4A8qH/vYxyoDBgyonHnmmZVJkyZV/uVf/qXz+bfeeqvyhS98oXLaaadVBg0aVPmd3/mdymuvvVZw4p7pcOv8wx/+8JC/7z/5yU/KDt7DvN/v88+Lj/a+rz6VSqVynPsHAKCTe0YAgKLECABQlBgBAIoSIwBAUWIEAChKjAAARYkRAKAoMQIAFCVGAICixAgAUJQYAQCKEiMAQFH/D0fRva3yHJ2fAAAAAElFTkSuQmCC\n"
},
"metadata": {}
},
{
"output_type": "error",
"ename": "KeyError",
"evalue": "'Height'",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 3801\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3802\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3803\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: 'Height'",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-10-885281bcd3f0>\u001b[0m in \u001b[0;36m<cell line: 8>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;31m# 산점도\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscatter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Age\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Height\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3805\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3806\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3807\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3808\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3809\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 3802\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3803\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3804\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3805\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3806\u001b[0m \u001b[0;31m# If we have a listlike key, _check_indexing_error will raise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: 'Height'"
]
}
],
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 891
},
"id": "mFrap8wUSozd",
"outputId": "40a5a6e8-9191-455b-ea03-15d910a890ae"
}
},
{
"cell_type": "markdown",
"source": [
"**참고자료:**\n",
"\n",
"* Pandas 공식 문서: [https://pandas.pydata.org/pandas-docs/stable/](https://pandas.pydata.org/pandas-docs/stable/)\n",
"* Pandas チュートリアル: [유효하지 않은 URL 삭제됨]\n",
"* Python Pandas 실무 데이터 분석: [https://wikidocs.net/book/4639](https://wikidocs.net/book/4639)"
],
"metadata": {
"id": "RS173uaNSozd"
}
},
{
"cell_type": "markdown",
"source": [
"---\n",
"# 🎃 위의 소스는 버그가 있다!!!\n",
"> 실행하면 에러가 발생한다. 그러므로 사용자의 Python 문해력이 필요하다. 결국 다음과 같은 순서로 문제를 해결했다.\n",
"\n",
"1. 위의 예제는 버그가 있다.\n",
"2. csv가 없다.\n",
"3. 그래서 다음과 같은 프롬프트를 사용했다.\n",
"\n",
"~~~\n",
"Pandas의 예제로 사용하기 위해 CSV를 만든다.\n",
"Name은 문자열, Age는 숫자로 한다. 파일을 만들어줘\n",
"~~~\n",
"그랬더니 다음과 같은 코드를 만들었다."
],
"metadata": {
"id": "a7BEWyvxTMoV"
}
},
{
"cell_type": "code",
"source": [
"import pandas as pd\n",
"\n",
"data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [20, 25, 30]}\n",
"\n",
"# Create a DataFrame\n",
"df = pd.DataFrame(data)\n",
"\n",
"# Save the DataFrame to a CSV file\n",
"df.to_csv('example.csv', index=False)"
],
"metadata": {
"id": "jCEznZQUTRDk"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"위의 코드를 실행 후, example.csv가 만들어지면 위의 1번으로 이동하여 소스에서 예제파일을 \"example.csv\"로 변경 후 차례대로 실행한다.\n"
],
"metadata": {
"id": "wg_ZHj00Txpj"
}
}
],
"metadata": {
"colab": {
"provenance": [],
"include_colab_link": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment