{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# pandas 100제 실습 노트북\n",
    "\n",
    "위퀴즈 북스 「pandas 100제: 판다스 연습문제와 풀이」의 실습용 노트북입니다.\n",
    "\n",
    "1. 장마다 **준비 코드** 셀을 먼저 실행하세요 (Shift+Enter).\n",
    "2. 문제 아래 빈 셀에 코드를 써서 실행합니다. 같은 장의 문제는 번호 순서대로 이어집니다.\n",
    "3. 막히면 책의 힌트와 정답을 펼쳐 보세요: https://wequiz.org/books/pandas-100-exercises/\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 051–060 결측치와 중복\n",
    "\n",
    "해설·힌트·정답: https://wequiz.org/books/pandas-100-exercises/pandas-100-051-missing/"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**준비 코드** — 이 셀을 먼저 실행하세요."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "df = pd.DataFrame({\n",
    "    'name': ['김민준', '이서연', '박지호', '최수아', '정민서', '최수아'],\n",
    "    'class': ['A', 'B', 'A', 'C', 'B', 'C'],\n",
    "    'score': [85, np.nan, 58, 77, np.nan, 77],\n",
    "    'memo': ['우수', None, None, '성실', '결석', '성실'],\n",
    "})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 051. 열별 결측치 개수\n",
    "\n",
    "열마다 빈 값이 몇 개인지 구하세요."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 여기에 코드를 쓰고 Shift+Enter\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 052. 결측치가 있는 행\n",
    "\n",
    "빈 값이 하나라도 있는 행을 고르세요."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 여기에 코드를 쓰고 Shift+Enter\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 053. 결측치 행 지우기\n",
    "\n",
    "빈 값이 있는 행을 모두 지우세요."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 여기에 코드를 쓰고 Shift+Enter\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 054. 특정 열 기준으로 지우기\n",
    "\n",
    "`score`가 빈 행만 지우세요."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 여기에 코드를 쓰고 Shift+Enter\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 055. 0으로 채우기\n",
    "\n",
    "`score`의 빈 값을 0으로 채운 Series를 구하세요(원본은 그대로 둡니다)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 여기에 코드를 쓰고 Shift+Enter\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 056. 평균으로 채우기\n",
    "\n",
    "`score`의 빈 값을 평균으로 채운 Series를 구하세요."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 여기에 코드를 쓰고 Shift+Enter\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 057. 그룹 평균으로 채우기\n",
    "\n",
    "`score`의 빈 값을 같은 반의 평균으로 채우세요. 같은 반에 값이 없으면 빈 값으로 남습니다."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 여기에 코드를 쓰고 Shift+Enter\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 058. 앞의 값으로 채우기\n",
    "\n",
    "`memo`의 빈 값을 바로 위 행의 값으로 채우세요."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 여기에 코드를 쓰고 Shift+Enter\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 059. 중복 행 찾기\n",
    "\n",
    "앞에서 이미 나온 행과 완전히 같은 중복 행이 몇 개인지 세고, 그 행을 보이세요."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 여기에 코드를 쓰고 Shift+Enter\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 060. 기준 열로 중복 지우기\n",
    "\n",
    "`name`이 같은 행은 마지막 행만 남기세요."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 여기에 코드를 쓰고 Shift+Enter\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "name": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
