{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "e5aab67e-ab68-4112-9b52-2170cf335d79", "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
student_noclassscienceenglishmathsex
01A509850m
12A609760w
23A788645w
34A589830m
45B658090w
56B988950m
67B459080m
78B257890w
89C159820w
910C459350w
\n", "
" ], "text/plain": [ " student_no class science english math sex\n", "0 1 A 50 98 50 m\n", "1 2 A 60 97 60 w\n", "2 3 A 78 86 45 w\n", "3 4 A 58 98 30 m\n", "4 5 B 65 80 90 w\n", "5 6 B 98 89 50 m\n", "6 7 B 45 90 80 m\n", "7 8 B 25 78 90 w\n", "8 9 C 15 98 20 w\n", "9 10 C 45 93 50 w" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "df = pd.read_csv(\"../data_set/2.데이터 클린징/group_sample.csv\")\n", "df" ] }, { "cell_type": "code", "execution_count": 2, "id": "9907fbde-69f2-48e7-b136-60cc6fcfcf85", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# class 컬럼을 기준으로 그루핑\n", "df_class = df.groupby(['class'])\n", "df_class" ] }, { "cell_type": "code", "execution_count": 4, "id": "eefe2e5c-e5a6-4548-a362-38233bc12f4a", "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", "
student_noclassscienceenglishmathsex
01A509850m
12A609760w
23A788645w
34A589830m
\n", "
" ], "text/plain": [ " student_no class science english math sex\n", "0 1 A 50 98 50 m\n", "1 2 A 60 97 60 w\n", "2 3 A 78 86 45 w\n", "3 4 A 58 98 30 m" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 원하는 그룹을 확인하고자 할때\n", "# get_group() 을 사용\n", "df_class.get_group(\"A\")" ] }, { "cell_type": "code", "execution_count": 15, "id": "1f4096b9-72b7-42ee-83dd-b7a867c71b84", "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", "
student_noscienceenglishmath
class
A2.561.5094.7546.25
B6.558.2584.2577.50
C9.530.0095.5035.00
\n", "
" ], "text/plain": [ " student_no science english math\n", "class \n", "A 2.5 61.50 94.75 46.25\n", "B 6.5 58.25 84.25 77.50\n", "C 9.5 30.00 95.50 35.00" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 각 그룹의 평균을 구하는 방법\n", "# numeric_only 속성을 True 로 넣어\n", "# 문자 값을 제외한 숫자만 평균을 구한다\n", "df_class.mean( numeric_only = True )" ] }, { "cell_type": "code", "execution_count": 18, "id": "fc43159e-b8da-4574-8253-09d63253eb30", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 여러 기준으로 그룹화 가능\n", "df.groupby(['class', 'sex'])" ] }, { "cell_type": "code", "execution_count": 20, "id": "2c3d8a3c-0e7f-4f16-9865-7e7cddb28d32", "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", "
student_noscienceenglishmath
classsex
Am2.554.098.040.0
w2.569.091.552.5
Bm6.571.589.565.0
w6.545.079.090.0
Cw9.530.095.535.0
\n", "
" ], "text/plain": [ " student_no science english math\n", "class sex \n", "A m 2.5 54.0 98.0 40.0\n", " w 2.5 69.0 91.5 52.5\n", "B m 6.5 71.5 89.5 65.0\n", " w 6.5 45.0 79.0 90.0\n", "C w 9.5 30.0 95.5 35.0" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 여러 기준으로 그룹화된 그룹의 각 평균을 출력\n", "df.groupby(['class', 'sex']).mean()" ] }, { "cell_type": "code", "execution_count": 21, "id": "30470683-0e91-4f1f-a785-cd55f01c6050", "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", "
math
class
A46.25
B77.50
C35.00
\n", "
" ], "text/plain": [ " math\n", "class \n", "A 46.25\n", "B 77.50\n", "C 35.00" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 수학의 평균만 출력\n", "df_class[['math']].mean()" ] }, { "cell_type": "code", "execution_count": 23, "id": "f89a3893-43d2-425a-802d-13a58406e110", "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", "
student_noscienceenglishmathsex
class
A44444
B44444
C22222
\n", "
" ], "text/plain": [ " student_no science english math sex\n", "class \n", "A 4 4 4 4 4\n", "B 4 4 4 4 4\n", "C 2 2 2 2 2" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# class 별로 묶인 것들의 갯수를 확인\n", "df_class.count()" ] }, { "cell_type": "code", "execution_count": null, "id": "f25288ce-c84a-445b-9b3c-5e974fc918e3", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "id": "5af4813e-6d0b-4adc-9fd9-31277152a90c", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "f74ad207-a40c-43c1-b78f-ea8c856b21b1", "metadata": {}, "source": [ "* agg : 집계 연산기능" ] }, { "cell_type": "code", "execution_count": 38, "id": "603d8ceb-bcaf-4798-9346-33f9e52a01cd", "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", "
mathenglish
class
A6086
B9078
C5093
\n", "
" ], "text/plain": [ " math english\n", "class \n", "A 60 86\n", "B 90 78\n", "C 50 93" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "\n", "# numpy 를 사용해 수학의 최댓값과 영어의 최솟값을 구함\n", "df_class.agg( { 'math':'max', 'english':'min' } )" ] }, { "cell_type": "code", "execution_count": 39, "id": "1f9d4c9f-b512-4678-8919-e6394cc3807a", "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", "
mathenglish
class
A6086
B9078
C5093
\n", "
" ], "text/plain": [ " math english\n", "class \n", "A 60 86\n", "B 90 78\n", "C 50 93" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 최댓값, 최솟값을 다른 형태로 출력\n", "df_class.agg({'math':'max', 'english':'min'})" ] }, { "cell_type": "code", "execution_count": 40, "id": "73019448-5d34-4a71-8b3a-81476da22287", "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", "
mathenglish
class
A18594.75
B31084.25
C7095.50
\n", "
" ], "text/plain": [ " math english\n", "class \n", "A 185 94.75\n", "B 310 84.25\n", "C 70 95.50" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 수학의 합, 영어의 평균을 출력\n", "df_class.agg({'math':'sum', 'english':'mean'})" ] }, { "cell_type": "code", "execution_count": 41, "id": "882719ac-a038-4a87-938e-fc6920306460", "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", "
mathenglish
summaxmean
class
A1856094.75
B3109084.25
C705095.50
\n", "
" ], "text/plain": [ " math english\n", " sum max mean\n", "class \n", "A 185 60 94.75\n", "B 310 90 84.25\n", "C 70 50 95.50" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 수학의 합과 최댓값을 둘 다 구하고 영어의 평균을 구함\n", "df_class.agg({'math': ['sum', 'max'], 'english':'mean'})" ] } ], "metadata": { "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.11.7" } }, "nbformat": 4, "nbformat_minor": 5 }