{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "pX4JIrl61O0B" }, "source": [ "## 02. 테이블 = DataFrame" ] }, { "cell_type": "markdown", "metadata": { "id": "FmzWcuxs1O0E" }, "source": [ "### 이번 실습에서는 다음 내용들을 배웁니다.\n", "\n", "\n", "- pandas의 기본 구조인 DataFrame을 이해하고, pandas에 대한 다양한 데이터 처리 기능에 대해 배웁니다.\n", "\n", "\n", "- 파이썬에서 엑셀 데이터를 사용하는 방법에 대해 배웁니다." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "ZKf33GYu1O0F" }, "outputs": [], "source": [ "# pandas 라이브러리를 불러옵니다. pd를 약칭으로 사용합니다.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": { "id": "SHBTRrGn1O0G" }, "source": [ "- DataFrame은 2차원 테이블이고, 테이블의 한 줄(행/열)을 Series라고 합니다.\n", "\n", "\n", "- Series의 모임이 곧, DataFrame이 됩니다." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "1G20jiji1O0G" }, "outputs": [ { "data": { "text/plain": [ "0 1\n", "1 3\n", "2 5\n", "3 6\n", "4 8\n", "dtype: int64" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# s는 1, 3, 5, 6, 8을 원소로 가지는 pandas.Series\n", "pd.Series([1,3,5,6,8])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "id": "DDCcZvf_1O0H" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x1x2x3x4
01234
15678
29101112
313141516
417181920
521222324
625262728
729303132
833343536
937383940
1041424344
1145464748
\n", "
" ], "text/plain": [ " x1 x2 x3 x4\n", "0 1 2 3 4\n", "1 5 6 7 8\n", "2 9 10 11 12\n", "3 13 14 15 16\n", "4 17 18 19 20\n", "5 21 22 23 24\n", "6 25 26 27 28\n", "7 29 30 31 32\n", "8 33 34 35 36\n", "9 37 38 39 40\n", "10 41 42 43 44\n", "11 45 46 47 48" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 12x4 행렬에 1부터 48까지의 숫자를 원소를 가지고, index는 0부터 시작하고, coulmns은 순서대로 X1, X2, X3, X4로 하는 DataFrame 생성\n", "df = pd.DataFrame(data= np.arange(1,49).reshape(12,4),\n", " columns = [\"x1\",\"x2\",\"x3\",\"x4\"])\n", "df" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "f-DQfAg81O0I" }, "outputs": [ { "data": { "text/plain": [ "RangeIndex(start=0, stop=12, step=1)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# dataframe index\n", "df.index" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "aDIg6Pgt1O0I" }, "outputs": [ { "data": { "text/plain": [ "Index(['x1', 'x2', 'x3', 'x4'], dtype='object')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# dataframe columns\n", "df.columns" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "idHPKHbk1O0I" }, "outputs": [ { "data": { "text/plain": [ "array([[ 1, 2, 3, 4],\n", " [ 5, 6, 7, 8],\n", " [ 9, 10, 11, 12],\n", " [13, 14, 15, 16],\n", " [17, 18, 19, 20],\n", " [21, 22, 23, 24],\n", " [25, 26, 27, 28],\n", " [29, 30, 31, 32],\n", " [33, 34, 35, 36],\n", " [37, 38, 39, 40],\n", " [41, 42, 43, 44],\n", " [45, 46, 47, 48]])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# dataframe values\n", "df.values" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "id": "zxrzV21l_R8u" }, "outputs": [ { "data": { "text/plain": [ "0 1\n", "1 5\n", "2 9\n", "3 13\n", "4 17\n", "5 21\n", "6 25\n", "7 29\n", "8 33\n", "9 37\n", "10 41\n", "11 45\n", "Name: x1, dtype: int32" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 특정 column을 가져오기\n", "df[\"x1\"]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "id": "D82NIyGl_Vxg" }, "outputs": [ { "data": { "text/plain": [ "0 3\n", "1 7\n", "2 11\n", "3 15\n", "4 19\n", "5 23\n", "6 27\n", "7 31\n", "8 35\n", "9 39\n", "10 43\n", "11 47\n", "Name: x1, dtype: int32" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# X1 column에 2 더하기\n", "df[\"x1\"] +2" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "id": "3tMDFroS1O0I" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x1x2x3x4
01234
15678
29101112
313141516
417181920
\n", "
" ], "text/plain": [ " x1 x2 x3 x4\n", "0 1 2 3 4\n", "1 5 6 7 8\n", "2 9 10 11 12\n", "3 13 14 15 16\n", "4 17 18 19 20" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# dataframe의 맨 위 다섯줄을 보여주는 head()\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "id": "esOQrRqz1O0I" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x1x2x3x4
01234
15678
29101112
313141516
417181920
521222324
625262728
729303132
833343536
937383940
\n", "
" ], "text/plain": [ " x1 x2 x3 x4\n", "0 1 2 3 4\n", "1 5 6 7 8\n", "2 9 10 11 12\n", "3 13 14 15 16\n", "4 17 18 19 20\n", "5 21 22 23 24\n", "6 25 26 27 28\n", "7 29 30 31 32\n", "8 33 34 35 36\n", "9 37 38 39 40" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 10줄\n", "df.head(10)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "id": "UfzLGbmi1O0J" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 12 entries, 0 to 11\n", "Data columns (total 4 columns):\n", " # Column Non-Null Count Dtype\n", "--- ------ -------------- -----\n", " 0 x1 12 non-null int32\n", " 1 x2 12 non-null int32\n", " 2 x3 12 non-null int32\n", " 3 x4 12 non-null int32\n", "dtypes: int32(4)\n", "memory usage: 320.0 bytes\n" ] } ], "source": [ "# dataframe에 대한 전체적인 요약정보를 보여줍니다. index, columns, null/not-null/dtype/memory usage가 표시됩니다.\n", "df.info()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "id": "mJIdXzru1O0J" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x1x2x3x4
count12.00000012.00000012.00000012.000000
mean23.00000024.00000025.00000026.000000
std14.42220514.42220514.42220514.422205
min1.0000002.0000003.0000004.000000
25%12.00000013.00000014.00000015.000000
50%23.00000024.00000025.00000026.000000
75%34.00000035.00000036.00000037.000000
max45.00000046.00000047.00000048.000000
\n", "
" ], "text/plain": [ " x1 x2 x3 x4\n", "count 12.000000 12.000000 12.000000 12.000000\n", "mean 23.000000 24.000000 25.000000 26.000000\n", "std 14.422205 14.422205 14.422205 14.422205\n", "min 1.000000 2.000000 3.000000 4.000000\n", "25% 12.000000 13.000000 14.000000 15.000000\n", "50% 23.000000 24.000000 25.000000 26.000000\n", "75% 34.000000 35.000000 36.000000 37.000000\n", "max 45.000000 46.000000 47.000000 48.000000" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# dataframe에 대한 전체적인 통계정보를 보여줍니다.\n", "df.describe()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "id": "phhfsYic1O0J" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x1x2x3x4
1145464748
1041424344
937383940
833343536
729303132
625262728
521222324
417181920
313141516
29101112
15678
01234
\n", "
" ], "text/plain": [ " x1 x2 x3 x4\n", "11 45 46 47 48\n", "10 41 42 43 44\n", "9 37 38 39 40\n", "8 33 34 35 36\n", "7 29 30 31 32\n", "6 25 26 27 28\n", "5 21 22 23 24\n", "4 17 18 19 20\n", "3 13 14 15 16\n", "2 9 10 11 12\n", "1 5 6 7 8\n", "0 1 2 3 4" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# X2 column를 기준으로 내림차순 정렬\n", "df.sort_values(by=\"x2\", ascending = False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 03. 원하는 데이터를 찾아오자" ] }, { "cell_type": "markdown", "metadata": { "id": "TvB4WvhU1O0J" }, "source": [ "### Fancy Indexing ! (***)\n", "\n", "- 데이터를 filtering <=> Search !\n", "\n", "- 전체 데이터에서 원하는 일부의 데이터를 찾아오는 방법 !" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "id": "9AL-CdKx1O0J" }, "outputs": [ { "data": { "text/plain": [ "0 1\n", "1 5\n", "2 9\n", "3 13\n", "4 17\n", "5 21\n", "6 25\n", "7 29\n", "8 33\n", "9 37\n", "10 41\n", "11 45\n", "Name: x1, dtype: int32" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# pandas dataframe은 column 이름을 이용하여 기본적인 Indexing이 가능합니다.\n", "# X1 column을 indexing\n", "df[\"x1\"]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "id": "mQxYHIcj1O0K" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x1x2x3x4
01234
15678
29101112
\n", "
" ], "text/plain": [ " x1 x2 x3 x4\n", "0 1 2 3 4\n", "1 5 6 7 8\n", "2 9 10 11 12" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# dataframe에서 slicing을 이용하면 row 단위로 잘려나옵니다.\n", "# 앞에서 3줄을 slicing 합니다.\n", "df[:3]" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "id": "eSGPlexr1O0K" }, "outputs": [ { "data": { "text/plain": [ "x1 1\n", "x2 2\n", "x3 3\n", "x4 4\n", "Name: 0, dtype: int32" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# df에서 index value를 기준으로 indexing도 가능합니다. (여전히 row 단위)\n", "# 두번째 row\n", "df.loc[0]" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "id": "Ga2iIs5i1O0K" }, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# df.loc는 특정값을 기준으로 indexing합니다. (key - value)\n", "df.loc[0][2]\n", "df.loc[0][\"x3\"]" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "id": "83TvGhjv1O0K" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x1x2x3
0123
1567
291011
3131415
4171819
\n", "
" ], "text/plain": [ " x1 x2 x3\n", "0 1 2 3\n", "1 5 6 7\n", "2 9 10 11\n", "3 13 14 15\n", "4 17 18 19" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# df.loc에 2차원 indexing도 가능합니다.\n", "# df.loc[\"row에 대한 조건(index)\",\"col에 대한 조건(col name)\"]\n", "df.loc[4,\"x2\"]\n", "df.loc[[0,3],[\"x1\",\"x3\"]]\n", "df.loc[0:4,\"x1\":\"x3\"] # loc로 슬라이싱 하면 모든 범위가 포함. 주의!!" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5 24\n", "6 28\n", "7 32\n", "8 36\n", "9 40\n", "10 44\n", "11 48\n", "Name: x4, dtype: int32" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "## boolean mask == filter\n", "mask = df[\"x1\"] > 10 # row에 대한 조건\n", "df.loc[mask]\n", "\n", "# Q. df에서 X2 column이 20 이상인 모든 데이터(row)를 출력하세요.\n", "mask2 = df[\"x2\"] > 20\n", "df.loc[mask2]\n", "\n", "# Q2. df에서 X2 column이 20 이상인 X4를 출력하세요.(예. 나이가 30 이상인 사람들의 연봉)\n", "df.loc[df[\"x2\"] >= 20, \"x4\"]" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x1x2x3x4
29101112
313141516
417181920
521222324
625262728
\n", "
" ], "text/plain": [ " x1 x2 x3 x4\n", "2 9 10 11 12\n", "3 13 14 15 16\n", "4 17 18 19 20\n", "5 21 22 23 24\n", "6 25 26 27 28" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Q3. X3 column에서 10 이상 30 이하인 데이터를 뽑아주세요.\n", "mask3 = (10 <= df[\"x3\"]) & (df[\"x3\"] <= 30)\n", "df.loc[mask3]\n", "\n", "# Q4. X2 column에서 10보다 작거나 30 이상인 데이터를 뽑아주세요.\n" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "id": "Kfwoiv4d1O0L" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x1x2x3
291011
3131415
4171819
5212223
6252627
\n", "
" ], "text/plain": [ " x1 x2 x3\n", "2 9 10 11\n", "3 13 14 15\n", "4 17 18 19\n", "5 21 22 23\n", "6 25 26 27" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# iloc로 2차원 indexing을 하게되면, row 기준으로 index 3,4를 가져오고 column 기준으로 0, 1을 가져옵니다.\n", "# Q. 3번째 row부터 8번째 row까지, 첫번째 column부터 3개\n", "df.iloc[2:7, 0:3]" ] }, { "cell_type": "markdown", "metadata": { "id": "UMZgXZmV1O0N" }, "source": [ "## 04. 엑셀의 피벗 테이블? 판다스에도 있다!\n", "\n", "- pivot table이란 기존 테이블 구조를 특정 column을 기준으로 재구조화한 테이블을 말합니다.\n", "\n", "- 특정 column을 기준으로 pivot하기 때문에, 어떤 column에 어떤 연산을 하느냐에 따라서 만들어지는 결과가 바뀝니다.\n", "\n", "- 주로 어떤 column을 기준으로 데이터를 해석하고 싶을 때 사용합니다." ] }, { "cell_type": "markdown", "metadata": { "id": "XVC6o-cr1O0M" }, "source": [ "Data Source : https://www.kaggle.com/c/titanic/data" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "id": "Wat_rYUl1O0M" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
.......................................
88688702Montvila, Rev. Juozasmale27.00021153613.0000NaNS
88788811Graham, Miss. Margaret Edithfemale19.00011205330.0000B42S
88888903Johnston, Miss. Catherine Helen \"Carrie\"femaleNaN12W./C. 660723.4500NaNS
88989011Behr, Mr. Karl Howellmale26.00011136930.0000C148C
89089103Dooley, Mr. Patrickmale32.0003703767.7500NaNQ
\n", "

891 rows × 12 columns

\n", "
" ], "text/plain": [ " PassengerId Survived Pclass \\\n", "0 1 0 3 \n", "1 2 1 1 \n", "2 3 1 3 \n", "3 4 1 1 \n", "4 5 0 3 \n", ".. ... ... ... \n", "886 887 0 2 \n", "887 888 1 1 \n", "888 889 0 3 \n", "889 890 1 1 \n", "890 891 0 3 \n", "\n", " Name Sex Age SibSp \\\n", "0 Braund, Mr. Owen Harris male 22.0 1 \n", "1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n", "2 Heikkinen, Miss. Laina female 26.0 0 \n", "3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n", "4 Allen, Mr. William Henry male 35.0 0 \n", ".. ... ... ... ... \n", "886 Montvila, Rev. Juozas male 27.0 0 \n", "887 Graham, Miss. Margaret Edith female 19.0 0 \n", "888 Johnston, Miss. Catherine Helen \"Carrie\" female NaN 1 \n", "889 Behr, Mr. Karl Howell male 26.0 0 \n", "890 Dooley, Mr. Patrick male 32.0 0 \n", "\n", " Parch Ticket Fare Cabin Embarked \n", "0 0 A/5 21171 7.2500 NaN S \n", "1 0 PC 17599 71.2833 C85 C \n", "2 0 STON/O2. 3101282 7.9250 NaN S \n", "3 0 113803 53.1000 C123 S \n", "4 0 373450 8.0500 NaN S \n", ".. ... ... ... ... ... \n", "886 0 211536 13.0000 NaN S \n", "887 0 112053 30.0000 B42 S \n", "888 2 W./C. 6607 23.4500 NaN S \n", "889 0 111369 30.0000 C148 C \n", "890 0 370376 7.7500 NaN Q \n", "\n", "[891 rows x 12 columns]" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 타이타닉 데이터 불러오기\n", "#./폴더명/파일명\n", "titanic = pd.read_csv(\"titanic.csv\")\n", "titanic" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "id": "W_Sh_g4oAw6o" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 891 entries, 0 to 890\n", "Data columns (total 12 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 PassengerId 891 non-null int64 \n", " 1 Survived 891 non-null int64 \n", " 2 Pclass 891 non-null int64 \n", " 3 Name 891 non-null object \n", " 4 Sex 891 non-null object \n", " 5 Age 714 non-null float64\n", " 6 SibSp 891 non-null int64 \n", " 7 Parch 891 non-null int64 \n", " 8 Ticket 891 non-null object \n", " 9 Fare 891 non-null float64\n", " 10 Cabin 204 non-null object \n", " 11 Embarked 889 non-null object \n", "dtypes: float64(2), int64(5), object(5)\n", "memory usage: 83.7+ KB\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvivedPclassAgeSibSpParchFare
count891.000000891.000000891.000000714.000000891.000000891.000000891.000000
mean446.0000000.3838382.30864229.6991180.5230080.38159432.204208
std257.3538420.4865920.83607114.5264971.1027430.80605749.693429
min1.0000000.0000001.0000000.4200000.0000000.0000000.000000
25%223.5000000.0000002.00000020.1250000.0000000.0000007.910400
50%446.0000000.0000003.00000028.0000000.0000000.00000014.454200
75%668.5000001.0000003.00000038.0000001.0000000.00000031.000000
max891.0000001.0000003.00000080.0000008.0000006.000000512.329200
\n", "
" ], "text/plain": [ " PassengerId Survived Pclass Age SibSp \\\n", "count 891.000000 891.000000 891.000000 714.000000 891.000000 \n", "mean 446.000000 0.383838 2.308642 29.699118 0.523008 \n", "std 257.353842 0.486592 0.836071 14.526497 1.102743 \n", "min 1.000000 0.000000 1.000000 0.420000 0.000000 \n", "25% 223.500000 0.000000 2.000000 20.125000 0.000000 \n", "50% 446.000000 0.000000 3.000000 28.000000 0.000000 \n", "75% 668.500000 1.000000 3.000000 38.000000 1.000000 \n", "max 891.000000 1.000000 3.000000 80.000000 8.000000 \n", "\n", " Parch Fare \n", "count 891.000000 891.000000 \n", "mean 0.381594 32.204208 \n", "std 0.806057 49.693429 \n", "min 0.000000 0.000000 \n", "25% 0.000000 7.910400 \n", "50% 0.000000 14.454200 \n", "75% 0.000000 31.000000 \n", "max 6.000000 512.329200 " ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 데이터 크기, 데이터 Column 정보, Null count(결측치 개수), column별 데이터 타입\n", "titanic.info()\n", "\n", "# 통계량\n", "titanic.describe()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "id": "9YBW7IRO1O0N" }, "outputs": [ { "data": { "text/plain": [ "1 Cumings, Mrs. John Bradley (Florence Briggs Th...\n", "3 Futrelle, Mrs. Jacques Heath (Lily May Peel)\n", "4 Allen, Mr. William Henry\n", "6 McCarthy, Mr. Timothy J\n", "11 Bonnell, Miss. Elizabeth\n", " ... \n", "873 Vander Cruyssen, Mr. Victor\n", "879 Potter, Mrs. Thomas Jr (Lily Alexenia Wilson)\n", "881 Markun, Mr. Johann\n", "885 Rice, Mrs. William (Margaret Norton)\n", "890 Dooley, Mr. Patrick\n", "Name: Name, Length: 330, dtype: object" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 나이가 30이상인 사람들의 이름\n", "titanic.loc[titanic[\"Age\"] >= 30, \"Name\"]" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Survived
Sex
female0.742038
male0.188908
\n", "
" ], "text/plain": [ " Survived\n", "Sex \n", "female 0.742038\n", "male 0.188908" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 성별을 기준으로 생존률 파악 --> Mean vs Sum\n", "pd.pivot_table(data = titanic, index=\"Sex\", values=\"Survived\") # 평균으로 합쳐진다." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meansumcount
SurvivedSurvivedSurvived
Sex
female0.742038233314
male0.188908109577
\n", "
" ], "text/plain": [ " mean sum count\n", " Survived Survived Survived\n", "Sex \n", "female 0.742038 233 314\n", "male 0.188908 109 577" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 성별을 기준으로 생존률 파악 --> Mean vs Sum\n", "pd.pivot_table(data = titanic,\n", " index=\"Sex\",\n", " values=\"Survived\",\n", " aggfunc=[\"mean\", \"sum\",\"count\"])" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "id": "fXzMTqeq1O0N" }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countsummean
SurvivedSurvivedSurvived
Pclass
12161360.629630
2184870.472826
34911190.242363
\n", "
" ], "text/plain": [ " count sum mean\n", " Survived Survived Survived\n", "Pclass \n", "1 216 136 0.629630\n", "2 184 87 0.472826\n", "3 491 119 0.242363" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 사회 계급을 기준으로 생존률 파악\n", "pd.pivot_table(data = titanic,\n", " index=\"Pclass\",\n", " values=\"Survived\",\n", " aggfunc=[\"count\",\"sum\",\"mean\"])" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countsummean
SurvivedSurvivedSurvived
PclassSex
1female94910.968085
male122450.368852
2female76700.921053
male108170.157407
3female144720.500000
male347470.135447
\n", "
" ], "text/plain": [ " count sum mean\n", " Survived Survived Survived\n", "Pclass Sex \n", "1 female 94 91 0.968085\n", " male 122 45 0.368852\n", "2 female 76 70 0.921053\n", " male 108 17 0.157407\n", "3 female 144 72 0.500000\n", " male 347 47 0.135447" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 사회 계급을 기준으로 생존률 파악\n", "pd.pivot_table(data = titanic,\n", " index=[\"Pclass\",\"Sex\"],\n", " values=\"Survived\",\n", " aggfunc=[\"count\",\"sum\",\"mean\"])" ] } ], "metadata": { "anaconda-cloud": {}, "colab": { "collapsed_sections": [], "name": "Chapter.02 데이터 분석 라이브러리-06. Pandas method (실습).ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.12" } }, "nbformat": 4, "nbformat_minor": 1 }