diff --git a/book_chapter.jpg b/book_chapter.jpg new file mode 100644 index 0000000..2bf78cf Binary files /dev/null and b/book_chapter.jpg differ diff --git a/map_img1.html b/map_img1.html new file mode 100644 index 0000000..f37da85 --- /dev/null +++ b/map_img1.html @@ -0,0 +1,1208 @@ + + + + + + + + + + + + + + + + + + + + + + +
+ + + \ No newline at end of file diff --git "a/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 1. Pandas \352\260\234\354\232\224 \353\260\217 \353\215\260\354\235\264\355\204\260 \355\203\200\354\236\205 \354\206\214\352\260\234 1(Series) (1).ipynb" "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 1. Pandas \352\260\234\354\232\224 \353\260\217 \353\215\260\354\235\264\355\204\260 \355\203\200\354\236\205 \354\206\214\352\260\234 1(Series) (1).ipynb" new file mode 100644 index 0000000..224d53a --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 1. Pandas \352\260\234\354\232\224 \353\260\217 \353\215\260\354\235\264\355\204\260 \355\203\200\354\236\205 \354\206\214\352\260\234 1(Series) (1).ipynb" @@ -0,0 +1,1147 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 파이썬의 과학기술 분야 Ecosystem\n", + "\"datetime\"\n", + "# 1. Pandas 소개\n", + "\"datetime\"\n", + "# [ Pandas API 공식 문서 ]\n", + "## http://pandas.pydata.org/pandas-docs/stable/api.html" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2. Pandas 주요 데이터 타입" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.1. Series (시리즈)\n", + "\"datetime\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 인덱스 라벨로 접근 가능한 점은 사전 타입 특징과 비슷하다" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Pandas 라이브러리 사용 선언, 별칭 부여\n", + "import pandas as pd\n", + "# 자주 사용하는 개체 import, 쓰기 귀찮으므로 처음에 임포트\n", + "from pandas import Series" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.1.1 Series 생성" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 3\n", + "1 5\n", + "2 1\n", + "3 2\n", + "dtype: int64" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#기본 Series 생성\n", + "data1 = Series([3,5,1,2])\n", + "data1" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data1[2]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 big data\n", + "1 30\n", + "2 [1, 2, 3]\n", + "dtype: object" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#값은 모든 데이터 타입 가능\n", + "data2 = Series(['big data',30,[1,2,3]])\n", + "data2\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "강의명 big data\n", + "수강생 수 30\n", + "비고 [1, 2, 3]\n", + "dtype: object" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#인덱스 라벨 추가\n", + "data2.index = ['강의명','수강생 수','비고']\n", + "data2" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "30" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#숫자 인덱스로 값 접근\n", + "data2[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "30" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 인덱스 라벨로 값 접근\n", + "data2['수강생 수']" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 1\n", + "b 3\n", + "c 10\n", + "d 5\n", + "dtype: int64" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#사전 타입처럼 (인덱스:값)의 형태로도 생성 가능\n", + "data3 = Series({'a':1, 'b':3, 'c':10, 'd':5})\n", + "data3" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 10\n", + "b 20\n", + "c 30\n", + "d 40\n", + "e 50\n", + "f 60\n", + "g 70\n", + "h 80\n", + "i 90\n", + "j 100\n", + "dtype: int64" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 값과 Index 인자를 사용하여, Series 생성\n", + "data4 = Series([10,20,30,40,50,60,70,80,90,100],\n", + " index=['a','b','c','d','e','f','g','h','i','j'])\n", + "data4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.2.2. Series 색인" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "60" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 특정 인덱스 접근 (숫자 인덱스)\n", + "data4[5]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "30" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 특정 인덱스 접근 (인덱스 라벨)\n", + "data4['c']" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "a 10\n", + "c 30\n", + "f 60\n", + "dtype: int64" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 여러 인덱스 접근\n", + "#'a','c','f' 라벨만 보고 싶을 때, [[]]\n", + "data4[['a','c','f']]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "c 30\n", + "h 80\n", + "i 90\n", + "j 100\n", + "dtype: int64" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 숫자 인덱스가 2,7,8,9번 항목만 출력\n", + "# 출력은 인덱스 라벨로 출력\n", + "data4[[2,7,8,9]]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "b 20\n", + "c 30\n", + "d 40\n", + "e 50\n", + "f 60\n", + "dtype: int64" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 숫자 인덱스가 1,2,3,4,5번 항목 출력\n", + "data4[[1,2,3,4,5]]\n", + "data4[1:6]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 인덱스 슬라이싱 (숫자 인덱스)\n", + "\"datetime\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1) :을 기점으로 왼쪽에 start index, 오른쪽에 end index 지정\n", + "### 2) start index 보다 크거나 같고, end index보다 작은 항목을 선택\n", + "### 3) 예를 들어, a[2:5]는 a[[2,3,4]]와 동일\n", + "### 4) start index와 end index는 생략 가능하며, 생략 시 start index는 첫 인덱스, end index는 끝 인덱스로 지정됨.\n", + "### 5) 음수 인덱스는 끝에서 시작되는 역인덱스임." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "d 40\n", + "e 50\n", + "f 60\n", + "g 70\n", + "dtype: int64" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# end index도 default가 있으며 끝 값이 default\n", + "# 숫자 인덱스가 3부터 6까지 슬라싱\n", + "data4[3:7]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "f 60\n", + "g 70\n", + "h 80\n", + "i 90\n", + "j 100\n", + "dtype: int64" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# data4의 마지막 5개 출력\n", + "data4[-5:]" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 10\n", + "b 20\n", + "dtype: int64" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#인덱스 라벨 슬라이싱\n", + "# 기본적으로 숫자 인덱스와 동일하나, end index 포함여부가 다름.\n", + "# 숫자 인덱스는 end index가 포함되지 않으나, 인덱스 라벨 슬라이싱은 end index가 포함됨.\n", + "data4[0:2]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 조건을 활용한 인덱스 선택 (조건 색인)\n", + "# 매우 많이 활용되므로, 꼭 알고 있어야 함!\n", + "\"datetime\"" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "e 50\n", + "f 60\n", + "g 70\n", + "h 80\n", + "i 90\n", + "j 100\n", + "dtype: int64" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + " 벡터 : 1차원 배열(data4), 스칼라 : 값 하나(50)\n", + "# data4의 값이 50 이상인 경우만 선택\n", + "data4[data4>=50]" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "f 60\n", + "g 70\n", + "h 80\n", + "i 90\n", + "j 100\n", + "dtype: int64" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# data4의 항목값의 평균보다 큰 항목 선택\n", + "data4[data4>data4.mean()]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.2.3. Series 속성 조회 및 주요 함수" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 속성 (Attributes)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'], dtype='object')" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1) index - 인덱스 출력\n", + "data4.index" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100], dtype=int64)" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2) values - 값 출력\n", + "data4.values" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('int64')" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 3) dtype - 데이터 타입 출력\n", + "data4.dtype" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 4) size - Series의 크기 (갯수)\n", + "data4.size" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 주요 함수" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1) 인덱스 라벨이 있는지 체크\n", + "'c' in data4\n", + "'bb' in data4" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2) 특정 값이 있는지 체크\n", + "55 in data4\n", + "50 in data4.values\n" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10\n", + "20\n", + "30\n", + "40\n", + "50\n", + "60\n", + "70\n", + "80\n", + "90\n", + "100\n" + ] + } + ], + "source": [ + "# data4의 모든 항목 값을 출력\n", + "for i in data4.values:\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a\n", + "b\n", + "c\n", + "d\n", + "e\n", + "f\n", + "g\n", + "h\n", + "i\n", + "j\n" + ] + } + ], + "source": [ + "# data4의 모든 인덱스 라벨을 출력\n", + "for i in data4.index:\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a 10\n", + "b 20\n", + "c 30\n", + "d 40\n", + "e 50\n", + "f 60\n", + "g 70\n", + "h 80\n", + "i 90\n", + "j 100\n" + ] + } + ], + "source": [ + "# data4의 모든 인덱스 라벨과 값의 쌍을 출력\n", + "for index, value in data4.items():\n", + " print(index, value)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "=============================================================\n", + "# 실습 문제 " + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "import random" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A 4\n", + "B 20\n", + "C 28\n", + "D 46\n", + "E 99\n", + "F 45\n", + "G 96\n", + "H 94\n", + "I 5\n", + "J 15\n", + "K 33\n", + "L 62\n", + "M 31\n", + "N 50\n", + "O 97\n", + "P 52\n", + "Q 1\n", + "R 83\n", + "S 39\n", + "T 48\n", + "U 26\n", + "V 16\n", + "W 90\n", + "X 36\n", + "Y 18\n", + "Z 61\n", + "dtype: int64" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습 데이터 생성\n", + "sample = random.sample(range(1,100),26) # 1~100사이의 값을 26개 생성하여 list로 반환\n", + "data = Series(sample, index = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ'))\n", + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "33" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1) 인덱스 라벨이 'K' 항목의 값 출력\n", + "data['K']" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A 4\n", + "F 45\n", + "C 28\n", + "dtype: int64" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2) 인덱스 라벨이 'A','F','C' 항목의 값 출력\n", + "data[['A','F','C']]" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "F 45\n", + "G 96\n", + "H 94\n", + "I 5\n", + "J 15\n", + "K 33\n", + "L 62\n", + "M 31\n", + "N 50\n", + "O 97\n", + "P 52\n", + "dtype: int64" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 3) 5번 인덱스부터 15번 인덱스까지의 항목 출력\n", + "data[5:16]" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "V 16\n", + "W 90\n", + "X 36\n", + "Y 18\n", + "Z 61\n", + "dtype: int64" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 4) 뒤에서 5개 항목 출력\n", + "data[-5:]" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "26" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 5) data의 항목의 갯수를 출력\n", + "data.size" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "D 46\n", + "E 99\n", + "G 96\n", + "H 94\n", + "L 62\n", + "N 50\n", + "O 97\n", + "P 52\n", + "R 83\n", + "T 48\n", + "W 90\n", + "Z 61\n", + "dtype: int64" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 6) data 항목 값들의 평균보다 큰 항목만 출력 \n", + "## Hint. data 항목 값들의 평균은 data.mean()으로 구할 수 있다.\n", + "data[data>data.mean()]" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 7) data의 항목 값 중에 50이 있는지 확인하여, 있으면 True, 없으면 False를 출력\n", + "50 in data.values" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "index: A , value: 4\n", + "index: B , value: 20\n", + "index: C , value: 28\n", + "index: D , value: 46\n", + "index: E , value: 99\n", + "index: F , value: 45\n", + "index: G , value: 96\n", + "index: H , value: 94\n", + "index: I , value: 5\n", + "index: J , value: 15\n", + "index: K , value: 33\n", + "index: L , value: 62\n", + "index: M , value: 31\n", + "index: N , value: 50\n", + "index: O , value: 97\n", + "index: P , value: 52\n", + "index: Q , value: 1\n", + "index: R , value: 83\n", + "index: S , value: 39\n", + "index: T , value: 48\n", + "index: U , value: 26\n", + "index: V , value: 16\n", + "index: W , value: 90\n", + "index: X , value: 36\n", + "index: Y , value: 18\n", + "index: Z , value: 61\n" + ] + } + ], + "source": [ + "# 8) data의 인덱스 라벨과 각 항목 값을 아래와 같이 출력\n", + "# index: A, value: XX\n", + "# index: B, value: XX\n", + "# index: C, value: XX\n", + "for index, value in data.items():\n", + " print(\"index: \",index, \", value: \",value)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "index :A, value: 4\n", + "index :B, value: 20\n", + "index :C, value: 28\n", + "index :D, value: 46\n", + "index :E, value: 99\n", + "index :F, value: 45\n", + "index :G, value: 96\n", + "index :H, value: 94\n", + "index :I, value: 5\n", + "index :J, value: 15\n", + "index :K, value: 33\n", + "index :L, value: 62\n", + "index :M, value: 31\n", + "index :N, value: 50\n", + "index :O, value: 97\n", + "index :P, value: 52\n", + "index :Q, value: 1\n", + "index :R, value: 83\n", + "index :S, value: 39\n", + "index :T, value: 48\n", + "index :U, value: 26\n", + "index :V, value: 16\n", + "index :W, value: 90\n", + "index :X, value: 36\n", + "index :Y, value: 18\n", + "index :Z, value: 61\n" + ] + } + ], + "source": [ + "for index, value in data.items():\n", + " str = 'index :{0}, value: {1}'.format(index, value)\n", + " print(str)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 2. Pandas \352\260\234\354\232\224 \353\260\217 \353\215\260\354\235\264\355\204\260 \355\203\200\354\236\205 \354\206\214\352\260\234 2(DataFrame).ipynb" "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 2. Pandas \352\260\234\354\232\224 \353\260\217 \353\215\260\354\235\264\355\204\260 \355\203\200\354\236\205 \354\206\214\352\260\234 2(DataFrame).ipynb" new file mode 100644 index 0000000..379f1e8 --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 2. Pandas \352\260\234\354\232\224 \353\260\217 \353\215\260\354\235\264\355\204\260 \355\203\200\354\236\205 \354\206\214\352\260\234 2(DataFrame).ipynb" @@ -0,0 +1,2563 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2. Pandas 주요 데이터 타입\n", + "## 2.2 DataFrame (데이터프레임)\n", + "\"datetime\"" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Pandas 라이브러리 임포트\n", + "import pandas as pd \n", + "from pandas import Series, DataFrame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2.1 데이터프레임 생성\n", + "### 생성자 인자\n", + "#### 1) data : dataFrame에 저장할 데이터 (numpy ndarray, dict, DataFrame 등 여러 형태 가능)\n", + "#### 2) index : 행(row) 이름, 기본값 = 0부터 1씩 증가하는 정수\n", + "#### 3) columns : 열(column) 이름, 기본값 = 0부터 1씩 증가하는 정수\n", + "#### 4) dtype : 데이터 형태(type), 만약 지정하지 않으면 파이썬이 자동으로 값의 형태를 보고 결정\n", + "#### 5) copy : 입력 데이터를 복사할지 지정. 디폴트는 False 임. (복사할 거 아니면 메모리 관리 차원에서 디폴트인 False 설정 사용하면 됨)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "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", + "
012
0123
1kimparklee
21.53.29.1
\n", + "
" + ], + "text/plain": [ + " 0 1 2\n", + "0 1 2 3\n", + "1 kim park lee\n", + "2 1.5 3.2 9.1" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1. 2차원 데이터 생성\n", + "df1 = DataFrame([\n", + " [1,2,3],\n", + " ['kim','park','lee'],\n", + " [1.5, 3.2, 9.1]\n", + " ])\n", + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "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", + "
XYZ
A123
Bkimparklee
C1.53.29.1
\n", + "
" + ], + "text/plain": [ + " X Y Z\n", + "A 1 2 3\n", + "B kim park lee\n", + "C 1.5 3.2 9.1" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2. 로우 인덱스와 컬럼 인덱스 설정\n", + "df1.index=['A','B','C']\n", + "df1.columns = ['X','Y','Z']\n", + "df1\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "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", + "
XYZ
A123
Bkimparklee
C1.53.29.1
\n", + "
" + ], + "text/plain": [ + " X Y Z\n", + "A 1 2 3\n", + "B kim park lee\n", + "C 1.5 3.2 9.1" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1,2를 한꺼번에 하기\n", + "df1 = DataFrame([\n", + " [1,2,3],\n", + " ['kim','park','lee'],\n", + " [1.5, 3.2, 9.1]\n", + " ]\n", + " ,index=['A','B','C'],\n", + " columns=['X','Y','Z'])\n", + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "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", + "
서울경기충청경상전라
01053.51023512897451
11023.01067489872421
2987.01123487811399
\n", + "
" + ], + "text/plain": [ + " 서울 경기 충청 경상 전라\n", + "0 1053.5 1023 512 897 451\n", + "1 1023.0 1067 489 872 421\n", + "2 987.0 1123 487 811 399" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 3. 사전 타입 데이터를 이용하여 데이터 프레임 생성하기\n", + "인구통계 = {'서울': [1053.5, 1023, 987],\n", + " '경기':[1023, 1067, 1123],\n", + " '충청':[512,489,487],\n", + " '경상':[897, 872, 811],\n", + " '전라':[451, 421, 399]\n", + " }\n", + "df3 = DataFrame(인구통계)\n", + "df3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2.2. DataFrame 속성 조회하기 (속성을 조회할 때에는 ()를 사용하지 않으니 유의하기 바람.)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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", + "
서울경기충청경상전라
20151053.51023512897451
20161023.01067489872421
2017987.01123487811399
\n", + "
" + ], + "text/plain": [ + " 서울 경기 충청 경상 전라\n", + "2015 1053.5 1023 512 897 451\n", + "2016 1023.0 1067 489 872 421\n", + "2017 987.0 1123 487 811 399" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# df3에 로우 인덱스를 2015, 2016, 2017로 만들기\n", + "df3.index=[2015,2016,2017]\n", + "df3" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "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", + "
201520162017
서울1053.51023.0987.0
경기1023.01067.01123.0
충청512.0489.0487.0
경상897.0872.0811.0
전라451.0421.0399.0
\n", + "
" + ], + "text/plain": [ + " 2015 2016 2017\n", + "서울 1053.5 1023.0 987.0\n", + "경기 1023.0 1067.0 1123.0\n", + "충청 512.0 489.0 487.0\n", + "경상 897.0 872.0 811.0\n", + "전라 451.0 421.0 399.0" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#1. T (Transpose) : 행과 열을 바꾸기.\n", + "df3.T\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[Index(['서울', '경기', '충청', '경상', '전라'], dtype='object'),\n", + " Int64Index([2015, 2016, 2017], dtype='int64')]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#2. axes : 행과 열 이름을 리스트로 반환\n", + "df3.axes" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "서울 float64\n", + "경기 float64\n", + "충청 float64\n", + "경상 float64\n", + "전라 float64\n", + "dtype: object" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#3. dtypes : 데이터 형태 반환\n", + "df3.dtypes" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3, 5)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#4. shape : 행과 열의 개수(차원)을 튜플로 반환\n", + "df3.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "15" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#5. size : DataFrame의 원소의 개수를 반환\n", + "df3.size" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Int64Index([2015, 2016, 2017], dtype='int64')" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#6. index : 데이터프레임의 인덱스를 리스트로 반환\n", + "df3.index" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['서울', '경기', '충청', '경상', '전라'], dtype='object')" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#7. columns : 데이터프레임의 컬럼을 리스트로 반환\n", + "df3.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1053.5, 1023. , 512. , 897. , 451. ],\n", + " [1023. , 1067. , 489. , 872. , 421. ],\n", + " [ 987. , 1123. , 487. , 811. , 399. ]])" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#8. values : 데이터프레임의 값들을 반환\n", + "df3.values" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2.3. 데이터프레임 조회하기" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "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", + "
Col1Col2Col3Col4
A0big2.70True
B3data-5.00True
Cks01is2.12False
D2very8.31False
E5good-1.34True
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3 Col4\n", + "A 0 big 2.70 True\n", + "B 3 data -5.00 True\n", + "C ks01 is 2.12 False\n", + "D 2 very 8.31 False\n", + "E 5 good -1.34 True" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 테스트 데이터프레임 생성\n", + "df4 = DataFrame({'Col1': [0, 3, 'ks01', 2, 5],\n", + " 'Col2': ['big', 'data', 'is', 'very', 'good'],\n", + " 'Col3': [2.7, -5, 2.12, 8.31, -1.34],\n", + " 'Col4': [True, True, False, False, True]},\n", + " index=['A', 'B', 'C', 'D', 'E'])\n", + "df4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## **데이터프레임 조회 규칙 **\n", + "### 로우 인덱스는 숫자 슬라이싱이 되지만, 컬럼은 불가능하다. (컬럼은 순서 개념이 없음)\n", + "### 기본적으로 \"컬럼\"을 먼저 인덱싱한다. \n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A True\n", + "B True\n", + "C False\n", + "D False\n", + "E True\n", + "Name: Col4, dtype: bool" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1) col4만 조회하기, 한 컬럼 조회는 Series로 반환\n", + "df4['Col4']\n", + "df4.Col4" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A big\n", + "B data\n", + "C is\n", + "D very\n", + "E good\n", + "Name: Col2, dtype: object" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df4['Col2']" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "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", + "
Col2Col3
Abig2.70
Bdata-5.00
Cis2.12
Dvery8.31
Egood-1.34
\n", + "
" + ], + "text/plain": [ + " Col2 Col3\n", + "A big 2.70\n", + "B data -5.00\n", + "C is 2.12\n", + "D very 8.31\n", + "E good -1.34" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2) Col2와 Col3 조회하기\n", + "# 여러 개의 컬럼들을 조회하기 위해서는 컬럼명들을 리스트로 선언해야 함, 데이터프레임으로 반환\n", + "df4[['Col2','Col3']]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Col1 5\n", + "Col2 good\n", + "Col3 -1.34\n", + "Col4 True\n", + "Name: E, dtype: object" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 3) 로우를 로우 인덱스로 접근하여 조회하기 (loc)\n", + "# 로우 인덱스가 'E'인 경우만 조회하기, Series로 반환\n", + "df4.loc['E']" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Col1 5\n", + "Col2 good\n", + "Col3 -1.34\n", + "Col4 True\n", + "Name: E, dtype: object" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 4) 로우를 숫자 인덱스로 접근하여 조회하기 (iloc)\n", + "df4.iloc[-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "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", + "
Col1Col2Col3Col4
B3data-5.00True
Cks01is2.12False
D2very8.31False
E5good-1.34True
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3 Col4\n", + "B 3 data -5.00 True\n", + "C ks01 is 2.12 False\n", + "D 2 very 8.31 False\n", + "E 5 good -1.34 True" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 5) 숫자 인덱스로 슬라이싱하기 (start index는 포함되지만, end index는 포함 안됨.)\n", + "# 숫자 인덱스가 1~4까지 데이터만 조회하기\n", + "df4.iloc[1:5]" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "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", + "
Col1Col2Col3Col4
B3data-5.00True
Cks01is2.12False
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3 Col4\n", + "B 3 data -5.00 True\n", + "C ks01 is 2.12 False" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 슬라이싱\n", + "# 기본적으로 인덱싱을 하면, 컬럼을 기준으로 탐색을 하지만, 슬라이싱은 컬럼에 적용할 수 없기 때문에 로우에 적용된다. \n", + "df4[1:3]" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "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", + "
Col1Col2Col3Col4
B3data-5.00True
Cks01is2.12False
D2very8.31False
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3 Col4\n", + "B 3 data -5.00 True\n", + "C ks01 is 2.12 False\n", + "D 2 very 8.31 False" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 6) 로우 인덱스로 슬라이싱하기 (start index와 end index 모두 포함)\n", + "# B,C,D까지 조회\n", + "df4.loc['B':'D']\n", + "df4['B':'D']\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Col1 3\n", + "Col3 -5\n", + "Name: B, dtype: object" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 7. 특정 컬럼과 로우를 동시에 인덱싱하기\n", + "df4[['Col1','Col3']]['B':'C']\n", + "df4[['Col1','Col3']].loc['B']" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "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", + "
Col1Col2Col3Col4
A0big2.70True
Cks01is2.12False
D2very8.31False
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3 Col4\n", + "A 0 big 2.70 True\n", + "C ks01 is 2.12 False\n", + "D 2 very 8.31 False" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 8. 조건 인덱싱 \n", + "# Col3의 값이 0보다 큰 경우만 조회하기\n", + "df4['Col3']>0\n", + "df4.Col3>0\n", + "df4[df4.Col3>0]" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "scrolled": true + }, + "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", + "
Col1Col2Col3
A0big2.70
B3data-5.00
Cks01is2.12
D2very8.31
E5good-1.34
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3\n", + "A 0 big 2.70\n", + "B 3 data -5.00\n", + "C ks01 is 2.12\n", + "D 2 very 8.31\n", + "E 5 good -1.34" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 컬럼 슬라이싱 하고 싶은 경우에는 row부터 슬라이싱\n", + "df4.loc['A':'C', 'Col1':'Col3']\n", + "df4.loc[:, 'Col1':'Col3']\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true + }, + "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", + "
Col2Col3Col4
Bdata-5.00True
Cis2.12False
Dvery8.31False
\n", + "
" + ], + "text/plain": [ + " Col2 Col3 Col4\n", + "B data -5.00 True\n", + "C is 2.12 False\n", + "D very 8.31 False" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df4[['Col2','Col3','Col4']]['B':'D']" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "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", + "
Col1Col2Col3Col4
B3data-5.00True
Cks01is2.12False
D2very8.31False
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3 Col4\n", + "B 3 data -5.00 True\n", + "C ks01 is 2.12 False\n", + "D 2 very 8.31 False" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df4.loc['B':'D']" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "scrolled": false + }, + "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", + "
Col2Col3Col4
Bdata-5.00True
Cis2.12False
Dvery8.31False
\n", + "
" + ], + "text/plain": [ + " Col2 Col3 Col4\n", + "B data -5.00 True\n", + "C is 2.12 False\n", + "D very 8.31 False" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# LOC 함수 내에서 두 인자가 같이 수행\n", + "df4.loc['B':'D','Col2':'Col4']" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Col1Col2Col3Col4
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [Col1, Col2, Col3, Col4]\n", + "Index: []" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# df.4['B':'D']로 된 데이터프레임에 대한 행 슬라이싱 \n", + "df4.loc['B':'D']['Col2':'Col4']" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "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", + "
Col1Col3
B3-5.00
D28.31
\n", + "
" + ], + "text/plain": [ + " Col1 Col3\n", + "B 3 -5.00\n", + "D 2 8.31" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df4.loc[['B','D'],['Col1','Col3']]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A 0\n", + "B 3\n", + "C ks01\n", + "D 2\n", + "E 5\n", + "Name: Col1, dtype: object" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 아래 결과들이 출력되도록 코드를 완성하시오.\n", + "# 실습 1.\n", + "df4['Col1']" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "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", + "
Col1Col3
A02.70
B3-5.00
Cks012.12
D28.31
E5-1.34
\n", + "
" + ], + "text/plain": [ + " Col1 Col3\n", + "A 0 2.70\n", + "B 3 -5.00\n", + "C ks01 2.12\n", + "D 2 8.31\n", + "E 5 -1.34" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습 2.\n", + "df4[['Col1','Col3']]" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "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", + "
Col1Col2Col3Col4
A0big2.70True
Cks01is2.12False
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3 Col4\n", + "A 0 big 2.70 True\n", + "C ks01 is 2.12 False" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습 3.\n", + "df4.iloc[[0,2 ]]\n", + "df4.loc[['A','C']]" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "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", + "
Col1Col2
B3data
Cks01is
D2very
\n", + "
" + ], + "text/plain": [ + " Col1 Col2\n", + "B 3 data\n", + "C ks01 is\n", + "D 2 very" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습 4.\n", + "df4.loc['B':'D','Col1':'Col2']\n", + "df4[['Col1','Col2']]['B':'D']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2.4. 데이터프레임에 새로운 컬럼 추가하기" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Col1Col2Col3Col4Col5
A0big2.70True1
B3data-5.00True2
Cks01is2.12False3
D2very8.31False4
E5good-1.34True5
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3 Col4 Col5\n", + "A 0 big 2.70 True 1\n", + "B 3 data -5.00 True 2\n", + "C ks01 is 2.12 False 3\n", + "D 2 very 8.31 False 4\n", + "E 5 good -1.34 True 5" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 컬럼 추가하기 1.\n", + "# Col5 컬럼 추가하고, 값을 1,2,3,4,5로 저장\n", + "df4['Col5']=[1,2,3,4,5]\n", + "df4" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "scrolled": true + }, + "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", + "
Col1Col2Col3Col4Col5Col6
A0big2.70True13.70
B3data-5.00True2-3.00
Cks01is2.12False35.12
D2very8.31False412.31
E5good-1.34True53.66
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3 Col4 Col5 Col6\n", + "A 0 big 2.70 True 1 3.70\n", + "B 3 data -5.00 True 2 -3.00\n", + "C ks01 is 2.12 False 3 5.12\n", + "D 2 very 8.31 False 4 12.31\n", + "E 5 good -1.34 True 5 3.66" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 컬럼 추가하기 2 - 기존 컬럼을 이용하여 새 컬럼 추가하기\n", + "# Col3과 Col5의 값을 합한 값을 'Col6'라는 새 컬럼으로 추가\n", + "df4['Col6']=df4['Col3']+df4['Col5']\n", + "df4" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "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", + "
Col1Col2Col3Col4Col5Col6Col7
A0big2.70True13.7010
B3data-5.00True2-3.0010
Cks01is2.12False35.1210
D2very8.31False412.3110
E5good-1.34True53.6610
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3 Col4 Col5 Col6 Col7\n", + "A 0 big 2.70 True 1 3.70 10\n", + "B 3 data -5.00 True 2 -3.00 10\n", + "C ks01 is 2.12 False 3 5.12 10\n", + "D 2 very 8.31 False 4 12.31 10\n", + "E 5 good -1.34 True 5 3.66 10" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# broadcast : 스칼라를 벡터에 할당 시 스칼라 값이 반복적용\n", + "# 반복 되는 값은 한 번만 \n", + "df4['Col7']=10\n", + "df4" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2.2.5.데이터프레임 로우, 컬럼 삭제" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# drop() 함수 사용 (원본 변경 X)\n", + "# 변경값을 저장하고 싶을 때는 데이터프레임을 변수에 할당\n", + "## 첫번째 인자 - 지우고자 하는 인덱스명 (로우 인덱스, 컬럼 인덱스 모두 가능)\n", + "## 두번째 인자 (axis)- 0 혹은 1. 0 = 로우 삭제, 1 = 컬럼 삭제\n" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "scrolled": true + }, + "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", + "
Col1Col2Col3Col4Col5Col6Col7
A0big2.70True13.7010
B3data-5.00True2-3.0010
D2very8.31False412.3110
E5good-1.34True53.6610
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3 Col4 Col5 Col6 Col7\n", + "A 0 big 2.70 True 1 3.70 10\n", + "B 3 data -5.00 True 2 -3.00 10\n", + "D 2 very 8.31 False 4 12.31 10\n", + "E 5 good -1.34 True 5 3.66 10" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 로우 인덱스가 'C'인 로우(row) 삭제\n", + "df4.drop('C', axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "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", + "
Col1Col2Col3Col4Col5Col7
A0big2.70True110
B3data-5.00True210
Cks01is2.12False310
D2very8.31False410
E5good-1.34True510
\n", + "
" + ], + "text/plain": [ + " Col1 Col2 Col3 Col4 Col5 Col7\n", + "A 0 big 2.70 True 1 10\n", + "B 3 data -5.00 True 2 10\n", + "C ks01 is 2.12 False 3 10\n", + "D 2 very 8.31 False 4 10\n", + "E 5 good -1.34 True 5 10" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 'Col6' 컬럼 삭제\n", + "df4.drop('Col6', axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# 원본 변경을 위해서는 다시 변수에 할당해야 함. \n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 3. \353\215\260\354\235\264\355\204\260 \354\240\201\354\236\254.ipynb" "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 3. \353\215\260\354\235\264\355\204\260 \354\240\201\354\236\254.ipynb" new file mode 100644 index 0000000..dfed1ae --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 3. \353\215\260\354\235\264\355\204\260 \354\240\201\354\236\254.ipynb" @@ -0,0 +1,5077 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3. 데이터 입출력" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pandas import Series, DataFrame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. csv 파일 읽기 - read_csv()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "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", + "
abcdmessage
01234hello
15678world
29101112foo
\n", + "
" + ], + "text/plain": [ + " a b c d message\n", + "0 1 2 3 4 hello\n", + "1 5 6 7 8 world\n", + "2 9 10 11 12 foo" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# data/ex1.csv 읽기 (컬럼명이 존재하는 csv 파일)\n", + "data = pd.read_csv('data/ex1.csv',sep=',')\n", + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": false + }, + "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", + "
01234
01234hello
15678world
29101112foo
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4\n", + "0 1 2 3 4 hello\n", + "1 5 6 7 8 world\n", + "2 9 10 11 12 foo" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# data/ex2.csv 읽기 (컬럼명이 없는 csv 파일)\n", + "#pd.read_csv('data/ex2.csv', header = None) # csv 파일의 첫번째 줄이 컬럼명이 아님을 명시함.\n", + "data = pd.read_csv('data/ex2.csv', sep=',', header = None)\n", + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "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", + "
ABCDmessage
01234hello
15678world
29101112foo
\n", + "
" + ], + "text/plain": [ + " A B C D message\n", + "0 1 2 3 4 hello\n", + "1 5 6 7 8 world\n", + "2 9 10 11 12 foo" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.read_csv('data/ex2.csv', sep=',', names = ['A','B','C','D', 'message'])\n", + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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", + "
ABC
aaa-0.264438-1.026059-0.619500
bbb0.9272720.302904-0.032399
ccc-0.264273-0.386314-0.217601
ddd-0.871858-0.3483821.100491
\n", + "
" + ], + "text/plain": [ + " A B C\n", + "aaa -0.264438 -1.026059 -0.619500\n", + "bbb 0.927272 0.302904 -0.032399\n", + "ccc -0.264273 -0.386314 -0.217601\n", + "ddd -0.871858 -0.348382 1.100491" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# data/ex3.csv 읽기\n", + "\n", + "pd.read_csv('data/ex3.csv', sep='\\s+') # seq 인자에 정규표현식 사용, 연속 공백을 하나의 공백으로 간주하는 정규표현식 사용" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "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", + "
abcdmessage
01234hello
15678world
29101112foo
\n", + "
" + ], + "text/plain": [ + " a b c d message\n", + "0 1 2 3 4 hello\n", + "1 5 6 7 8 world\n", + "2 9 10 11 12 foo" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# data/ex4.csv 읽기 (주석이 포함되어 있는 파일 읽기)\n", + "# 1. skiprows를 이용하여, 특정 행을 읽지 않도록 함.\n", + "pd.read_csv('data/ex4.csv', skiprows=[0,2,3]) " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "scrolled": true + }, + "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", + "
abcdmessage
01234hello
15678world
29101112foo
\n", + "
" + ], + "text/plain": [ + " a b c d message\n", + "0 1 2 3 4 hello\n", + "1 5 6 7 8 world\n", + "2 9 10 11 12 foo" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#2. comment 인자(시작 문자가 인자)를 이용하여, 주석은 데이터로 읽지 않음.\n", + "pd.read_csv('data/ex4.csv', skiprows=[0,2,3],comment = '#') " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 실습 1. read_csv 실습\n", + "### ex5.csv 파일 - 구분자는 공백 하나(' ')\n", + "\"csv파일예제\"" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "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", + "
abcdmessage
01234hello
15678world
29101112foo
\n", + "
" + ], + "text/plain": [ + " a b c d message\n", + "0 1 2 3 4 hello\n", + "1 5 6 7 8 world\n", + "2 9 10 11 12 foo" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습 1.\n", + "# skiprows는 엑셀 파일에도 적용\n", + "pd.read_csv('data/ex5.csv', sep = ' ', skiprows = [0,2,3])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# 용량이 매우 큰 파일 읽기. (로딩 시간도 문제지만, 메모리 부족 시, OOM(Out Of Memory가 발생함.)\n", + "#pd.read_csv('data/us_presidental.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cmte_idcand_idcand_nmcontbr_nmcontbr_citycontbr_stcontbr_zipcontbr_employercontbr_occupationcontb_receipt_amtcontb_receipt_dtreceipt_descmemo_cdmemo_textform_tpfile_num
0C00410118P20002978Bachmann, MichelleHARVEY, WILLIAMMOBILEAL366010290RETIREDRETIRED25020-Jun-11NaNNaNNaNSA17A736166
1C00410118P20002978Bachmann, MichelleHARVEY, WILLIAMMOBILEAL366010290RETIREDRETIRED5023-Jun-11NaNNaNNaNSA17A736166
2C00410118P20002978Bachmann, MichelleSMITH, LANIERLANETTAL368633403INFORMATION REQUESTEDINFORMATION REQUESTED25005-Jul-11NaNNaNNaNSA17A749073
3C00410118P20002978Bachmann, MichelleBLEVINS, DARONDAPIGGOTTAR724548253NONERETIRED25001-Aug-11NaNNaNNaNSA17A749073
4C00410118P20002978Bachmann, MichelleWARDENBURG, HAROLDHOT SPRINGS NATIONAR719016467NONERETIRED30020-Jun-11NaNNaNNaNSA17A736166
5C00410118P20002978Bachmann, MichelleBECKMAN, JAMESSPRINGDALEAR727647190NONERETIRED50023-Jun-11NaNNaNNaNSA17A736166
6C00410118P20002978Bachmann, MichelleBLEVINS, DARONDAPIGGOTTAR724548253INFORMATION REQUESTEDINFORMATION REQUESTED25021-Jun-11NaNNaNNaNSA17A736166
7C00410118P20002978Bachmann, MichelleBLEVINS, DARONDAPIGGOTTAR724548253NONERETIRED25005-Jul-11NaNNaNNaNSA17A749073
8C00410118P20002978Bachmann, MichelleCOLLINS, SARAHMESAAZ852106725ST. JOSEPH HOSPITALRN25021-Jun-11NaNNaNNaNSA17A736166
9C00410118P20002978Bachmann, MichelleCOLEMAN, RONALDTUCSONAZ857498865RAYTHEONELECTRICAL ENGINEER25020-Jun-11NaNNaNNaNSA17A736166
\n", + "
" + ], + "text/plain": [ + " cmte_id cand_id cand_nm contbr_nm \\\n", + "0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM \n", + "1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM \n", + "2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER \n", + "3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA \n", + "4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD \n", + "5 C00410118 P20002978 Bachmann, Michelle BECKMAN, JAMES \n", + "6 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA \n", + "7 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA \n", + "8 C00410118 P20002978 Bachmann, Michelle COLLINS, SARAH \n", + "9 C00410118 P20002978 Bachmann, Michelle COLEMAN, RONALD \n", + "\n", + " contbr_city contbr_st contbr_zip contbr_employer \\\n", + "0 MOBILE AL 366010290 RETIRED \n", + "1 MOBILE AL 366010290 RETIRED \n", + "2 LANETT AL 368633403 INFORMATION REQUESTED \n", + "3 PIGGOTT AR 724548253 NONE \n", + "4 HOT SPRINGS NATION AR 719016467 NONE \n", + "5 SPRINGDALE AR 727647190 NONE \n", + "6 PIGGOTT AR 724548253 INFORMATION REQUESTED \n", + "7 PIGGOTT AR 724548253 NONE \n", + "8 MESA AZ 852106725 ST. JOSEPH HOSPITAL \n", + "9 TUCSON AZ 857498865 RAYTHEON \n", + "\n", + " contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc \\\n", + "0 RETIRED 250 20-Jun-11 NaN \n", + "1 RETIRED 50 23-Jun-11 NaN \n", + "2 INFORMATION REQUESTED 250 05-Jul-11 NaN \n", + "3 RETIRED 250 01-Aug-11 NaN \n", + "4 RETIRED 300 20-Jun-11 NaN \n", + "5 RETIRED 500 23-Jun-11 NaN \n", + "6 INFORMATION REQUESTED 250 21-Jun-11 NaN \n", + "7 RETIRED 250 05-Jul-11 NaN \n", + "8 RN 250 21-Jun-11 NaN \n", + "9 ELECTRICAL ENGINEER 250 20-Jun-11 NaN \n", + "\n", + " memo_cd memo_text form_tp file_num \n", + "0 NaN NaN SA17A 736166 \n", + "1 NaN NaN SA17A 736166 \n", + "2 NaN NaN SA17A 749073 \n", + "3 NaN NaN SA17A 749073 \n", + "4 NaN NaN SA17A 736166 \n", + "5 NaN NaN SA17A 736166 \n", + "6 NaN NaN SA17A 736166 \n", + "7 NaN NaN SA17A 749073 \n", + "8 NaN NaN SA17A 736166 \n", + "9 NaN NaN SA17A 736166 " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#1) 10줄만 읽어오기\n", + "pd.read_csv('data/us_presidental.csv', nrows = 10)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# 2) 실제 파일을 읽는 게 아니라, Reader 객체만 생성하여, 일정 갯수만큼씩 읽어오기\n", + "# 읽을 준비를 만듦\n", + "리더 = pd.read_csv('data/us_presidental.csv', chunksize = 1000)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "리더" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cmte_idcand_idcand_nmcontbr_nmcontbr_citycontbr_stcontbr_zipcontbr_employercontbr_occupationcontb_receipt_amtcontb_receipt_dtreceipt_descmemo_cdmemo_textform_tpfile_num
0C00410118P20002978Bachmann, MichelleHARVEY, WILLIAMMOBILEAL366010290.0RETIREDRETIRED250.020-Jun-11NaNNaNNaNSA17A736166
1C00410118P20002978Bachmann, MichelleHARVEY, WILLIAMMOBILEAL366010290.0RETIREDRETIRED50.023-Jun-11NaNNaNNaNSA17A736166
2C00410118P20002978Bachmann, MichelleSMITH, LANIERLANETTAL368633403.0INFORMATION REQUESTEDINFORMATION REQUESTED250.005-Jul-11NaNNaNNaNSA17A749073
3C00410118P20002978Bachmann, MichelleBLEVINS, DARONDAPIGGOTTAR724548253.0NONERETIRED250.001-Aug-11NaNNaNNaNSA17A749073
4C00410118P20002978Bachmann, MichelleWARDENBURG, HAROLDHOT SPRINGS NATIONAR719016467.0NONERETIRED300.020-Jun-11NaNNaNNaNSA17A736166
5C00410118P20002978Bachmann, MichelleBECKMAN, JAMESSPRINGDALEAR727647190.0NONERETIRED500.023-Jun-11NaNNaNNaNSA17A736166
6C00410118P20002978Bachmann, MichelleBLEVINS, DARONDAPIGGOTTAR724548253.0INFORMATION REQUESTEDINFORMATION REQUESTED250.021-Jun-11NaNNaNNaNSA17A736166
7C00410118P20002978Bachmann, MichelleBLEVINS, DARONDAPIGGOTTAR724548253.0NONERETIRED250.005-Jul-11NaNNaNNaNSA17A749073
8C00410118P20002978Bachmann, MichelleCOLLINS, SARAHMESAAZ852106725.0ST. JOSEPH HOSPITALRN250.021-Jun-11NaNNaNNaNSA17A736166
9C00410118P20002978Bachmann, MichelleCOLEMAN, RONALDTUCSONAZ857498865.0RAYTHEONELECTRICAL ENGINEER250.020-Jun-11NaNNaNNaNSA17A736166
10C00410118P20002978Bachmann, MichelleATCHLEY, JR, KEITHMESAAZ85215.0NONERETIRED250.022-Jun-11NaNNaNNaNSA17A736166
11C00410118P20002978Bachmann, MichelleFARNSWORTH, ROSSMESAAZ852062062.0FARNSWORTH COMPANIESLAND DEVELOPER500.022-Jun-11NaNNaNNaNSA17A736166
12C00410118P20002978Bachmann, MichellePRESTON, CLIFFORDORO VALLEYAZ857379072.0INFORMATION REQUESTEDINFORMATION REQUESTED250.021-Jun-11NaNNaNNaNSA17A736166
13C00410118P20002978Bachmann, MichellePETERSEN, WGILBERTAZ85295.0INFORMATION REQUESTEDINFORMATION REQUESTED250.027-Jun-11NaNNaNNaNSA17A736166
14C00410118P20002978Bachmann, MichelleMILLER, WILLIAMSCOTTSDALEAZ852513055.0INFORMATION REQUESTEDINFORMATION REQUESTED250.011-Jul-11NaNNaNNaNSA17A749073
15C00410118P20002978Bachmann, MichelleDOLAN, WILLIAMPHOENIXAZ850145248.0VA MEDICAL CENTERPHYSICIAN300.008-Jul-11NaNNaNNaNSA17A749073
16C00410118P20002978Bachmann, MichelleWILSON, RICHARDFLAGSTAFFAZ860010717.0NONERETIRED500.017-Jun-11NaNNaNNaNSA17A736166
17C00410118P20002978Bachmann, MichelleREULING, RICHARDGREEN VALLEYAZ856225413.0NONERETIRED1000.005-Jul-11NaNNaNNaNSA17A749073
18C00410118P20002978Bachmann, MichelleALLUMBAUGH, KATHYSANTA ANACA927051427.0NONERETIRED250.013-Jun-11NaNNaNNaNSA17A736166
19C00410118P20002978Bachmann, MichelleDEL POZO, JOSEDEL MARCA920142938.0RETIRESRETIRED300.016-Jun-11NaNNaNNaNSA17A736166
20C00410118P20002978Bachmann, MichelleKIEFFER, PIERRESACRAMENTOCA958256640.0SELFOFFICE FURNITURE BROKER500.016-Jun-11NaNNaNNaNSA17A736166
21C00410118P20002978Bachmann, MichelleHANNAH, STEPHENSHERMAN OAKSCA914131654.0RETIREDRETIRED250.016-Jun-11NaNNaNNaNSA17A736166
22C00410118P20002978Bachmann, MichelleMINNIS, RITAMILPITASCA950357610.0MILPITS MATERIALSMANAGER2500.017-Jun-11NaNNaNNaNSA17A736166
23C00410118P20002978Bachmann, MichelleMINNIS, RITAMILPITASCA950357610.0MILPITS MATERIALSMANAGER2500.017-Jun-11NaNNaNNaNSA17A736166
24C00410118P20002978Bachmann, MichelleEDWARDS, MARKLA JOLLACA920377643.0NONERETIRED150.005-Aug-11NaNNaNNaNSA17A749073
25C00410118P20002978Bachmann, MichelleHANNAH, STEPHENSHERMAN OAKSCA914131654.0NONERETIRED200.008-Aug-11NaNNaNNaNSA17A749073
26C00410118P20002978Bachmann, MichelleHENRY, JOANYUBA CITYCA959938506.0NONERETIRED100.015-Aug-11NaNNaNNaNSA17A749073
27C00410118P20002978Bachmann, MichelleSKEREN, THOMASCALABASASCA913021547.0INFORMATION REQUESTEDINFORMATION REQUESTED250.016-Aug-11NaNNaNNaNSA17A749073
28C00410118P20002978Bachmann, MichelleEDWARDS, WILLIAMLOS ANGELESCA900243008.0INFORMATION REQUESTEDINFORMATION REQUESTED500.018-Aug-11NaNNaNNaNSA17A749073
29C00410118P20002978Bachmann, MichellePORTER, NANCYCARMEL VALLEYCA939249482.0NANCY PORTERREALTOR250.005-Jul-11NaNNaNNaNSA17A749073
...................................................
970C00431171P80003353Romney, MittCOLEMAN, JEFFREY MR.DOTHANAL363056899.0INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS1000.029-Feb-12NaNNaNNaNSA17A780124
971C00431171P80003353Romney, MittFUTRELL, JOANN M. MRS.DOTHANAL363056962.0HOMEMAKERHOMEMAKER60.017-Jan-12NaNNaNNaNSA17A771933
972C00431171P80003353Romney, MittFUTRELL, JOANN M. MRS.DOTHANAL363056962.0HOMEMAKERHOMEMAKER60.017-Jan-12NaNNaNNaNSA17A771933
973C00431171P80003353Romney, MittCRABTREE, REAVES M. MR.BIRMINGHAMAL352133130.0FNBB CAPITAL MARKETSBROKER500.010-Jan-12NaNNaNNaNSA17A771933
974C00431171P80003353Romney, MittFOSHEEJOHNF, JOHNMONTGOMERYAL361062224.0FOSHEE MANAGEMENTMULTI FAMILY DEVELOPER500.019-Jan-12NaNNaNNaNSA17A771933
975C00431171P80003353Romney, MittCOOPER, COLBYFAIRHOPEAL36532.0THE COOPER-LYON GROUP LLCCONSULTANT2500.030-Jan-12NaNNaNNaNSA17A771933
976C00431171P80003353Romney, MittMURRAY, RICHARD MR. IVBIRMINGHAMAL352133833.0NATIONAL BANK OF COMMERCEBANKER1000.022-Feb-12NaNNaNNaNSA17A780124
977C00431171P80003353Romney, MittMALONE, W. DAVIS MR. IIIDOTHANAL363056319.0INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS1000.029-Feb-12NaNNaNNaNSA17A780124
978C00431171P80003353Romney, MittHIGHTOWER, TIM MR.BIRMINGHAMAL352261904.0INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS1000.029-Feb-12NaNNaNNaNSA17A780124
979C00431171P80003353Romney, MittCOOK, BRENT T. MR.DOTHANAL363033832.0INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS1000.029-Feb-12NaNNaNNaNSA17A780124
980C00431171P80003353Romney, MittBROOKS, JERALD MR.BIRMINGHAMAL352341010.0STAR TRUCK PARTSOWNER300.001-Feb-12NaNNaNNaNSA17A780124
981C00431171P80003353Romney, MittCONNORS, CAITLIN A. MS.ALABASTERAL350073108.0INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS1000.029-Feb-12NaNNaNNaNSA17A780124
982C00431171P80003353Romney, MittALMON, ROBERT N. MR.TUSCALOOSAAL354032687.0ALMON AND ASSOCIATESPRESIDENT250.020-Mar-12NaNNaNNaNSA17A780128
983C00431171P80003353Romney, MittALTZSMITH, MARYBIRMINGHAMAL352096808.0SELF-EMPLOYEDSELF-EMPLOYED250.014-Mar-12NaNNaNNaNSA17A780128
984C00431171P80003353Romney, MittAMARE, BARBARA V. MS.FAIRHOPEAL365324201.0INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS55.007-Mar-12NaNNaNNaNSA17A780128
985C00431171P80003353Romney, MittSTURRIDGE, KIRK DR.DOTHANAL363056953.0EYE CENTER SOUTHPHYSICIAN300.028-Feb-12NaNNaNNaNSA17A780124
986C00431171P80003353Romney, MittSUGGS, WILLARD C. MR.GULF SHORESAL365428232.0INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS250.016-Feb-12NaNNaNNaNSA17A780124
987C00431171P80003353Romney, MittWHITT, MARY A. DR.GADSDENAL359014001.0RETIREDRETIRED25.021-Feb-12NaNNaNNaNSA17A780124
988C00431171P80003353Romney, MittTAYLOR, CRAWFORD L. MR.BIRMINGHAMAL352161326.0MERILL LYNCHSTOCKBROKER1000.022-Feb-12NaNNaNNaNSA17A780124
989C00431171P80003353Romney, MittTANKERSLEY, WILL HILL MG.MONTGOMERYAL361010470.0RETIREDRETIRED500.013-Feb-12NaNNaNNaNSA17A780124
990C00431171P80003353Romney, MittNABERS, DRAYTON MR. JR.BIRMINGHAMAL352231320.0MAYNARD COOPER & GALE P.C.ATTORNEY500.022-Feb-12NaNNaNNaNSA17A780124
991C00431171P80003353Romney, MittKING, WAYNE M. MR.BREWTONAL364264006.0INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS200.028-Feb-12NaNNaNNaNSA17A780124
992C00431171P80003353Romney, MittKIMMERLY, JAMES W. MR. JR.ATHENSAL356112026.0RETIREDRETIRED100.006-Feb-12NaNNaNNaNSA17A780124
993C00431171P80003353Romney, MittEMMERTSON, ROBERTSPANISH FORTAL365275128.0REMCO INDUSTRIAL PIPING MATERIALS INCPRESIDENT/CEO250.001-Feb-12NaNNaNNaNSA17A780124
994C00431171P80003353Romney, MittBROWN, CHESTER MR.OAKMANAL355794512.0WADE SAND & GRAVEL INC.SAFETY DIRECTOR125.006-Feb-12NaNNaNNaNSA17A780124
995C00431171P80003353Romney, MittBROWN, ERINMONTGOMERYAL361111428.0BROWN & ASSOCIATES PLLCATTORNEY500.020-Feb-12NaNNaNNaNSA17A780124
996C00431171P80003353Romney, MittBLACKWELL, RICHARD DR.BIRMINGHAMAL352052931.0INFORMATION REQUESTED PER BEST EFFORTSPHYSICIAN100.020-Mar-12NaNNaNNaNSA17A780128
997C00431171P80003353Romney, MittSWIFT, JOHN MR.ATMOREAL365021007.0RETIREDRETIRED250.029-Feb-12NaNNaNNaNSA17A780124
998C00431171P80003353Romney, MittSWAID, CHRISTY J. MS.BIRMINGHAMAL352660827.0INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS1000.029-Feb-12NaNNaNNaNSA17A780124
999C00431171P80003353Romney, MittTHEUNE, ROBERT J. MR.DOTHANAL363055842.0INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS1000.029-Feb-12NaNNaNNaNSA17A780124
\n", + "

1000 rows × 16 columns

\n", + "
" + ], + "text/plain": [ + " cmte_id cand_id cand_nm contbr_nm \\\n", + "0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM \n", + "1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM \n", + "2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER \n", + "3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA \n", + "4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD \n", + "5 C00410118 P20002978 Bachmann, Michelle BECKMAN, JAMES \n", + "6 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA \n", + "7 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA \n", + "8 C00410118 P20002978 Bachmann, Michelle COLLINS, SARAH \n", + "9 C00410118 P20002978 Bachmann, Michelle COLEMAN, RONALD \n", + "10 C00410118 P20002978 Bachmann, Michelle ATCHLEY, JR, KEITH \n", + "11 C00410118 P20002978 Bachmann, Michelle FARNSWORTH, ROSS \n", + "12 C00410118 P20002978 Bachmann, Michelle PRESTON, CLIFFORD \n", + "13 C00410118 P20002978 Bachmann, Michelle PETERSEN, W \n", + "14 C00410118 P20002978 Bachmann, Michelle MILLER, WILLIAM \n", + "15 C00410118 P20002978 Bachmann, Michelle DOLAN, WILLIAM \n", + "16 C00410118 P20002978 Bachmann, Michelle WILSON, RICHARD \n", + "17 C00410118 P20002978 Bachmann, Michelle REULING, RICHARD \n", + "18 C00410118 P20002978 Bachmann, Michelle ALLUMBAUGH, KATHY \n", + "19 C00410118 P20002978 Bachmann, Michelle DEL POZO, JOSE \n", + "20 C00410118 P20002978 Bachmann, Michelle KIEFFER, PIERRE \n", + "21 C00410118 P20002978 Bachmann, Michelle HANNAH, STEPHEN \n", + "22 C00410118 P20002978 Bachmann, Michelle MINNIS, RITA \n", + "23 C00410118 P20002978 Bachmann, Michelle MINNIS, RITA \n", + "24 C00410118 P20002978 Bachmann, Michelle EDWARDS, MARK \n", + "25 C00410118 P20002978 Bachmann, Michelle HANNAH, STEPHEN \n", + "26 C00410118 P20002978 Bachmann, Michelle HENRY, JOAN \n", + "27 C00410118 P20002978 Bachmann, Michelle SKEREN, THOMAS \n", + "28 C00410118 P20002978 Bachmann, Michelle EDWARDS, WILLIAM \n", + "29 C00410118 P20002978 Bachmann, Michelle PORTER, NANCY \n", + ".. ... ... ... ... \n", + "970 C00431171 P80003353 Romney, Mitt COLEMAN, JEFFREY MR. \n", + "971 C00431171 P80003353 Romney, Mitt FUTRELL, JOANN M. MRS. \n", + "972 C00431171 P80003353 Romney, Mitt FUTRELL, JOANN M. MRS. \n", + "973 C00431171 P80003353 Romney, Mitt CRABTREE, REAVES M. MR. \n", + "974 C00431171 P80003353 Romney, Mitt FOSHEEJOHNF, JOHN \n", + "975 C00431171 P80003353 Romney, Mitt COOPER, COLBY \n", + "976 C00431171 P80003353 Romney, Mitt MURRAY, RICHARD MR. IV \n", + "977 C00431171 P80003353 Romney, Mitt MALONE, W. DAVIS MR. III \n", + "978 C00431171 P80003353 Romney, Mitt HIGHTOWER, TIM MR. \n", + "979 C00431171 P80003353 Romney, Mitt COOK, BRENT T. MR. \n", + "980 C00431171 P80003353 Romney, Mitt BROOKS, JERALD MR. \n", + "981 C00431171 P80003353 Romney, Mitt CONNORS, CAITLIN A. MS. \n", + "982 C00431171 P80003353 Romney, Mitt ALMON, ROBERT N. MR. \n", + "983 C00431171 P80003353 Romney, Mitt ALTZSMITH, MARY \n", + "984 C00431171 P80003353 Romney, Mitt AMARE, BARBARA V. MS. \n", + "985 C00431171 P80003353 Romney, Mitt STURRIDGE, KIRK DR. \n", + "986 C00431171 P80003353 Romney, Mitt SUGGS, WILLARD C. MR. \n", + "987 C00431171 P80003353 Romney, Mitt WHITT, MARY A. DR. \n", + "988 C00431171 P80003353 Romney, Mitt TAYLOR, CRAWFORD L. MR. \n", + "989 C00431171 P80003353 Romney, Mitt TANKERSLEY, WILL HILL MG. \n", + "990 C00431171 P80003353 Romney, Mitt NABERS, DRAYTON MR. JR. \n", + "991 C00431171 P80003353 Romney, Mitt KING, WAYNE M. MR. \n", + "992 C00431171 P80003353 Romney, Mitt KIMMERLY, JAMES W. MR. JR. \n", + "993 C00431171 P80003353 Romney, Mitt EMMERTSON, ROBERT \n", + "994 C00431171 P80003353 Romney, Mitt BROWN, CHESTER MR. \n", + "995 C00431171 P80003353 Romney, Mitt BROWN, ERIN \n", + "996 C00431171 P80003353 Romney, Mitt BLACKWELL, RICHARD DR. \n", + "997 C00431171 P80003353 Romney, Mitt SWIFT, JOHN MR. \n", + "998 C00431171 P80003353 Romney, Mitt SWAID, CHRISTY J. MS. \n", + "999 C00431171 P80003353 Romney, Mitt THEUNE, ROBERT J. MR. \n", + "\n", + " contbr_city contbr_st contbr_zip \\\n", + "0 MOBILE AL 366010290.0 \n", + "1 MOBILE AL 366010290.0 \n", + "2 LANETT AL 368633403.0 \n", + "3 PIGGOTT AR 724548253.0 \n", + "4 HOT SPRINGS NATION AR 719016467.0 \n", + "5 SPRINGDALE AR 727647190.0 \n", + "6 PIGGOTT AR 724548253.0 \n", + "7 PIGGOTT AR 724548253.0 \n", + "8 MESA AZ 852106725.0 \n", + "9 TUCSON AZ 857498865.0 \n", + "10 MESA AZ 85215.0 \n", + "11 MESA AZ 852062062.0 \n", + "12 ORO VALLEY AZ 857379072.0 \n", + "13 GILBERT AZ 85295.0 \n", + "14 SCOTTSDALE AZ 852513055.0 \n", + "15 PHOENIX AZ 850145248.0 \n", + "16 FLAGSTAFF AZ 860010717.0 \n", + "17 GREEN VALLEY AZ 856225413.0 \n", + "18 SANTA ANA CA 927051427.0 \n", + "19 DEL MAR CA 920142938.0 \n", + "20 SACRAMENTO CA 958256640.0 \n", + "21 SHERMAN OAKS CA 914131654.0 \n", + "22 MILPITAS CA 950357610.0 \n", + "23 MILPITAS CA 950357610.0 \n", + "24 LA JOLLA CA 920377643.0 \n", + "25 SHERMAN OAKS CA 914131654.0 \n", + "26 YUBA CITY CA 959938506.0 \n", + "27 CALABASAS CA 913021547.0 \n", + "28 LOS ANGELES CA 900243008.0 \n", + "29 CARMEL VALLEY CA 939249482.0 \n", + ".. ... ... ... \n", + "970 DOTHAN AL 363056899.0 \n", + "971 DOTHAN AL 363056962.0 \n", + "972 DOTHAN AL 363056962.0 \n", + "973 BIRMINGHAM AL 352133130.0 \n", + "974 MONTGOMERY AL 361062224.0 \n", + "975 FAIRHOPE AL 36532.0 \n", + "976 BIRMINGHAM AL 352133833.0 \n", + "977 DOTHAN AL 363056319.0 \n", + "978 BIRMINGHAM AL 352261904.0 \n", + "979 DOTHAN AL 363033832.0 \n", + "980 BIRMINGHAM AL 352341010.0 \n", + "981 ALABASTER AL 350073108.0 \n", + "982 TUSCALOOSA AL 354032687.0 \n", + "983 BIRMINGHAM AL 352096808.0 \n", + "984 FAIRHOPE AL 365324201.0 \n", + "985 DOTHAN AL 363056953.0 \n", + "986 GULF SHORES AL 365428232.0 \n", + "987 GADSDEN AL 359014001.0 \n", + "988 BIRMINGHAM AL 352161326.0 \n", + "989 MONTGOMERY AL 361010470.0 \n", + "990 BIRMINGHAM AL 352231320.0 \n", + "991 BREWTON AL 364264006.0 \n", + "992 ATHENS AL 356112026.0 \n", + "993 SPANISH FORT AL 365275128.0 \n", + "994 OAKMAN AL 355794512.0 \n", + "995 MONTGOMERY AL 361111428.0 \n", + "996 BIRMINGHAM AL 352052931.0 \n", + "997 ATMORE AL 365021007.0 \n", + "998 BIRMINGHAM AL 352660827.0 \n", + "999 DOTHAN AL 363055842.0 \n", + "\n", + " contbr_employer \\\n", + "0 RETIRED \n", + "1 RETIRED \n", + "2 INFORMATION REQUESTED \n", + "3 NONE \n", + "4 NONE \n", + "5 NONE \n", + "6 INFORMATION REQUESTED \n", + "7 NONE \n", + "8 ST. JOSEPH HOSPITAL \n", + "9 RAYTHEON \n", + "10 NONE \n", + "11 FARNSWORTH COMPANIES \n", + "12 INFORMATION REQUESTED \n", + "13 INFORMATION REQUESTED \n", + "14 INFORMATION REQUESTED \n", + "15 VA MEDICAL CENTER \n", + "16 NONE \n", + "17 NONE \n", + "18 NONE \n", + "19 RETIRES \n", + "20 SELF \n", + "21 RETIRED \n", + "22 MILPITS MATERIALS \n", + "23 MILPITS MATERIALS \n", + "24 NONE \n", + "25 NONE \n", + "26 NONE \n", + "27 INFORMATION REQUESTED \n", + "28 INFORMATION REQUESTED \n", + "29 NANCY PORTER \n", + ".. ... \n", + "970 INFORMATION REQUESTED PER BEST EFFORTS \n", + "971 HOMEMAKER \n", + "972 HOMEMAKER \n", + "973 FNBB CAPITAL MARKETS \n", + "974 FOSHEE MANAGEMENT \n", + "975 THE COOPER-LYON GROUP LLC \n", + "976 NATIONAL BANK OF COMMERCE \n", + "977 INFORMATION REQUESTED PER BEST EFFORTS \n", + "978 INFORMATION REQUESTED PER BEST EFFORTS \n", + "979 INFORMATION REQUESTED PER BEST EFFORTS \n", + "980 STAR TRUCK PARTS \n", + "981 INFORMATION REQUESTED PER BEST EFFORTS \n", + "982 ALMON AND ASSOCIATES \n", + "983 SELF-EMPLOYED \n", + "984 INFORMATION REQUESTED PER BEST EFFORTS \n", + "985 EYE CENTER SOUTH \n", + "986 INFORMATION REQUESTED PER BEST EFFORTS \n", + "987 RETIRED \n", + "988 MERILL LYNCH \n", + "989 RETIRED \n", + "990 MAYNARD COOPER & GALE P.C. \n", + "991 INFORMATION REQUESTED PER BEST EFFORTS \n", + "992 RETIRED \n", + "993 REMCO INDUSTRIAL PIPING MATERIALS INC \n", + "994 WADE SAND & GRAVEL INC. \n", + "995 BROWN & ASSOCIATES PLLC \n", + "996 INFORMATION REQUESTED PER BEST EFFORTS \n", + "997 RETIRED \n", + "998 INFORMATION REQUESTED PER BEST EFFORTS \n", + "999 INFORMATION REQUESTED PER BEST EFFORTS \n", + "\n", + " contbr_occupation contb_receipt_amt \\\n", + "0 RETIRED 250.0 \n", + "1 RETIRED 50.0 \n", + "2 INFORMATION REQUESTED 250.0 \n", + "3 RETIRED 250.0 \n", + "4 RETIRED 300.0 \n", + "5 RETIRED 500.0 \n", + "6 INFORMATION REQUESTED 250.0 \n", + "7 RETIRED 250.0 \n", + "8 RN 250.0 \n", + "9 ELECTRICAL ENGINEER 250.0 \n", + "10 RETIRED 250.0 \n", + "11 LAND DEVELOPER 500.0 \n", + "12 INFORMATION REQUESTED 250.0 \n", + "13 INFORMATION REQUESTED 250.0 \n", + "14 INFORMATION REQUESTED 250.0 \n", + "15 PHYSICIAN 300.0 \n", + "16 RETIRED 500.0 \n", + "17 RETIRED 1000.0 \n", + "18 RETIRED 250.0 \n", + "19 RETIRED 300.0 \n", + "20 OFFICE FURNITURE BROKER 500.0 \n", + "21 RETIRED 250.0 \n", + "22 MANAGER 2500.0 \n", + "23 MANAGER 2500.0 \n", + "24 RETIRED 150.0 \n", + "25 RETIRED 200.0 \n", + "26 RETIRED 100.0 \n", + "27 INFORMATION REQUESTED 250.0 \n", + "28 INFORMATION REQUESTED 500.0 \n", + "29 REALTOR 250.0 \n", + ".. ... ... \n", + "970 INFORMATION REQUESTED PER BEST EFFORTS 1000.0 \n", + "971 HOMEMAKER 60.0 \n", + "972 HOMEMAKER 60.0 \n", + "973 BROKER 500.0 \n", + "974 MULTI FAMILY DEVELOPER 500.0 \n", + "975 CONSULTANT 2500.0 \n", + "976 BANKER 1000.0 \n", + "977 INFORMATION REQUESTED PER BEST EFFORTS 1000.0 \n", + "978 INFORMATION REQUESTED PER BEST EFFORTS 1000.0 \n", + "979 INFORMATION REQUESTED PER BEST EFFORTS 1000.0 \n", + "980 OWNER 300.0 \n", + "981 INFORMATION REQUESTED PER BEST EFFORTS 1000.0 \n", + "982 PRESIDENT 250.0 \n", + "983 SELF-EMPLOYED 250.0 \n", + "984 INFORMATION REQUESTED PER BEST EFFORTS 55.0 \n", + "985 PHYSICIAN 300.0 \n", + "986 INFORMATION REQUESTED PER BEST EFFORTS 250.0 \n", + "987 RETIRED 25.0 \n", + "988 STOCKBROKER 1000.0 \n", + "989 RETIRED 500.0 \n", + "990 ATTORNEY 500.0 \n", + "991 INFORMATION REQUESTED PER BEST EFFORTS 200.0 \n", + "992 RETIRED 100.0 \n", + "993 PRESIDENT/CEO 250.0 \n", + "994 SAFETY DIRECTOR 125.0 \n", + "995 ATTORNEY 500.0 \n", + "996 PHYSICIAN 100.0 \n", + "997 RETIRED 250.0 \n", + "998 INFORMATION REQUESTED PER BEST EFFORTS 1000.0 \n", + "999 INFORMATION REQUESTED PER BEST EFFORTS 1000.0 \n", + "\n", + " contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num \n", + "0 20-Jun-11 NaN NaN NaN SA17A 736166 \n", + "1 23-Jun-11 NaN NaN NaN SA17A 736166 \n", + "2 05-Jul-11 NaN NaN NaN SA17A 749073 \n", + "3 01-Aug-11 NaN NaN NaN SA17A 749073 \n", + "4 20-Jun-11 NaN NaN NaN SA17A 736166 \n", + "5 23-Jun-11 NaN NaN NaN SA17A 736166 \n", + "6 21-Jun-11 NaN NaN NaN SA17A 736166 \n", + "7 05-Jul-11 NaN NaN NaN SA17A 749073 \n", + "8 21-Jun-11 NaN NaN NaN SA17A 736166 \n", + "9 20-Jun-11 NaN NaN NaN SA17A 736166 \n", + "10 22-Jun-11 NaN NaN NaN SA17A 736166 \n", + "11 22-Jun-11 NaN NaN NaN SA17A 736166 \n", + "12 21-Jun-11 NaN NaN NaN SA17A 736166 \n", + "13 27-Jun-11 NaN NaN NaN SA17A 736166 \n", + "14 11-Jul-11 NaN NaN NaN SA17A 749073 \n", + "15 08-Jul-11 NaN NaN NaN SA17A 749073 \n", + "16 17-Jun-11 NaN NaN NaN SA17A 736166 \n", + "17 05-Jul-11 NaN NaN NaN SA17A 749073 \n", + "18 13-Jun-11 NaN NaN NaN SA17A 736166 \n", + "19 16-Jun-11 NaN NaN NaN SA17A 736166 \n", + "20 16-Jun-11 NaN NaN NaN SA17A 736166 \n", + "21 16-Jun-11 NaN NaN NaN SA17A 736166 \n", + "22 17-Jun-11 NaN NaN NaN SA17A 736166 \n", + "23 17-Jun-11 NaN NaN NaN SA17A 736166 \n", + "24 05-Aug-11 NaN NaN NaN SA17A 749073 \n", + "25 08-Aug-11 NaN NaN NaN SA17A 749073 \n", + "26 15-Aug-11 NaN NaN NaN SA17A 749073 \n", + "27 16-Aug-11 NaN NaN NaN SA17A 749073 \n", + "28 18-Aug-11 NaN NaN NaN SA17A 749073 \n", + "29 05-Jul-11 NaN NaN NaN SA17A 749073 \n", + ".. ... ... ... ... ... ... \n", + "970 29-Feb-12 NaN NaN NaN SA17A 780124 \n", + "971 17-Jan-12 NaN NaN NaN SA17A 771933 \n", + "972 17-Jan-12 NaN NaN NaN SA17A 771933 \n", + "973 10-Jan-12 NaN NaN NaN SA17A 771933 \n", + "974 19-Jan-12 NaN NaN NaN SA17A 771933 \n", + "975 30-Jan-12 NaN NaN NaN SA17A 771933 \n", + "976 22-Feb-12 NaN NaN NaN SA17A 780124 \n", + "977 29-Feb-12 NaN NaN NaN SA17A 780124 \n", + "978 29-Feb-12 NaN NaN NaN SA17A 780124 \n", + "979 29-Feb-12 NaN NaN NaN SA17A 780124 \n", + "980 01-Feb-12 NaN NaN NaN SA17A 780124 \n", + "981 29-Feb-12 NaN NaN NaN SA17A 780124 \n", + "982 20-Mar-12 NaN NaN NaN SA17A 780128 \n", + "983 14-Mar-12 NaN NaN NaN SA17A 780128 \n", + "984 07-Mar-12 NaN NaN NaN SA17A 780128 \n", + "985 28-Feb-12 NaN NaN NaN SA17A 780124 \n", + "986 16-Feb-12 NaN NaN NaN SA17A 780124 \n", + "987 21-Feb-12 NaN NaN NaN SA17A 780124 \n", + "988 22-Feb-12 NaN NaN NaN SA17A 780124 \n", + "989 13-Feb-12 NaN NaN NaN SA17A 780124 \n", + "990 22-Feb-12 NaN NaN NaN SA17A 780124 \n", + "991 28-Feb-12 NaN NaN NaN SA17A 780124 \n", + "992 06-Feb-12 NaN NaN NaN SA17A 780124 \n", + "993 01-Feb-12 NaN NaN NaN SA17A 780124 \n", + "994 06-Feb-12 NaN NaN NaN SA17A 780124 \n", + "995 20-Feb-12 NaN NaN NaN SA17A 780124 \n", + "996 20-Mar-12 NaN NaN NaN SA17A 780128 \n", + "997 29-Feb-12 NaN NaN NaN SA17A 780124 \n", + "998 29-Feb-12 NaN NaN NaN SA17A 780124 \n", + "999 29-Feb-12 NaN NaN NaN SA17A 780124 \n", + "\n", + "[1000 rows x 16 columns]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#chunksize만큼 데이터를 읽어옴.\n", + "next(리더)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cmte_idcand_idcand_nmcontbr_nmcontbr_citycontbr_stcontbr_zipcontbr_employercontbr_occupationcontb_receipt_amtcontb_receipt_dtreceipt_descmemo_cdmemo_textform_tpfile_num
1000C00431171P80003353Romney, MittNEUWIEN, SUSAN W. MS.ENTERPRISEAL363302385RETIREDRETIRED1000.013-Feb-12NaNNaNNaNSA17A780124
1001C00431171P80003353Romney, MittNEUWIEN, SUSAN W. MS.ENTERPRISEAL363302385RETIREDRETIRED100.018-Feb-12NaNNaNNaNSA17A780124
1002C00431171P80003353Romney, MittNELSON, ARTHUR R. MR.DECATURAL356034622TFAPRESIDENT200.029-Feb-12NaNNaNNaNSA17A780124
1003C00431171P80003353Romney, MittHOLLIS, HAYNE MR.DOTHANAL363033008INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS1000.029-Feb-12NaNNaNNaNSA17A780124
1004C00431171P80003353Romney, MittGORRIE, ALISON MRS.BIRMINGHAMAL352231228INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS1000.022-Feb-12NaNNaNNaNSA17A780124
1005C00431171P80003353Romney, MittGORRIE, JIM MR.BIRMINGHAMAL352231228B. & G.CONTRACTOR1000.022-Feb-12NaNNaNNaNSA17A780124
1006C00431171P80003353Romney, MittEVANS, NANCY D. MRS.DOTHANAL363059355WALLACE COLLEGECLINICAL NURSING INSTRUCTOR100.008-Feb-12NaNNaNNaNSA17A780124
1007C00431171P80003353Romney, MittCOX, ANNETTE MS.DELL CITYAL351286719INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS500.028-Feb-12NaNNaNNaNSA17A780124
1008C00431171P80003353Romney, MittCOX, ANNETTE P. MS.SPRINGVILLEAL35146INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS500.028-Feb-12NaNNaNNaNSA17A780124
1009C00431171P80003353Romney, MittBALLARD, HALYCONBIRMINGHAMAL352103049SELF-EMPLOYEDH R EXECUTIVE50.011-Feb-12NaNNaNNaNSA17A780124
1010C00431171P80003353Romney, MittBALLARD, HALYCONBIRMINGHAMAL352103049SELF-EMPLOYEDH R EXECUTIVE50.022-Feb-12NaNNaNNaNSA17A780124
1011C00431171P80003353Romney, MittBOHANNON, PATRICIA COPLEY MS.ATTALLAAL359547827INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS50.013-Mar-12NaNNaNNaNSA17A780128
1012C00431171P80003353Romney, MittWHITT, MARY A. DR.GADSDENAL359014001RETIREDRETIRED25.003-Feb-12NaNNaNNaNSA17A780124
1013C00431171P80003353Romney, MittFEARERINGILL, WILLIAM W. MR.BIRMINGHAMAL352097801PRIVATE CAPITALPRESIDENT2000.022-Feb-12NaNNaNNaNSA17A780124
1014C00431171P80003353Romney, MittWILSON, JAMES W. MR. IIIMONTGOMERYAL361177024INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS1000.021-Feb-12NaNNaNNaNSA17A780124
1015C00431171P80003353Romney, MittSHERLING, GEORGE L. MR.BIRMINGHAMAL352435239RETIREDRETIRED18.029-Feb-12NaNNaNNaNSA17A780124
1016C00431171P80003353Romney, MittSHERLING, GEORGE L. MR.BIRMINGHAMAL352435239RETIREDRETIRED1000.029-Feb-12NaNNaNNaNSA17A780124
1017C00431171P80003353Romney, MittTHOMAS, SUSAN E. MS.BIRMINGHAMAL352131813RETIREDRETIRED50.006-Feb-12NaNNaNNaNSA17A780124
1018C00431171P80003353Romney, MittTHOMAS, SUSAN E. MS.BIRMINGHAMAL352131813RETIREDRETIRED25.021-Feb-12NaNNaNNaNSA17A780124
1019C00431171P80003353Romney, MittRAMSAY-NAILE, ASHLEYMOBILEAL366194419CROWDERGULFGENERAL MANAGER / VICE PRESIDENT500.027-Feb-12NaNNaNNaNSA17A780124
1020C00431171P80003353Romney, MittNIELSEN, CLAUDE B. MR.BIRMINGHAMAL352133956COCA-COLA BOTTLING CO. UNITED INC.CHAIRMAN/C.E.O.2500.014-Feb-12NaNNaNNaNSA17A780124
1021C00431171P80003353Romney, MittMATHIS, ALANBIRMINGHAMAL352262418JOHNSTON BARTON PROCTOR & ROSE LLPATTORNEY250.028-Feb-12NaNNaNNaNSA17A780124
1022C00431171P80003353Romney, MittMATTHEWS, JOHN E. MR.MONTGOMERYAL361112013RETIREDRETIRED100.027-Feb-12NaNNaNNaNSA17A780124
1023C00431171P80003353Romney, MittMATTHEWS, WILLIAM MR.BIRMINGHAMAL352133024NATIONAL BANK OF COMMERCEBANKING/C.F.O.1000.022-Feb-12NaNNaNNaNSA17A780124
1024C00431171P80003353Romney, MittKNOWLES, KENNETH J. MR.HUNTSVILLEAL358033361RETIREDRETIRED50.013-Feb-12NaNNaNNaNSA17A780124
1025C00431171P80003353Romney, MittFERRELL, PATRICKMONTGOMERYAL361240185THE PATRICK COMPANYOWNER - CONSULTANT1000.022-Feb-12NaNNaNNaNSA17A780124
1026C00431171P80003353Romney, MittDANDURAND, RICHARD L. MR.VESTAVIAAL352432822RETIREDRETIRED250.010-Feb-12NaNNaNNaNSA17A780124
1027C00431171P80003353Romney, MittCABANISS, CATHERINE C. MS.BIRMINGHAMAL352133916SELF-EMPLOYEDARTIST500.029-Feb-12NaNNaNNaNSA17A780124
1028C00431171P80003353Romney, MittOUTLAND, JAMESBIRMINGHAMAL352231232NEW CAPITAL PARTNERSINVESTMENTS250.009-Jan-12NaNNaNNaNSA17A771933
1029C00431171P80003353Romney, MittTHOMPSON, PATRICIA ANN MS.OWENS CROSS ROADSAL357638677RETIREDRETIRED25.031-Jan-12NaNNaNNaNSA17A771933
...................................................
1970C00431171P80003353Romney, MittCROCKETT, C. WEBB MR.MESAAZ852134001FENNEMOREATTORNEY1000.024-May-11NaNNaNNaNSA17A760248
1971C00431171P80003353Romney, MittCROCKETT, JEFF W. MR.MESAAZ852133242BROWNSTEIN HYATT FARBER SCHRECKATTORNEY1000.030-Jun-11NaNNaNNaNSA17A760248
1972C00431171P80003353Romney, MittBEUS, ANNETTE MRS.PHOENIXAZ850484526HOMEMAKERHOMEMAKER2500.024-May-11NaNNaNNaNSA17A760248
1973C00431171P80003353Romney, MittCASE, ARTHUR D. MR.PHOENIXAZ850166040LOW MOUNTAIN CONSTRUCTION INC.CONSTRUCTION MANAGER2500.026-Apr-11NaNNaNNaNSA17A760248
1974C00431171P80003353Romney, MittCASE, NANCY I. MRS.PHOENIXAZ850166027HOMEMAKERHOMEMAKER2500.026-Apr-11NaNNaNNaNSA17A760248
1975C00431171P80003353Romney, MittCOURT, STEPHEN G. MR.MESAAZ852033603STATE OF ARIZONALEGISLATOR250.016-May-11NaNNaNNaNSA17A760248
1976C00431171P80003353Romney, MittCOWLEY, SAM MR.PHOENIXAZ850481828SELF-EMPLOYEDATTORNEY2500.030-Jun-11NaNNaNNaNSA17A760248
1977C00431171P80003353Romney, MittCOWMAN, STEVE MR.SCOTTSDALEAZ852504615ENERGY DEVELOPMENTS INC.C.E.O. & PRESIDENT2500.029-Jun-11NaNNaNNaNSA17A760248
1978C00431171P80003353Romney, MittCARDON, CRAIG D. MR.QUEEN CREEKAZ851423667THE VINEYARD GROUPEXECUTIVE2500.020-Jun-11NaNNaNNaNSA17A760248
1979C00431171P80003353Romney, MittCARDON, KASTLE K. MS.GILBERTAZ852969451HOMEMAKERHOMEMAKER2500.024-May-11NaNNaNNaNSA17A760248
1980C00431171P80003353Romney, MittGARNER, RICHARD MR.MESAAZ852133248PIVOTAL GROUP INCC.P.A.2500.004-May-11NaNNaNNaNSA17A760248
1981C00431171P80003353Romney, MittHANSEN, VAN MR.MESAAZ852135521ODYSSEY CAPITAL GROUPCONSULTANT500.025-Apr-11NaNNaNNaNSA17A760248
1982C00431171P80003353Romney, MittGARDNER, ELBERTMESAAZ852053802RETIREDRETIRED2500.028-Jun-11NaNNaNNaNSA17A760248
1983C00431171P80003353Romney, MittGARDNER, KATHLEENMESAAZ852053802INFORMATION REQUESTED PER BEST EFFORTSINFORMATION REQUESTED PER BEST EFFORTS2500.030-Jun-11NaNNaNNaNSA17A760248
1984C00431171P80003353Romney, MittJOHNSON, BECKY H. MS.MESAAZ852132931HOMEMAKERHOMEMAKER2500.030-Jun-11NaNNaNNaNSA17A760248
1985C00431171P80003353Romney, MittHANLEY, LEE T. MR.PHOENIXAZ850164261VESTARREAL ESTATE MANAGER2500.013-Apr-11NaNNaNNaNSA17A760248
1986C00431171P80003353Romney, MittHANLEY, LEE T. MR.PHOENIXAZ850164261VESTARREAL ESTATE MANAGER2500.016-May-11SEE REATTRIBUTIONNaNSEE REATTRIBUTIONSA17A760248
1987C00431171P80003353Romney, MittHANLEY, LEE T. MR.PHOENIXAZ850164261VESTARREAL ESTATE MANAGER-2500.025-May-11REATTRIBUTION TO SPOUSEXREATTRIBUTION TO SPOUSESA17A760248
1988C00431171P80003353Romney, MittHANLEY, NANCY R. MRS.PHOENIXAZ85253HOMEMAKERHOMEMAKER2500.025-May-11REATTRIBUTION FROM SPOUSEXREATTRIBUTION FROM SPOUSESA17A760248
1989C00431171P80003353Romney, MittHANLEY, NANCY R. MRS.PHOENIXAZ85253HOMEMAKERHOMEMAKER2500.015-Jun-11NaNNaNCHARGED BACK $2500.00 ON 06/22/2011SA17A760248
1990C00431171P80003353Romney, MittHANLEY, NANCY R. MRS.PHOENIXAZ85253HOMEMAKERHOMEMAKER-2500.022-Jun-11NaNNaNCHARGED BACKSA17A760248
1991C00431171P80003353Romney, MittJENSON, JEFFPEORIAAZ853835107VESCOR HOLDINGSFINANCE500.016-May-11NaNNaNNaNSA17A760248
1992C00431171P80003353Romney, MittHALES, DONALD D. DR.FLAGSTAFFAZ860012000NORTHERN ARIZONA ORTHOPAEDICSORTHOPEDIC SURGEON1000.012-Apr-11NaNNaNNaNSA17A760248
1993C00431171P80003353Romney, MittHALES, DONALD D. DR.FLAGSTAFFAZ860012000NORTHERN ARIZONA ORTHOPAEDICSORTHOPEDIC SURGEON1500.030-Jun-11NaNNaNNaNSA17A760248
1994C00431171P80003353Romney, MittHALL, DIANNA M. MS.GLENDALEAZ853086132SELF-EMPLOYEDSELF-EMPLOYED2500.016-May-11NaNNaNNaNSA17A760248
1995C00431171P80003353Romney, MittHALL, KENNETH T. MR.GLENDALEAZ853086132SELF-EMPLOYEDSELF-EMPLOYED2500.016-May-11NaNNaNNaNSA17A760248
1996C00431171P80003353Romney, MittDEMENNA, KEVIN B. MR.PHOENIXAZ850072603DEMENNA & ASSOCIATESLOBBYIST2500.016-May-11NaNNaNNaNSA17A760248
1997C00431171P80003353Romney, MittDEMENNA, MELISSA MRS.PHOENIXAZ850072603HOMEMAKERHOMEMAKER2500.016-May-11NaNNaNNaNSA17A760248
1998C00431171P80003353Romney, MittJACKSON, WILLIAM G. MR.PARADISE VALLEYAZ852531824CABLE AMERICA COORPORATIONPRESIDENT250.010-Jun-11NaNNaNNaNSA17A760248
1999C00431171P80003353Romney, MittFOYLE, DOLORES D. MRS.PHOENIXAZ850329213RETIREDRETIRED250.006-Jun-11NaNNaNNaNSA17A760248
\n", + "

1000 rows × 16 columns

\n", + "
" + ], + "text/plain": [ + " cmte_id cand_id cand_nm contbr_nm \\\n", + "1000 C00431171 P80003353 Romney, Mitt NEUWIEN, SUSAN W. MS. \n", + "1001 C00431171 P80003353 Romney, Mitt NEUWIEN, SUSAN W. MS. \n", + "1002 C00431171 P80003353 Romney, Mitt NELSON, ARTHUR R. MR. \n", + "1003 C00431171 P80003353 Romney, Mitt HOLLIS, HAYNE MR. \n", + "1004 C00431171 P80003353 Romney, Mitt GORRIE, ALISON MRS. \n", + "1005 C00431171 P80003353 Romney, Mitt GORRIE, JIM MR. \n", + "1006 C00431171 P80003353 Romney, Mitt EVANS, NANCY D. MRS. \n", + "1007 C00431171 P80003353 Romney, Mitt COX, ANNETTE MS. \n", + "1008 C00431171 P80003353 Romney, Mitt COX, ANNETTE P. MS. \n", + "1009 C00431171 P80003353 Romney, Mitt BALLARD, HALYCON \n", + "1010 C00431171 P80003353 Romney, Mitt BALLARD, HALYCON \n", + "1011 C00431171 P80003353 Romney, Mitt BOHANNON, PATRICIA COPLEY MS. \n", + "1012 C00431171 P80003353 Romney, Mitt WHITT, MARY A. DR. \n", + "1013 C00431171 P80003353 Romney, Mitt FEARERINGILL, WILLIAM W. MR. \n", + "1014 C00431171 P80003353 Romney, Mitt WILSON, JAMES W. MR. III \n", + "1015 C00431171 P80003353 Romney, Mitt SHERLING, GEORGE L. MR. \n", + "1016 C00431171 P80003353 Romney, Mitt SHERLING, GEORGE L. MR. \n", + "1017 C00431171 P80003353 Romney, Mitt THOMAS, SUSAN E. MS. \n", + "1018 C00431171 P80003353 Romney, Mitt THOMAS, SUSAN E. MS. \n", + "1019 C00431171 P80003353 Romney, Mitt RAMSAY-NAILE, ASHLEY \n", + "1020 C00431171 P80003353 Romney, Mitt NIELSEN, CLAUDE B. MR. \n", + "1021 C00431171 P80003353 Romney, Mitt MATHIS, ALAN \n", + "1022 C00431171 P80003353 Romney, Mitt MATTHEWS, JOHN E. MR. \n", + "1023 C00431171 P80003353 Romney, Mitt MATTHEWS, WILLIAM MR. \n", + "1024 C00431171 P80003353 Romney, Mitt KNOWLES, KENNETH J. MR. \n", + "1025 C00431171 P80003353 Romney, Mitt FERRELL, PATRICK \n", + "1026 C00431171 P80003353 Romney, Mitt DANDURAND, RICHARD L. MR. \n", + "1027 C00431171 P80003353 Romney, Mitt CABANISS, CATHERINE C. MS. \n", + "1028 C00431171 P80003353 Romney, Mitt OUTLAND, JAMES \n", + "1029 C00431171 P80003353 Romney, Mitt THOMPSON, PATRICIA ANN MS. \n", + "... ... ... ... ... \n", + "1970 C00431171 P80003353 Romney, Mitt CROCKETT, C. WEBB MR. \n", + "1971 C00431171 P80003353 Romney, Mitt CROCKETT, JEFF W. MR. \n", + "1972 C00431171 P80003353 Romney, Mitt BEUS, ANNETTE MRS. \n", + "1973 C00431171 P80003353 Romney, Mitt CASE, ARTHUR D. MR. \n", + "1974 C00431171 P80003353 Romney, Mitt CASE, NANCY I. MRS. \n", + "1975 C00431171 P80003353 Romney, Mitt COURT, STEPHEN G. MR. \n", + "1976 C00431171 P80003353 Romney, Mitt COWLEY, SAM MR. \n", + "1977 C00431171 P80003353 Romney, Mitt COWMAN, STEVE MR. \n", + "1978 C00431171 P80003353 Romney, Mitt CARDON, CRAIG D. MR. \n", + "1979 C00431171 P80003353 Romney, Mitt CARDON, KASTLE K. MS. \n", + "1980 C00431171 P80003353 Romney, Mitt GARNER, RICHARD MR. \n", + "1981 C00431171 P80003353 Romney, Mitt HANSEN, VAN MR. \n", + "1982 C00431171 P80003353 Romney, Mitt GARDNER, ELBERT \n", + "1983 C00431171 P80003353 Romney, Mitt GARDNER, KATHLEEN \n", + "1984 C00431171 P80003353 Romney, Mitt JOHNSON, BECKY H. MS. \n", + "1985 C00431171 P80003353 Romney, Mitt HANLEY, LEE T. MR. \n", + "1986 C00431171 P80003353 Romney, Mitt HANLEY, LEE T. MR. \n", + "1987 C00431171 P80003353 Romney, Mitt HANLEY, LEE T. MR. \n", + "1988 C00431171 P80003353 Romney, Mitt HANLEY, NANCY R. MRS. \n", + "1989 C00431171 P80003353 Romney, Mitt HANLEY, NANCY R. MRS. \n", + "1990 C00431171 P80003353 Romney, Mitt HANLEY, NANCY R. MRS. \n", + "1991 C00431171 P80003353 Romney, Mitt JENSON, JEFF \n", + "1992 C00431171 P80003353 Romney, Mitt HALES, DONALD D. DR. \n", + "1993 C00431171 P80003353 Romney, Mitt HALES, DONALD D. DR. \n", + "1994 C00431171 P80003353 Romney, Mitt HALL, DIANNA M. MS. \n", + "1995 C00431171 P80003353 Romney, Mitt HALL, KENNETH T. MR. \n", + "1996 C00431171 P80003353 Romney, Mitt DEMENNA, KEVIN B. MR. \n", + "1997 C00431171 P80003353 Romney, Mitt DEMENNA, MELISSA MRS. \n", + "1998 C00431171 P80003353 Romney, Mitt JACKSON, WILLIAM G. MR. \n", + "1999 C00431171 P80003353 Romney, Mitt FOYLE, DOLORES D. MRS. \n", + "\n", + " contbr_city contbr_st contbr_zip \\\n", + "1000 ENTERPRISE AL 363302385 \n", + "1001 ENTERPRISE AL 363302385 \n", + "1002 DECATUR AL 356034622 \n", + "1003 DOTHAN AL 363033008 \n", + "1004 BIRMINGHAM AL 352231228 \n", + "1005 BIRMINGHAM AL 352231228 \n", + "1006 DOTHAN AL 363059355 \n", + "1007 DELL CITY AL 351286719 \n", + "1008 SPRINGVILLE AL 35146 \n", + "1009 BIRMINGHAM AL 352103049 \n", + "1010 BIRMINGHAM AL 352103049 \n", + "1011 ATTALLA AL 359547827 \n", + "1012 GADSDEN AL 359014001 \n", + "1013 BIRMINGHAM AL 352097801 \n", + "1014 MONTGOMERY AL 361177024 \n", + "1015 BIRMINGHAM AL 352435239 \n", + "1016 BIRMINGHAM AL 352435239 \n", + "1017 BIRMINGHAM AL 352131813 \n", + "1018 BIRMINGHAM AL 352131813 \n", + "1019 MOBILE AL 366194419 \n", + "1020 BIRMINGHAM AL 352133956 \n", + "1021 BIRMINGHAM AL 352262418 \n", + "1022 MONTGOMERY AL 361112013 \n", + "1023 BIRMINGHAM AL 352133024 \n", + "1024 HUNTSVILLE AL 358033361 \n", + "1025 MONTGOMERY AL 361240185 \n", + "1026 VESTAVIA AL 352432822 \n", + "1027 BIRMINGHAM AL 352133916 \n", + "1028 BIRMINGHAM AL 352231232 \n", + "1029 OWENS CROSS ROADS AL 357638677 \n", + "... ... ... ... \n", + "1970 MESA AZ 852134001 \n", + "1971 MESA AZ 852133242 \n", + "1972 PHOENIX AZ 850484526 \n", + "1973 PHOENIX AZ 850166040 \n", + "1974 PHOENIX AZ 850166027 \n", + "1975 MESA AZ 852033603 \n", + "1976 PHOENIX AZ 850481828 \n", + "1977 SCOTTSDALE AZ 852504615 \n", + "1978 QUEEN CREEK AZ 851423667 \n", + "1979 GILBERT AZ 852969451 \n", + "1980 MESA AZ 852133248 \n", + "1981 MESA AZ 852135521 \n", + "1982 MESA AZ 852053802 \n", + "1983 MESA AZ 852053802 \n", + "1984 MESA AZ 852132931 \n", + "1985 PHOENIX AZ 850164261 \n", + "1986 PHOENIX AZ 850164261 \n", + "1987 PHOENIX AZ 850164261 \n", + "1988 PHOENIX AZ 85253 \n", + "1989 PHOENIX AZ 85253 \n", + "1990 PHOENIX AZ 85253 \n", + "1991 PEORIA AZ 853835107 \n", + "1992 FLAGSTAFF AZ 860012000 \n", + "1993 FLAGSTAFF AZ 860012000 \n", + "1994 GLENDALE AZ 853086132 \n", + "1995 GLENDALE AZ 853086132 \n", + "1996 PHOENIX AZ 850072603 \n", + "1997 PHOENIX AZ 850072603 \n", + "1998 PARADISE VALLEY AZ 852531824 \n", + "1999 PHOENIX AZ 850329213 \n", + "\n", + " contbr_employer \\\n", + "1000 RETIRED \n", + "1001 RETIRED \n", + "1002 TFA \n", + "1003 INFORMATION REQUESTED PER BEST EFFORTS \n", + "1004 INFORMATION REQUESTED PER BEST EFFORTS \n", + "1005 B. & G. \n", + "1006 WALLACE COLLEGE \n", + "1007 INFORMATION REQUESTED PER BEST EFFORTS \n", + "1008 INFORMATION REQUESTED PER BEST EFFORTS \n", + "1009 SELF-EMPLOYED \n", + "1010 SELF-EMPLOYED \n", + "1011 INFORMATION REQUESTED PER BEST EFFORTS \n", + "1012 RETIRED \n", + "1013 PRIVATE CAPITAL \n", + "1014 INFORMATION REQUESTED PER BEST EFFORTS \n", + "1015 RETIRED \n", + "1016 RETIRED \n", + "1017 RETIRED \n", + "1018 RETIRED \n", + "1019 CROWDERGULF \n", + "1020 COCA-COLA BOTTLING CO. UNITED INC. \n", + "1021 JOHNSTON BARTON PROCTOR & ROSE LLP \n", + "1022 RETIRED \n", + "1023 NATIONAL BANK OF COMMERCE \n", + "1024 RETIRED \n", + "1025 THE PATRICK COMPANY \n", + "1026 RETIRED \n", + "1027 SELF-EMPLOYED \n", + "1028 NEW CAPITAL PARTNERS \n", + "1029 RETIRED \n", + "... ... \n", + "1970 FENNEMORE \n", + "1971 BROWNSTEIN HYATT FARBER SCHRECK \n", + "1972 HOMEMAKER \n", + "1973 LOW MOUNTAIN CONSTRUCTION INC. \n", + "1974 HOMEMAKER \n", + "1975 STATE OF ARIZONA \n", + "1976 SELF-EMPLOYED \n", + "1977 ENERGY DEVELOPMENTS INC. \n", + "1978 THE VINEYARD GROUP \n", + "1979 HOMEMAKER \n", + "1980 PIVOTAL GROUP INC \n", + "1981 ODYSSEY CAPITAL GROUP \n", + "1982 RETIRED \n", + "1983 INFORMATION REQUESTED PER BEST EFFORTS \n", + "1984 HOMEMAKER \n", + "1985 VESTAR \n", + "1986 VESTAR \n", + "1987 VESTAR \n", + "1988 HOMEMAKER \n", + "1989 HOMEMAKER \n", + "1990 HOMEMAKER \n", + "1991 VESCOR HOLDINGS \n", + "1992 NORTHERN ARIZONA ORTHOPAEDICS \n", + "1993 NORTHERN ARIZONA ORTHOPAEDICS \n", + "1994 SELF-EMPLOYED \n", + "1995 SELF-EMPLOYED \n", + "1996 DEMENNA & ASSOCIATES \n", + "1997 HOMEMAKER \n", + "1998 CABLE AMERICA COORPORATION \n", + "1999 RETIRED \n", + "\n", + " contbr_occupation contb_receipt_amt \\\n", + "1000 RETIRED 1000.0 \n", + "1001 RETIRED 100.0 \n", + "1002 PRESIDENT 200.0 \n", + "1003 INFORMATION REQUESTED PER BEST EFFORTS 1000.0 \n", + "1004 INFORMATION REQUESTED PER BEST EFFORTS 1000.0 \n", + "1005 CONTRACTOR 1000.0 \n", + "1006 CLINICAL NURSING INSTRUCTOR 100.0 \n", + "1007 INFORMATION REQUESTED PER BEST EFFORTS 500.0 \n", + "1008 INFORMATION REQUESTED PER BEST EFFORTS 500.0 \n", + "1009 H R EXECUTIVE 50.0 \n", + "1010 H R EXECUTIVE 50.0 \n", + "1011 INFORMATION REQUESTED PER BEST EFFORTS 50.0 \n", + "1012 RETIRED 25.0 \n", + "1013 PRESIDENT 2000.0 \n", + "1014 INFORMATION REQUESTED PER BEST EFFORTS 1000.0 \n", + "1015 RETIRED 18.0 \n", + "1016 RETIRED 1000.0 \n", + "1017 RETIRED 50.0 \n", + "1018 RETIRED 25.0 \n", + "1019 GENERAL MANAGER / VICE PRESIDENT 500.0 \n", + "1020 CHAIRMAN/C.E.O. 2500.0 \n", + "1021 ATTORNEY 250.0 \n", + "1022 RETIRED 100.0 \n", + "1023 BANKING/C.F.O. 1000.0 \n", + "1024 RETIRED 50.0 \n", + "1025 OWNER - CONSULTANT 1000.0 \n", + "1026 RETIRED 250.0 \n", + "1027 ARTIST 500.0 \n", + "1028 INVESTMENTS 250.0 \n", + "1029 RETIRED 25.0 \n", + "... ... ... \n", + "1970 ATTORNEY 1000.0 \n", + "1971 ATTORNEY 1000.0 \n", + "1972 HOMEMAKER 2500.0 \n", + "1973 CONSTRUCTION MANAGER 2500.0 \n", + "1974 HOMEMAKER 2500.0 \n", + "1975 LEGISLATOR 250.0 \n", + "1976 ATTORNEY 2500.0 \n", + "1977 C.E.O. & PRESIDENT 2500.0 \n", + "1978 EXECUTIVE 2500.0 \n", + "1979 HOMEMAKER 2500.0 \n", + "1980 C.P.A. 2500.0 \n", + "1981 CONSULTANT 500.0 \n", + "1982 RETIRED 2500.0 \n", + "1983 INFORMATION REQUESTED PER BEST EFFORTS 2500.0 \n", + "1984 HOMEMAKER 2500.0 \n", + "1985 REAL ESTATE MANAGER 2500.0 \n", + "1986 REAL ESTATE MANAGER 2500.0 \n", + "1987 REAL ESTATE MANAGER -2500.0 \n", + "1988 HOMEMAKER 2500.0 \n", + "1989 HOMEMAKER 2500.0 \n", + "1990 HOMEMAKER -2500.0 \n", + "1991 FINANCE 500.0 \n", + "1992 ORTHOPEDIC SURGEON 1000.0 \n", + "1993 ORTHOPEDIC SURGEON 1500.0 \n", + "1994 SELF-EMPLOYED 2500.0 \n", + "1995 SELF-EMPLOYED 2500.0 \n", + "1996 LOBBYIST 2500.0 \n", + "1997 HOMEMAKER 2500.0 \n", + "1998 PRESIDENT 250.0 \n", + "1999 RETIRED 250.0 \n", + "\n", + " contb_receipt_dt receipt_desc memo_cd \\\n", + "1000 13-Feb-12 NaN NaN \n", + "1001 18-Feb-12 NaN NaN \n", + "1002 29-Feb-12 NaN NaN \n", + "1003 29-Feb-12 NaN NaN \n", + "1004 22-Feb-12 NaN NaN \n", + "1005 22-Feb-12 NaN NaN \n", + "1006 08-Feb-12 NaN NaN \n", + "1007 28-Feb-12 NaN NaN \n", + "1008 28-Feb-12 NaN NaN \n", + "1009 11-Feb-12 NaN NaN \n", + "1010 22-Feb-12 NaN NaN \n", + "1011 13-Mar-12 NaN NaN \n", + "1012 03-Feb-12 NaN NaN \n", + "1013 22-Feb-12 NaN NaN \n", + "1014 21-Feb-12 NaN NaN \n", + "1015 29-Feb-12 NaN NaN \n", + "1016 29-Feb-12 NaN NaN \n", + "1017 06-Feb-12 NaN NaN \n", + "1018 21-Feb-12 NaN NaN \n", + "1019 27-Feb-12 NaN NaN \n", + "1020 14-Feb-12 NaN NaN \n", + "1021 28-Feb-12 NaN NaN \n", + "1022 27-Feb-12 NaN NaN \n", + "1023 22-Feb-12 NaN NaN \n", + "1024 13-Feb-12 NaN NaN \n", + "1025 22-Feb-12 NaN NaN \n", + "1026 10-Feb-12 NaN NaN \n", + "1027 29-Feb-12 NaN NaN \n", + "1028 09-Jan-12 NaN NaN \n", + "1029 31-Jan-12 NaN NaN \n", + "... ... ... ... \n", + "1970 24-May-11 NaN NaN \n", + "1971 30-Jun-11 NaN NaN \n", + "1972 24-May-11 NaN NaN \n", + "1973 26-Apr-11 NaN NaN \n", + "1974 26-Apr-11 NaN NaN \n", + "1975 16-May-11 NaN NaN \n", + "1976 30-Jun-11 NaN NaN \n", + "1977 29-Jun-11 NaN NaN \n", + "1978 20-Jun-11 NaN NaN \n", + "1979 24-May-11 NaN NaN \n", + "1980 04-May-11 NaN NaN \n", + "1981 25-Apr-11 NaN NaN \n", + "1982 28-Jun-11 NaN NaN \n", + "1983 30-Jun-11 NaN NaN \n", + "1984 30-Jun-11 NaN NaN \n", + "1985 13-Apr-11 NaN NaN \n", + "1986 16-May-11 SEE REATTRIBUTION NaN \n", + "1987 25-May-11 REATTRIBUTION TO SPOUSE X \n", + "1988 25-May-11 REATTRIBUTION FROM SPOUSE X \n", + "1989 15-Jun-11 NaN NaN \n", + "1990 22-Jun-11 NaN NaN \n", + "1991 16-May-11 NaN NaN \n", + "1992 12-Apr-11 NaN NaN \n", + "1993 30-Jun-11 NaN NaN \n", + "1994 16-May-11 NaN NaN \n", + "1995 16-May-11 NaN NaN \n", + "1996 16-May-11 NaN NaN \n", + "1997 16-May-11 NaN NaN \n", + "1998 10-Jun-11 NaN NaN \n", + "1999 06-Jun-11 NaN NaN \n", + "\n", + " memo_text form_tp file_num \n", + "1000 NaN SA17A 780124 \n", + "1001 NaN SA17A 780124 \n", + "1002 NaN SA17A 780124 \n", + "1003 NaN SA17A 780124 \n", + "1004 NaN SA17A 780124 \n", + "1005 NaN SA17A 780124 \n", + "1006 NaN SA17A 780124 \n", + "1007 NaN SA17A 780124 \n", + "1008 NaN SA17A 780124 \n", + "1009 NaN SA17A 780124 \n", + "1010 NaN SA17A 780124 \n", + "1011 NaN SA17A 780128 \n", + "1012 NaN SA17A 780124 \n", + "1013 NaN SA17A 780124 \n", + "1014 NaN SA17A 780124 \n", + "1015 NaN SA17A 780124 \n", + "1016 NaN SA17A 780124 \n", + "1017 NaN SA17A 780124 \n", + "1018 NaN SA17A 780124 \n", + "1019 NaN SA17A 780124 \n", + "1020 NaN SA17A 780124 \n", + "1021 NaN SA17A 780124 \n", + "1022 NaN SA17A 780124 \n", + "1023 NaN SA17A 780124 \n", + "1024 NaN SA17A 780124 \n", + "1025 NaN SA17A 780124 \n", + "1026 NaN SA17A 780124 \n", + "1027 NaN SA17A 780124 \n", + "1028 NaN SA17A 771933 \n", + "1029 NaN SA17A 771933 \n", + "... ... ... ... \n", + "1970 NaN SA17A 760248 \n", + "1971 NaN SA17A 760248 \n", + "1972 NaN SA17A 760248 \n", + "1973 NaN SA17A 760248 \n", + "1974 NaN SA17A 760248 \n", + "1975 NaN SA17A 760248 \n", + "1976 NaN SA17A 760248 \n", + "1977 NaN SA17A 760248 \n", + "1978 NaN SA17A 760248 \n", + "1979 NaN SA17A 760248 \n", + "1980 NaN SA17A 760248 \n", + "1981 NaN SA17A 760248 \n", + "1982 NaN SA17A 760248 \n", + "1983 NaN SA17A 760248 \n", + "1984 NaN SA17A 760248 \n", + "1985 NaN SA17A 760248 \n", + "1986 SEE REATTRIBUTION SA17A 760248 \n", + "1987 REATTRIBUTION TO SPOUSE SA17A 760248 \n", + "1988 REATTRIBUTION FROM SPOUSE SA17A 760248 \n", + "1989 CHARGED BACK $2500.00 ON 06/22/2011 SA17A 760248 \n", + "1990 CHARGED BACK SA17A 760248 \n", + "1991 NaN SA17A 760248 \n", + "1992 NaN SA17A 760248 \n", + "1993 NaN SA17A 760248 \n", + "1994 NaN SA17A 760248 \n", + "1995 NaN SA17A 760248 \n", + "1996 NaN SA17A 760248 \n", + "1997 NaN SA17A 760248 \n", + "1998 NaN SA17A 760248 \n", + "1999 NaN SA17A 760248 \n", + "\n", + "[1000 rows x 16 columns]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "next(리더)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. 클립보드를 이용하여 데이터 읽기" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "#IE에서는 안되고, 크롬에서 저장하고자 하는 테이블 형태의 데이터를 복사한 후에 아래 명령어 출력하면, 데이터프레임으로 생성됨.\n", + "주식정보 = pd.read_clipboard(engine ='python')" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "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종목명현재가전일비등락률액면가시가총액상장주식수외국인비율거래량PERROE토론실
01삼성전자45,500상승 600+1.34%1002,920,7936,419,32552.504,484,3238.3921.01토론실
12SK하이닉스86,100상승 800+0.94%5,000626,810728,00250.65657,9965.8936.80토론실
23셀트리온290,000상승 500+0.17%1,000363,648125,39622.07160,21690.7717.84토론실
34삼성전자우36,550상승 200+0.55%100330,276903,62984.00200,0646.74NaN토론실
45삼성바이오로직스428,500상승 18,500+4.51%2,500283,51766,1659.62133,487-292.29-2.41토론실
\n", + "
" + ], + "text/plain": [ + " N 종목명 현재가 전일비 등락률 액면가 시가총액 상장주식수 \\\n", + "0 1 삼성전자 45,500 상승 600 +1.34% 100 2,920,793 6,419,325 \n", + "1 2 SK하이닉스 86,100 상승 800 +0.94% 5,000 626,810 728,002 \n", + "2 3 셀트리온 290,000 상승 500 +0.17% 1,000 363,648 125,396 \n", + "3 4 삼성전자우 36,550 상승 200 +0.55% 100 330,276 903,629 \n", + "4 5 삼성바이오로직스 428,500 상승 18,500 +4.51% 2,500 283,517 66,165 \n", + "\n", + " 외국인비율 거래량 PER ROE 토론실 \n", + "0 52.50 4,484,323 8.39 21.01 토론실 \n", + "1 50.65 657,996 5.89 36.80 토론실 \n", + "2 22.07 160,216 90.77 17.84 토론실 \n", + "3 84.00 200,064 6.74 NaN 토론실 \n", + "4 9.62 133,487 -292.29 -2.41 토론실 " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "주식정보" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. 데이터베이스에서 읽기\n", + "### 파이썬에서 sqlite를 내장하고 있음" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "import sqlite3" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "#테이블 생성 SQL 정의\n", + "테이블생성 = \"\"\"CREATE TABLE locations\n", + " (시 varchar[20], 구 varchar[20], 선호도 integer)\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "#sqlite 접속\n", + "conn = sqlite3.connect('test.db')" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#테이블 생성 SQL 수행 \n", + "conn.execute(테이블생성)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "# commit() 수행. - SQL 수행 후, commit을 해야만, 데이터베이스에 SQL 구문이 적용됨 \n", + "conn.commit()" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "#생성된 테이블에 저장할 데이터 정의\n", + "data = [['서울','강남', 15]\n", + " ,['서울','강동', 10]\n", + " ,['서울','동대문', 7]\n", + " ,['서울','양천', 12]\n", + " ,['성남','분당', 12]\n", + " ,['수원','영통', 15]\n", + " ,['성남','중원', 11]\n", + " ,['수원','팔달', 14]\n", + " ]" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "# 데이터 적재 SQL 정의 , 한 줄 씩 insert\n", + "적재SQL = 'INSERT INTO locations VALUES(?,?,?)'" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#데이터 적재 SQL 수행\n", + "conn.executemany(적재SQL, data)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "# commit() 수행\n", + "conn.commit()" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "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", + "
선호도
0서울강남15
1서울강동10
2서울동대문7
3서울양천12
4성남분당12
5수원영통15
6성남중원11
7수원팔달14
\n", + "
" + ], + "text/plain": [ + " 시 구 선호도\n", + "0 서울 강남 15\n", + "1 서울 강동 10\n", + "2 서울 동대문 7\n", + "3 서울 양천 12\n", + "4 성남 분당 12\n", + "5 수원 영통 15\n", + "6 성남 중원 11\n", + "7 수원 팔달 14" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Select SQL 실행1\n", + "pd.read_sql('SELECT *FROM locations', conn)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "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", + "
sum(선호도)
0서울44
1성남23
2수원29
\n", + "
" + ], + "text/plain": [ + " 시 sum(선호도)\n", + "0 서울 44\n", + "1 성남 23\n", + "2 수원 29" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Select SQL 실행2 # 줄바꿈 시 \\ 사용\n", + "pd.read_sql('SELECT 시, sum(선호도)\\\n", + " FROM locations GROUP BY 시', conn)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "# 데이터베이스의 테이블 크기가 큰 경우에는 cursor(커서) 사용하기\n", + "# 커서까지 읽어오는 것\n", + "cursor = conn.execute('SELECT * FROM locations')" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cursor" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "# 두 줄 씩 읽기\n", + "rows = cursor.fetchmany(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "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", + "
012
0성남분당12
1수원영통15
\n", + "
" + ], + "text/plain": [ + " 0 1 2\n", + "0 성남 분당 12\n", + "1 수원 영통 15" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 데이터프레임에 넣어 읽어오기\n", + "DataFrame(rows)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. 엑셀 파일 읽기\n", + "### 기본적으로 첫번째 시트에 있는 데이터를 읽어와서 데이터프레임으로 저장함. \n", + "### 모든 시트를 읽기 위해서는 sheetname인자를 None으로 설정\n", + "### sheetname = None. 모든 시트의 데이터를 읽어서 사전 형태로 저장됨. \n", + "### key = 시트의 이름, value = 각 시트에 있는 데이터들을 저장한 데이터프레임 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ex6.xlsx 파일 \n", + "\"csv파일예제\"" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "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", + "
ab
012
156
2910
\n", + "
" + ], + "text/plain": [ + " a b\n", + "0 1 2\n", + "1 5 6\n", + "2 9 10" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 첫번째 시트 읽기\n", + "pd.read_excel('data/ex6.xlsx')" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "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", + "
cdmessage
034hello
178world
21112foo
\n", + "
" + ], + "text/plain": [ + " c d message\n", + "0 3 4 hello\n", + "1 7 8 world\n", + "2 11 12 foo" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 두번째 시트 읽기\n", + "pd.read_excel('data/ex6.xlsx',sheet_name = '시트2')" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "OrderedDict([('시트1', a b\n", + " 0 1 2\n", + " 1 5 6\n", + " 2 9 10), ('시트2', c d message\n", + " 0 3 4 hello\n", + " 1 7 8 world\n", + " 2 11 12 foo)])" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 모든 시트 다 읽어오기\n", + "data = pd.read_excel('data/ex6.xlsx', sheet_name = None)\n", + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "odict_keys(['시트1', '시트2'])" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "odict_values([ a b\n", + "0 1 2\n", + "1 5 6\n", + "2 9 10, c d message\n", + "0 3 4 hello\n", + "1 7 8 world\n", + "2 11 12 foo])" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.values()" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [], + "source": [ + "# 시트1, 시트2 데이터를 각각 data1, datda2에 저장\n", + "data1,data2 = data.values()" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "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", + "
ab
012
156
2910
\n", + "
" + ], + "text/plain": [ + " a b\n", + "0 1 2\n", + "1 5 6\n", + "2 9 10" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data1" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "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", + "
cdmessage
034hello
178world
21112foo
\n", + "
" + ], + "text/plain": [ + " c d message\n", + "0 3 4 hello\n", + "1 7 8 world\n", + "2 11 12 foo" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 4. \353\215\260\354\235\264\355\204\260 \352\260\200\352\263\265 1 - \353\215\260\354\235\264\355\204\260 \355\225\251\354\271\230\352\270\260 (merge, concat).ipynb" "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 4. \353\215\260\354\235\264\355\204\260 \352\260\200\352\263\265 1 - \353\215\260\354\235\264\355\204\260 \355\225\251\354\271\230\352\270\260 (merge, concat).ipynb" new file mode 100644 index 0000000..0a776f8 --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 4. \353\215\260\354\235\264\355\204\260 \352\260\200\352\263\265 1 - \353\215\260\354\235\264\355\204\260 \355\225\251\354\271\230\352\270\260 (merge, concat).ipynb" @@ -0,0 +1,7059 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pandas import Series, DataFrame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4. 데이터 가공 1 - 데이터 합치기\n", + "## 4-1. pandas.merge()\n", + "\"merge예제\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "#샘플 데이터 생성\n", + "df1 = DataFrame([[1,3],[2,4]], \n", + " columns = list('AB'))\n", + "df2 = DataFrame([[1,'aa'],[2,'bb']], \n", + " columns = list('AC'))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "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", + "
ABC
013aa
124bb
\n", + "
" + ], + "text/plain": [ + " A B C\n", + "0 1 3 aa\n", + "1 2 4 bb" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.merge(df1,df2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " ### 주요 파라미터\n", + " - 키를 기준으로 DataFrame의 로우를 합친다. SQL이나 다른 관계형 데이터베이스의 join 연산과 동일함.\n", + " - 주요 파라미터 \n", + " . left, right : merge할 DataFrame 객체이름\n", + " \n", + " . how = 'inner', #left, right, outer\n", + " \n", + " . on = None, #merge의 기준이 되는 컬럼\n", + " \n", + " . left_on = None, #left DataFrame의 기준 컬럼\n", + " \n", + " . right_on = None, #right DataFrame의 기준 컬럼" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "df_left = DataFrame({'KEY': ['k0', 'k1', 'k2', 'k3'],\n", + " 'A': ['a0', 'a1', 'a2', 'a3'],\n", + " 'B': ['b0', 'b1', 'b2', 'b3']})\n", + "df_right = DataFrame({'KEY': ['k2', 'k3', 'k4', 'k5'],\n", + " 'C': ['c2', 'c3', 'c4', 'c5'],\n", + " 'D': ['d2', 'd3', 'd4', 'd5']})" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "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", + "
KEYAB
0k0a0b0
1k1a1b1
2k2a2b2
3k3a3b3
\n", + "
" + ], + "text/plain": [ + " KEY A B\n", + "0 k0 a0 b0\n", + "1 k1 a1 b1\n", + "2 k2 a2 b2\n", + "3 k3 a3 b3" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_left" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "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", + "
KEYCD
0k2c2d2
1k3c3d3
2k4c4d4
3k5c5d5
\n", + "
" + ], + "text/plain": [ + " KEY C D\n", + "0 k2 c2 d2\n", + "1 k3 c3 d3\n", + "2 k4 c4 d4\n", + "3 k5 c5 d5" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_right" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "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", + "
KEYABCD
0k2a2b2c2d2
1k3a3b3c3d3
\n", + "
" + ], + "text/plain": [ + " KEY A B C D\n", + "0 k2 a2 b2 c2 d2\n", + "1 k3 a3 b3 c3 d3" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# inner join(default)\n", + "pd.merge(df_left, df_right)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "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", + "
KEYABCD
0k0a0b0NaNNaN
1k1a1b1NaNNaN
2k2a2b2c2d2
3k3a3b3c3d3
\n", + "
" + ], + "text/plain": [ + " KEY A B C D\n", + "0 k0 a0 b0 NaN NaN\n", + "1 k1 a1 b1 NaN NaN\n", + "2 k2 a2 b2 c2 d2\n", + "3 k3 a3 b3 c3 d3" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# left outer join\n", + "pd.merge(df_left,df_right, how='left')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "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", + "
KEYABCD
0k2a2b2c2d2
1k3a3b3c3d3
2k4NaNNaNc4d4
3k5NaNNaNc5d5
\n", + "
" + ], + "text/plain": [ + " KEY A B C D\n", + "0 k2 a2 b2 c2 d2\n", + "1 k3 a3 b3 c3 d3\n", + "2 k4 NaN NaN c4 d4\n", + "3 k5 NaN NaN c5 d5" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#right outer join\n", + "pd.merge(df_left, df_right, how='right')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "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", + "
KEYABCD
0k0a0b0NaNNaN
1k1a1b1NaNNaN
2k2a2b2c2d2
3k3a3b3c3d3
4k4NaNNaNc4d4
5k5NaNNaNc5d5
\n", + "
" + ], + "text/plain": [ + " KEY A B C D\n", + "0 k0 a0 b0 NaN NaN\n", + "1 k1 a1 b1 NaN NaN\n", + "2 k2 a2 b2 c2 d2\n", + "3 k3 a3 b3 c3 d3\n", + "4 k4 NaN NaN c4 d4\n", + "5 k5 NaN NaN c5 d5" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# fully outer join\n", + "pd.merge(df_left, df_right, how='outer')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# 실습, 아래 2개의 DataFrame을 K1과 K2 컬럼으로 outer merge\n", + "df_left2 = DataFrame({'K1': ['k0', 'k1', 'k2', 'k3'],\n", + " 'A': ['a0', 'a1', 'a2', 'a3'],\n", + " 'B': ['b0', 'b1', 'b2', 'b3']})\n", + "df_right2 = DataFrame({'K2': ['k2', 'k3', 'k4', 'k5'],\n", + " 'C': ['c2', 'c3', 'c4', 'c5'],\n", + " 'D': ['d2', 'd3', 'd4', 'd5']}) \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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", + "
K1ABK2CD
0k0a0b0NaNNaNNaN
1k1a1b1NaNNaNNaN
2k2a2b2k2c2d2
3k3a3b3k3c3d3
4NaNNaNNaNk4c4d4
5NaNNaNNaNk5c5d5
\n", + "
" + ], + "text/plain": [ + " K1 A B K2 C D\n", + "0 k0 a0 b0 NaN NaN NaN\n", + "1 k1 a1 b1 NaN NaN NaN\n", + "2 k2 a2 b2 k2 c2 d2\n", + "3 k3 a3 b3 k3 c3 d3\n", + "4 NaN NaN NaN k4 c4 d4\n", + "5 NaN NaN NaN k5 c5 d5" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습\n", + "pd.merge(df_left2, df_right2, how = 'outer', left_on = 'K1', right_on = 'K2')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "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", + "
사용자아이디성별연령직업지역
01F11048067
12M561670072
23M251555117
34M45702460
45M252055455
\n", + "
" + ], + "text/plain": [ + " 사용자아이디 성별 연령 직업 지역\n", + "0 1 F 1 10 48067\n", + "1 2 M 56 16 70072\n", + "2 3 M 25 15 55117\n", + "3 4 M 45 7 02460\n", + "4 5 M 25 20 55455" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실제 데이터 실습\n", + "#1. 사용자 데이터 읽어오기\n", + "user = pd.read_csv('data/movielens/users.dat', sep='::', \n", + " names=['사용자아이디', '성별', '연령','직업','지역'], engine='python') # sep이 콤마 아니여도 csv라고 통칭 함 \n", + "user.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "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", + "
사용자아이디성별연령직업지역
60356036F251532603
60366037F45176006
60376038F56114706
60386039F45001060
60396040M25611106
\n", + "
" + ], + "text/plain": [ + " 사용자아이디 성별 연령 직업 지역\n", + "6035 6036 F 25 15 32603\n", + "6036 6037 F 45 1 76006\n", + "6037 6038 F 56 1 14706\n", + "6038 6039 F 45 0 01060\n", + "6039 6040 M 25 6 11106" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "user.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "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", + "
사용자아이디영화아이디평점타임스탬프
0111935978300760
116613978302109
219143978301968
3134084978300275
4123555978824291
\n", + "
" + ], + "text/plain": [ + " 사용자아이디 영화아이디 평점 타임스탬프\n", + "0 1 1193 5 978300760\n", + "1 1 661 3 978302109\n", + "2 1 914 3 978301968\n", + "3 1 3408 4 978300275\n", + "4 1 2355 5 978824291" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2. 평점 데이터 읽어오기\n", + "# 데이터 파일 : data/movielens/ratings.dat\n", + "# 컬럼명들은 ['사용자아이디', '영화아이디', '평점', '타임스탬프']\n", + "ratings = pd.read_csv('data/movielens/ratings.dat', sep='::', engine = 'python', \n", + " names = ['사용자아이디','영화아이디', '평점','타임스탬프'])\n", + "ratings.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "scrolled": false + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
사용자아이디성별연령직업지역영화아이디평점타임스탬프
01F1104806711935978300760
11F110480676613978302109
21F110480679143978301968
31F1104806734084978300275
41F1104806723555978824291
51F1104806711973978302268
61F1104806712875978302039
71F1104806728045978300719
81F110480675944978302268
91F110480679194978301368
101F110480675955978824268
111F110480679384978301752
121F1104806723984978302281
131F1104806729184978302124
141F1104806710355978301753
151F1104806727914978302188
161F1104806726873978824268
171F1104806720184978301777
181F1104806731055978301713
191F1104806727974978302039
201F1104806723213978302205
211F110480677203978300760
221F1104806712705978300055
231F110480675275978824195
241F1104806723403978300103
251F11048067485978824351
261F1104806710974978301953
271F1104806717214978300055
281F1104806715454978824139
291F110480677453978824268
...........................
10001796040M2561110627624956704584
10001806040M2561110610363956715455
10001816040M256111065084956704972
10001826040M2561110610414957717678
10001836040M2561110637354960971654
10001846040M2561110627914956715569
10001856040M2561110627941956716438
10001866040M256111065275956704219
10001876040M2561110620031956716294
10001886040M256111065354964828734
10001896040M2561110620105957716795
10001906040M2561110620114956716113
10001916040M2561110637514964828782
10001926040M2561110620195956703977
10001936040M256111065414956715288
10001946040M2561110610775964828799
10001956040M2561110610792956715648
10001966040M256111065494956704746
10001976040M2561110620203956715288
10001986040M2561110620213956716374
10001996040M2561110620225956716207
10002006040M2561110620285956704519
10002016040M2561110610804957717322
10002026040M2561110610894956704996
10002036040M2561110610903956715518
10002046040M2561110610911956716541
10002056040M2561110610945956704887
10002066040M256111065625956704746
10002076040M2561110610964956715648
10002086040M2561110610974956715569
\n", + "

1000209 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " 사용자아이디 성별 연령 직업 지역 영화아이디 평점 타임스탬프\n", + "0 1 F 1 10 48067 1193 5 978300760\n", + "1 1 F 1 10 48067 661 3 978302109\n", + "2 1 F 1 10 48067 914 3 978301968\n", + "3 1 F 1 10 48067 3408 4 978300275\n", + "4 1 F 1 10 48067 2355 5 978824291\n", + "5 1 F 1 10 48067 1197 3 978302268\n", + "6 1 F 1 10 48067 1287 5 978302039\n", + "7 1 F 1 10 48067 2804 5 978300719\n", + "8 1 F 1 10 48067 594 4 978302268\n", + "9 1 F 1 10 48067 919 4 978301368\n", + "10 1 F 1 10 48067 595 5 978824268\n", + "11 1 F 1 10 48067 938 4 978301752\n", + "12 1 F 1 10 48067 2398 4 978302281\n", + "13 1 F 1 10 48067 2918 4 978302124\n", + "14 1 F 1 10 48067 1035 5 978301753\n", + "15 1 F 1 10 48067 2791 4 978302188\n", + "16 1 F 1 10 48067 2687 3 978824268\n", + "17 1 F 1 10 48067 2018 4 978301777\n", + "18 1 F 1 10 48067 3105 5 978301713\n", + "19 1 F 1 10 48067 2797 4 978302039\n", + "20 1 F 1 10 48067 2321 3 978302205\n", + "21 1 F 1 10 48067 720 3 978300760\n", + "22 1 F 1 10 48067 1270 5 978300055\n", + "23 1 F 1 10 48067 527 5 978824195\n", + "24 1 F 1 10 48067 2340 3 978300103\n", + "25 1 F 1 10 48067 48 5 978824351\n", + "26 1 F 1 10 48067 1097 4 978301953\n", + "27 1 F 1 10 48067 1721 4 978300055\n", + "28 1 F 1 10 48067 1545 4 978824139\n", + "29 1 F 1 10 48067 745 3 978824268\n", + "... ... .. .. .. ... ... .. ...\n", + "1000179 6040 M 25 6 11106 2762 4 956704584\n", + "1000180 6040 M 25 6 11106 1036 3 956715455\n", + "1000181 6040 M 25 6 11106 508 4 956704972\n", + "1000182 6040 M 25 6 11106 1041 4 957717678\n", + "1000183 6040 M 25 6 11106 3735 4 960971654\n", + "1000184 6040 M 25 6 11106 2791 4 956715569\n", + "1000185 6040 M 25 6 11106 2794 1 956716438\n", + "1000186 6040 M 25 6 11106 527 5 956704219\n", + "1000187 6040 M 25 6 11106 2003 1 956716294\n", + "1000188 6040 M 25 6 11106 535 4 964828734\n", + "1000189 6040 M 25 6 11106 2010 5 957716795\n", + "1000190 6040 M 25 6 11106 2011 4 956716113\n", + "1000191 6040 M 25 6 11106 3751 4 964828782\n", + "1000192 6040 M 25 6 11106 2019 5 956703977\n", + "1000193 6040 M 25 6 11106 541 4 956715288\n", + "1000194 6040 M 25 6 11106 1077 5 964828799\n", + "1000195 6040 M 25 6 11106 1079 2 956715648\n", + "1000196 6040 M 25 6 11106 549 4 956704746\n", + "1000197 6040 M 25 6 11106 2020 3 956715288\n", + "1000198 6040 M 25 6 11106 2021 3 956716374\n", + "1000199 6040 M 25 6 11106 2022 5 956716207\n", + "1000200 6040 M 25 6 11106 2028 5 956704519\n", + "1000201 6040 M 25 6 11106 1080 4 957717322\n", + "1000202 6040 M 25 6 11106 1089 4 956704996\n", + "1000203 6040 M 25 6 11106 1090 3 956715518\n", + "1000204 6040 M 25 6 11106 1091 1 956716541\n", + "1000205 6040 M 25 6 11106 1094 5 956704887\n", + "1000206 6040 M 25 6 11106 562 5 956704746\n", + "1000207 6040 M 25 6 11106 1096 4 956715648\n", + "1000208 6040 M 25 6 11106 1097 4 956715569\n", + "\n", + "[1000209 rows x 8 columns]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 3. 사용자와 평점 데이터 합치기\n", + "pd.merge(user, ratings)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 4\n", + "movies = pd.read_csv('data/movielens/movies.dat', sep ='::', engine= 'python', names=[])" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
사용자아이디성별연령직업지역영화아이디평점타임스탬프
01F1104806711935978300760
11F110480676613978302109
21F110480679143978301968
31F1104806734084978300275
41F1104806723555978824291
51F1104806711973978302268
61F1104806712875978302039
71F1104806728045978300719
81F110480675944978302268
91F110480679194978301368
101F110480675955978824268
111F110480679384978301752
121F1104806723984978302281
131F1104806729184978302124
141F1104806710355978301753
151F1104806727914978302188
161F1104806726873978824268
171F1104806720184978301777
181F1104806731055978301713
191F1104806727974978302039
201F1104806723213978302205
211F110480677203978300760
221F1104806712705978300055
231F110480675275978824195
241F1104806723403978300103
251F11048067485978824351
261F1104806710974978301953
271F1104806717214978300055
281F1104806715454978824139
291F110480677453978824268
...........................
10001796040M2561110627624956704584
10001806040M2561110610363956715455
10001816040M256111065084956704972
10001826040M2561110610414957717678
10001836040M2561110637354960971654
10001846040M2561110627914956715569
10001856040M2561110627941956716438
10001866040M256111065275956704219
10001876040M2561110620031956716294
10001886040M256111065354964828734
10001896040M2561110620105957716795
10001906040M2561110620114956716113
10001916040M2561110637514964828782
10001926040M2561110620195956703977
10001936040M256111065414956715288
10001946040M2561110610775964828799
10001956040M2561110610792956715648
10001966040M256111065494956704746
10001976040M2561110620203956715288
10001986040M2561110620213956716374
10001996040M2561110620225956716207
10002006040M2561110620285956704519
10002016040M2561110610804957717322
10002026040M2561110610894956704996
10002036040M2561110610903956715518
10002046040M2561110610911956716541
10002056040M2561110610945956704887
10002066040M256111065625956704746
10002076040M2561110610964956715648
10002086040M2561110610974956715569
\n", + "

1000209 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " 사용자아이디 성별 연령 직업 지역 영화아이디 평점 타임스탬프\n", + "0 1 F 1 10 48067 1193 5 978300760\n", + "1 1 F 1 10 48067 661 3 978302109\n", + "2 1 F 1 10 48067 914 3 978301968\n", + "3 1 F 1 10 48067 3408 4 978300275\n", + "4 1 F 1 10 48067 2355 5 978824291\n", + "5 1 F 1 10 48067 1197 3 978302268\n", + "6 1 F 1 10 48067 1287 5 978302039\n", + "7 1 F 1 10 48067 2804 5 978300719\n", + "8 1 F 1 10 48067 594 4 978302268\n", + "9 1 F 1 10 48067 919 4 978301368\n", + "10 1 F 1 10 48067 595 5 978824268\n", + "11 1 F 1 10 48067 938 4 978301752\n", + "12 1 F 1 10 48067 2398 4 978302281\n", + "13 1 F 1 10 48067 2918 4 978302124\n", + "14 1 F 1 10 48067 1035 5 978301753\n", + "15 1 F 1 10 48067 2791 4 978302188\n", + "16 1 F 1 10 48067 2687 3 978824268\n", + "17 1 F 1 10 48067 2018 4 978301777\n", + "18 1 F 1 10 48067 3105 5 978301713\n", + "19 1 F 1 10 48067 2797 4 978302039\n", + "20 1 F 1 10 48067 2321 3 978302205\n", + "21 1 F 1 10 48067 720 3 978300760\n", + "22 1 F 1 10 48067 1270 5 978300055\n", + "23 1 F 1 10 48067 527 5 978824195\n", + "24 1 F 1 10 48067 2340 3 978300103\n", + "25 1 F 1 10 48067 48 5 978824351\n", + "26 1 F 1 10 48067 1097 4 978301953\n", + "27 1 F 1 10 48067 1721 4 978300055\n", + "28 1 F 1 10 48067 1545 4 978824139\n", + "29 1 F 1 10 48067 745 3 978824268\n", + "... ... .. .. .. ... ... .. ...\n", + "1000179 6040 M 25 6 11106 2762 4 956704584\n", + "1000180 6040 M 25 6 11106 1036 3 956715455\n", + "1000181 6040 M 25 6 11106 508 4 956704972\n", + "1000182 6040 M 25 6 11106 1041 4 957717678\n", + "1000183 6040 M 25 6 11106 3735 4 960971654\n", + "1000184 6040 M 25 6 11106 2791 4 956715569\n", + "1000185 6040 M 25 6 11106 2794 1 956716438\n", + "1000186 6040 M 25 6 11106 527 5 956704219\n", + "1000187 6040 M 25 6 11106 2003 1 956716294\n", + "1000188 6040 M 25 6 11106 535 4 964828734\n", + "1000189 6040 M 25 6 11106 2010 5 957716795\n", + "1000190 6040 M 25 6 11106 2011 4 956716113\n", + "1000191 6040 M 25 6 11106 3751 4 964828782\n", + "1000192 6040 M 25 6 11106 2019 5 956703977\n", + "1000193 6040 M 25 6 11106 541 4 956715288\n", + "1000194 6040 M 25 6 11106 1077 5 964828799\n", + "1000195 6040 M 25 6 11106 1079 2 956715648\n", + "1000196 6040 M 25 6 11106 549 4 956704746\n", + "1000197 6040 M 25 6 11106 2020 3 956715288\n", + "1000198 6040 M 25 6 11106 2021 3 956716374\n", + "1000199 6040 M 25 6 11106 2022 5 956716207\n", + "1000200 6040 M 25 6 11106 2028 5 956704519\n", + "1000201 6040 M 25 6 11106 1080 4 957717322\n", + "1000202 6040 M 25 6 11106 1089 4 956704996\n", + "1000203 6040 M 25 6 11106 1090 3 956715518\n", + "1000204 6040 M 25 6 11106 1091 1 956716541\n", + "1000205 6040 M 25 6 11106 1094 5 956704887\n", + "1000206 6040 M 25 6 11106 562 5 956704746\n", + "1000207 6040 M 25 6 11106 1096 4 956715648\n", + "1000208 6040 M 25 6 11106 1097 4 956715569\n", + "\n", + "[1000209 rows x 8 columns]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 사용자아이디 없거나 평점 안 매긴 사람도 포함하고 싶을 때 \n", + "pd.merge(user, ratings, how='outer')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4-2. pandas.concat(axis = 0)\n", + "\"csv파일예제\"" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "df1 = DataFrame([[1,'aa'],[2,'bb']], \n", + " columns = list('AB'))\n", + "df2 = DataFrame([[3,'cc'],[4,'dd']], \n", + " columns = list('AB'))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "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", + "
AB
01aa
12bb
23cc
34dd
\n", + "
" + ], + "text/plain": [ + " A B\n", + "0 1 aa\n", + "1 2 bb\n", + "2 3 cc\n", + "3 4 dd" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# df1과 df2 concat 수행하기\n", + "pd.concat([df1, df2],ignore_index = 'True') # axis = 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 실제 데이터 실습\n", + "# data/NC Dinos.xlsx 파일에서 2013, 2014, 2015시즌 정보를 읽어서, 각각 NC13, NC14, NC15에 저장하시오. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "NC = pd.read_excel('data/NC Dinos.xlsx', sheet_name=None)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "NC13,NC14,NC15 = NC.values()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "NC13['년도']=2013\n", + "NC14['년도']=2014\n", + "NC15['년도']=2015" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
선수명팀명경기타석타수안타홈런득점타점볼넷삼진도루BABIP타율출루율장타율OPSwOBAWAR년도
0모창민NC1084363951091257513768160.3070.2760.3390.4430.7820.3532.312013
1이호준NC1265084421232046876010920.3240.2780.3620.4750.8370.3731.852013
2김종호NC1285464651290722257100500.3520.2770.3760.3330.7090.3391.552013
3나성범NC104458404981455643395120.2790.2430.3190.4160.7350.3291.502013
4조영훈NC12042638010763839395640.3160.2820.3500.4130.7630.3480.832013
5이현곤NC91161139380109161420.3040.2730.3610.3240.6850.3270.522013
6이상호NC1021381253102613921240.2980.2480.2990.3200.6190.2890.162013
7강진성NC33210101000.5000.5000.6671.0001.6670.6710.102013
8조평호NC26867921212762410.3580.2660.3180.4180.7360.3290.092013
9박민우NC3248421101065790.3060.2620.3330.2860.6190.2960.072013
10박정준NC771951674142421234440.3030.2460.3350.3530.6880.3200.062013
11이승호NC2100000101--1.000--0.7120.062013
12마낙길NC24312990501520.3750.3100.3330.3450.6780.317-0.032013
13김성욱NC44410010200.5000.2500.2500.2500.5000.234-0.032013
14강구성NC22200000000.0000.0000.0000.0000.0000.000-0.062013
15지석훈NC1043563096832535308220.2850.2200.3000.3300.6300.293-0.092013
16김종찬NC57710000300.2500.1430.1430.1430.2860.134-0.112013
17차화준NC58121106241187122940.2950.2260.3060.3110.6170.289-0.122013
18김동건NC7171621111700.1250.1250.1760.3130.4890.216-0.142013
19이창섭NC55500000200.0000.0000.0000.0000.0000.000-0.142013
0테임즈NC12551444315237951215899110.3670.3430.4220.6881.110.4566.362014
1나성범NC123536477157308810143128140.3970.3290.4000.5970.9970.4245.942014
2박민우NC118491416124187405689500.3730.2980.3920.3990.7910.3652.732014
3손시헌NC973613079053939345320.3310.2930.3680.4140.7820.3491.522014
4지석훈NC1142382125862634164610.3230.2740.3400.4620.8020.3520.972014
5이호준NC1225004241152359786710420.3050.2710.3710.4810.8520.3690.882014
6권희동NC1012522216373936254360.3240.2850.3630.4430.8060.3530.622014
7모창민NC1224684191101662723782140.2890.2630.3200.4130.7330.3190.172014
8이종욱NC124495438126673794060150.3130.2880.3430.4110.7540.3320.132014
9김준완NC65420101110.6670.50.6000.51.10.5090.112014
10최재원NC2210010110-00.50000.50.3630.012014
11마낙길NC22100101000.00000.50000.50.3630.012014
12조영훈NC921241112961522102610.2880.2610.3250.4590.7840.337-0.022014
13김태우NC45510000300.5000.20.2000.40.60.244-0.032014
14박명환*NC2110000010-00.000000.000-0.032014
15조평호NC22200000000.00000.000000.000-0.072014
16강민국NC63300000000.00000.000000.000-0.102014
17허준NC283629502151000.2630.1720.2940.2760.570.268-0.112014
18김성욱NC26262341613910.2310.1740.2690.3480.6170.272-0.152014
19노진혁NC25161631320700.2500.1880.1880.3750.5630.231-0.182014
0테임즈NC1425954721804713014010391400.390.3810.4970.791.2870.52011.732015
1나성범NC1446225641842811213533127230.3740.3260.3730.5530.9260.3904.462015
2박민우NC14161752015831114773108460.3730.3040.3990.4040.8030.3643.522015
3이호준NC13151844913224481106110200.3320.2940.3810.510.8910.3812.192015
4김종호NC133486424125490364465410.3380.2950.3640.3940.7580.3401.032015
5조영훈NC1031461243582035193630.3290.2820.3720.540.9120.3891.002015
6손시헌NC140508440108135658366630.260.2450.3190.3980.7170.3160.852015
7이종욱NC125504440118563525478170.3150.2680.3510.3680.7190.3220.842015
8모창민NC1032392146262335185250.3520.290.3400.4390.7790.3400.762015
9지석훈NC137466415111115346238540.3110.2670.3280.3830.7110.3170.512015
10용덕한NC504942120455820.3530.2860.3750.310.6850.3260.442015
11최재원NC1141028521231131029140.3520.2470.3660.4120.7780.3500.302015
12박정준NC19242180220500.50.3810.4580.4760.9340.4170.252015
13김태군NC14447442110764552257710.2930.2540.3070.3540.6610.2940.252015
14조평호NC22222281430600.4670.3640.3640.5910.9550.4010.182015
15이창섭NC15850000330000.37500.3750.286-0.012015
16김준완NC305444100122101020.2940.2270.3700.2270.5970.308-0.042015
17강구성NC45510000000.20.20.2000.40.60.242-0.042015
18강민국NC1220000010000.000000.000-0.062015
19김태진NC1330000000000.000000.000-0.092015
\n", + "
" + ], + "text/plain": [ + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 \\\n", + "0 모창민 NC 108 436 395 109 12 57 51 37 68 16 0.307 0.276 \n", + "1 이호준 NC 126 508 442 123 20 46 87 60 109 2 0.324 0.278 \n", + "2 김종호 NC 128 546 465 129 0 72 22 57 100 50 0.352 0.277 \n", + "3 나성범 NC 104 458 404 98 14 55 64 33 95 12 0.279 0.243 \n", + "4 조영훈 NC 120 426 380 107 6 38 39 39 56 4 0.316 0.282 \n", + "5 이현곤 NC 91 161 139 38 0 10 9 16 14 2 0.304 0.273 \n", + "6 이상호 NC 102 138 125 31 0 26 13 9 21 24 0.298 0.248 \n", + "7 강진성 NC 3 3 2 1 0 1 0 1 0 0 0.500 0.500 \n", + "8 조평호 NC 26 86 79 21 2 12 7 6 24 1 0.358 0.266 \n", + "9 박민우 NC 32 48 42 11 0 10 6 5 7 9 0.306 0.262 \n", + "10 박정준 NC 77 195 167 41 4 24 21 23 44 4 0.303 0.246 \n", + "11 이승호 NC 2 1 0 0 0 0 0 1 0 1 - - \n", + "12 마낙길 NC 24 31 29 9 0 5 0 1 5 2 0.375 0.310 \n", + "13 김성욱 NC 4 4 4 1 0 0 1 0 2 0 0.500 0.250 \n", + "14 강구성 NC 2 2 2 0 0 0 0 0 0 0 0.000 0.000 \n", + "15 지석훈 NC 104 356 309 68 3 25 35 30 82 2 0.285 0.220 \n", + "16 김종찬 NC 5 7 7 1 0 0 0 0 3 0 0.250 0.143 \n", + "17 차화준 NC 58 121 106 24 1 18 7 12 29 4 0.295 0.226 \n", + "18 김동건 NC 7 17 16 2 1 1 1 1 7 0 0.125 0.125 \n", + "19 이창섭 NC 5 5 5 0 0 0 0 0 2 0 0.000 0.000 \n", + "0 테임즈 NC 125 514 443 152 37 95 121 58 99 11 0.367 0.343 \n", + "1 나성범 NC 123 536 477 157 30 88 101 43 128 14 0.397 0.329 \n", + "2 박민우 NC 118 491 416 124 1 87 40 56 89 50 0.373 0.298 \n", + "3 손시헌 NC 97 361 307 90 5 39 39 34 53 2 0.331 0.293 \n", + "4 지석훈 NC 114 238 212 58 6 26 34 16 46 1 0.323 0.274 \n", + "5 이호준 NC 122 500 424 115 23 59 78 67 104 2 0.305 0.271 \n", + "6 권희동 NC 101 252 221 63 7 39 36 25 43 6 0.324 0.285 \n", + "7 모창민 NC 122 468 419 110 16 62 72 37 82 14 0.289 0.263 \n", + "8 이종욱 NC 124 495 438 126 6 73 79 40 60 15 0.313 0.288 \n", + "9 김준완 NC 6 5 4 2 0 1 0 1 1 1 0.667 0.5 \n", + "10 최재원 NC 2 2 1 0 0 1 0 1 1 0 - 0 \n", + "11 마낙길 NC 2 2 1 0 0 1 0 1 0 0 0.000 0 \n", + "12 조영훈 NC 92 124 111 29 6 15 22 10 26 1 0.288 0.261 \n", + "13 김태우 NC 4 5 5 1 0 0 0 0 3 0 0.500 0.2 \n", + "14 박명환* NC 2 1 1 0 0 0 0 0 1 0 - 0 \n", + "15 조평호 NC 2 2 2 0 0 0 0 0 0 0 0.000 0 \n", + "16 강민국 NC 6 3 3 0 0 0 0 0 0 0 0.000 0 \n", + "17 허준 NC 28 36 29 5 0 2 1 5 10 0 0.263 0.172 \n", + "18 김성욱 NC 26 26 23 4 1 6 1 3 9 1 0.231 0.174 \n", + "19 노진혁 NC 25 16 16 3 1 3 2 0 7 0 0.250 0.188 \n", + "0 테임즈 NC 142 595 472 180 47 130 140 103 91 40 0.39 0.381 \n", + "1 나성범 NC 144 622 564 184 28 112 135 33 127 23 0.374 0.326 \n", + "2 박민우 NC 141 617 520 158 3 111 47 73 108 46 0.373 0.304 \n", + "3 이호준 NC 131 518 449 132 24 48 110 61 102 0 0.332 0.294 \n", + "4 김종호 NC 133 486 424 125 4 90 36 44 65 41 0.338 0.295 \n", + "5 조영훈 NC 103 146 124 35 8 20 35 19 36 3 0.329 0.282 \n", + "6 손시헌 NC 140 508 440 108 13 56 58 36 66 3 0.26 0.245 \n", + "7 이종욱 NC 125 504 440 118 5 63 52 54 78 17 0.315 0.268 \n", + "8 모창민 NC 103 239 214 62 6 23 35 18 52 5 0.352 0.29 \n", + "9 지석훈 NC 137 466 415 111 11 53 46 23 85 4 0.311 0.267 \n", + "10 용덕한 NC 50 49 42 12 0 4 5 5 8 2 0.353 0.286 \n", + "11 최재원 NC 114 102 85 21 2 31 13 10 29 14 0.352 0.247 \n", + "12 박정준 NC 19 24 21 8 0 2 2 0 5 0 0.5 0.381 \n", + "13 김태군 NC 144 474 421 107 6 45 52 25 77 1 0.293 0.254 \n", + "14 조평호 NC 22 22 22 8 1 4 3 0 6 0 0.467 0.364 \n", + "15 이창섭 NC 15 8 5 0 0 0 0 3 3 0 0 0 \n", + "16 김준완 NC 30 54 44 10 0 12 2 10 10 2 0.294 0.227 \n", + "17 강구성 NC 4 5 5 1 0 0 0 0 0 0 0.2 0.2 \n", + "18 강민국 NC 1 2 2 0 0 0 0 0 1 0 0 0 \n", + "19 김태진 NC 1 3 3 0 0 0 0 0 0 0 0 0 \n", + "\n", + " 출루율 장타율 OPS wOBA WAR 년도 \n", + "0 0.339 0.443 0.782 0.353 2.31 2013 \n", + "1 0.362 0.475 0.837 0.373 1.85 2013 \n", + "2 0.376 0.333 0.709 0.339 1.55 2013 \n", + "3 0.319 0.416 0.735 0.329 1.50 2013 \n", + "4 0.350 0.413 0.763 0.348 0.83 2013 \n", + "5 0.361 0.324 0.685 0.327 0.52 2013 \n", + "6 0.299 0.320 0.619 0.289 0.16 2013 \n", + "7 0.667 1.000 1.667 0.671 0.10 2013 \n", + "8 0.318 0.418 0.736 0.329 0.09 2013 \n", + "9 0.333 0.286 0.619 0.296 0.07 2013 \n", + "10 0.335 0.353 0.688 0.320 0.06 2013 \n", + "11 1.000 - - 0.712 0.06 2013 \n", + "12 0.333 0.345 0.678 0.317 -0.03 2013 \n", + "13 0.250 0.250 0.500 0.234 -0.03 2013 \n", + "14 0.000 0.000 0.000 0.000 -0.06 2013 \n", + "15 0.300 0.330 0.630 0.293 -0.09 2013 \n", + "16 0.143 0.143 0.286 0.134 -0.11 2013 \n", + "17 0.306 0.311 0.617 0.289 -0.12 2013 \n", + "18 0.176 0.313 0.489 0.216 -0.14 2013 \n", + "19 0.000 0.000 0.000 0.000 -0.14 2013 \n", + "0 0.422 0.688 1.11 0.456 6.36 2014 \n", + "1 0.400 0.597 0.997 0.424 5.94 2014 \n", + "2 0.392 0.399 0.791 0.365 2.73 2014 \n", + "3 0.368 0.414 0.782 0.349 1.52 2014 \n", + "4 0.340 0.462 0.802 0.352 0.97 2014 \n", + "5 0.371 0.481 0.852 0.369 0.88 2014 \n", + "6 0.363 0.443 0.806 0.353 0.62 2014 \n", + "7 0.320 0.413 0.733 0.319 0.17 2014 \n", + "8 0.343 0.411 0.754 0.332 0.13 2014 \n", + "9 0.600 0.5 1.1 0.509 0.11 2014 \n", + "10 0.500 0 0.5 0.363 0.01 2014 \n", + "11 0.500 0 0.5 0.363 0.01 2014 \n", + "12 0.325 0.459 0.784 0.337 -0.02 2014 \n", + "13 0.200 0.4 0.6 0.244 -0.03 2014 \n", + "14 0.000 0 0 0.000 -0.03 2014 \n", + "15 0.000 0 0 0.000 -0.07 2014 \n", + "16 0.000 0 0 0.000 -0.10 2014 \n", + "17 0.294 0.276 0.57 0.268 -0.11 2014 \n", + "18 0.269 0.348 0.617 0.272 -0.15 2014 \n", + "19 0.188 0.375 0.563 0.231 -0.18 2014 \n", + "0 0.497 0.79 1.287 0.520 11.73 2015 \n", + "1 0.373 0.553 0.926 0.390 4.46 2015 \n", + "2 0.399 0.404 0.803 0.364 3.52 2015 \n", + "3 0.381 0.51 0.891 0.381 2.19 2015 \n", + "4 0.364 0.394 0.758 0.340 1.03 2015 \n", + "5 0.372 0.54 0.912 0.389 1.00 2015 \n", + "6 0.319 0.398 0.717 0.316 0.85 2015 \n", + "7 0.351 0.368 0.719 0.322 0.84 2015 \n", + "8 0.340 0.439 0.779 0.340 0.76 2015 \n", + "9 0.328 0.383 0.711 0.317 0.51 2015 \n", + "10 0.375 0.31 0.685 0.326 0.44 2015 \n", + "11 0.366 0.412 0.778 0.350 0.30 2015 \n", + "12 0.458 0.476 0.934 0.417 0.25 2015 \n", + "13 0.307 0.354 0.661 0.294 0.25 2015 \n", + "14 0.364 0.591 0.955 0.401 0.18 2015 \n", + "15 0.375 0 0.375 0.286 -0.01 2015 \n", + "16 0.370 0.227 0.597 0.308 -0.04 2015 \n", + "17 0.200 0.4 0.6 0.242 -0.04 2015 \n", + "18 0.000 0 0 0.000 -0.06 2015 \n", + "19 0.000 0 0 0.000 -0.09 2015 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.concat([NC13,NC14,NC15])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4-3. concat(axis = 1)\n", + "\"csv파일예제\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "# 샘플 데이터 생성\n", + "df1 = DataFrame([[1,10],[2,20]], \n", + " columns = list('AB'), index = ['aa','bb'])\n", + "df2 = DataFrame([[3,'xx'],[4,'yy']], \n", + " columns = list('CD'), index = ['aa','bb'])" + ] + }, + { + "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", + "
AB
aa110
bb220
\n", + "
" + ], + "text/plain": [ + " A B\n", + "aa 1 10\n", + "bb 2 20" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# concat with axis = 1 수행\n", + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "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", + "
CD
aa3xx
bb4yy
\n", + "
" + ], + "text/plain": [ + " C D\n", + "aa 3 xx\n", + "bb 4 yy" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "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", + "
ABCD
aa1103xx
bb2204yy
\n", + "
" + ], + "text/plain": [ + " A B C D\n", + "aa 1 10 3 xx\n", + "bb 2 20 4 yy" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.concat([df1,df2], axis = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 12\n", + "1 20\n", + "2 0\n", + "3 14\n", + "4 6\n", + "5 0\n", + "6 0\n", + "7 0\n", + "8 2\n", + "9 0\n", + "10 4\n", + "11 0\n", + "12 0\n", + "13 0\n", + "14 0\n", + "15 3\n", + "16 0\n", + "17 1\n", + "18 1\n", + "19 0\n", + "Name: 홈런, dtype: int64" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "NC13.홈런" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 37\n", + "1 30\n", + "2 1\n", + "3 5\n", + "4 6\n", + "5 23\n", + "6 7\n", + "7 16\n", + "8 6\n", + "9 0\n", + "10 0\n", + "11 0\n", + "12 6\n", + "13 0\n", + "14 0\n", + "15 0\n", + "16 0\n", + "17 0\n", + "18 1\n", + "19 1\n", + "Name: 홈런, dtype: int64" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "NC14.홈런" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
팀명경기타석타수안타홈런득점타점볼넷삼진도루BABIP타율출루율장타율OPSwOBAWAR년도
선수명
모창민NC1084363951091257513768160.3070.2760.3390.4430.7820.3532.312013
이호준NC1265084421232046876010920.3240.2780.3620.4750.8370.3731.852013
김종호NC1285464651290722257100500.3520.2770.3760.3330.7090.3391.552013
나성범NC104458404981455643395120.2790.2430.3190.4160.7350.3291.502013
조영훈NC12042638010763839395640.3160.2820.3500.4130.7630.3480.832013
이현곤NC91161139380109161420.3040.2730.3610.3240.6850.3270.522013
이상호NC1021381253102613921240.2980.2480.2990.3200.6190.2890.162013
강진성NC33210101000.5000.5000.6671.0001.6670.6710.102013
조평호NC26867921212762410.3580.2660.3180.4180.7360.3290.092013
박민우NC3248421101065790.3060.2620.3330.2860.6190.2960.072013
박정준NC771951674142421234440.3030.2460.3350.3530.6880.3200.062013
이승호NC2100000101--1.000--0.7120.062013
마낙길NC24312990501520.3750.3100.3330.3450.6780.317-0.032013
김성욱NC44410010200.5000.2500.2500.2500.5000.234-0.032013
강구성NC22200000000.0000.0000.0000.0000.0000.000-0.062013
지석훈NC1043563096832535308220.2850.2200.3000.3300.6300.293-0.092013
김종찬NC57710000300.2500.1430.1430.1430.2860.134-0.112013
차화준NC58121106241187122940.2950.2260.3060.3110.6170.289-0.122013
김동건NC7171621111700.1250.1250.1760.3130.4890.216-0.142013
이창섭NC55500000200.0000.0000.0000.0000.0000.000-0.142013
테임즈NC12551444315237951215899110.3670.3430.4220.6881.110.4566.362014
나성범NC123536477157308810143128140.3970.3290.4000.5970.9970.4245.942014
박민우NC118491416124187405689500.3730.2980.3920.3990.7910.3652.732014
손시헌NC973613079053939345320.3310.2930.3680.4140.7820.3491.522014
지석훈NC1142382125862634164610.3230.2740.3400.4620.8020.3520.972014
이호준NC1225004241152359786710420.3050.2710.3710.4810.8520.3690.882014
권희동NC1012522216373936254360.3240.2850.3630.4430.8060.3530.622014
모창민NC1224684191101662723782140.2890.2630.3200.4130.7330.3190.172014
이종욱NC124495438126673794060150.3130.2880.3430.4110.7540.3320.132014
김준완NC65420101110.6670.50.6000.51.10.5090.112014
최재원NC2210010110-00.50000.50.3630.012014
마낙길NC22100101000.00000.50000.50.3630.012014
조영훈NC921241112961522102610.2880.2610.3250.4590.7840.337-0.022014
김태우NC45510000300.5000.20.2000.40.60.244-0.032014
박명환*NC2110000010-00.000000.000-0.032014
조평호NC22200000000.00000.000000.000-0.072014
강민국NC63300000000.00000.000000.000-0.102014
허준NC283629502151000.2630.1720.2940.2760.570.268-0.112014
김성욱NC26262341613910.2310.1740.2690.3480.6170.272-0.152014
노진혁NC25161631320700.2500.1880.1880.3750.5630.231-0.182014
테임즈NC1425954721804713014010391400.390.3810.4970.791.2870.52011.732015
나성범NC1446225641842811213533127230.3740.3260.3730.5530.9260.3904.462015
박민우NC14161752015831114773108460.3730.3040.3990.4040.8030.3643.522015
이호준NC13151844913224481106110200.3320.2940.3810.510.8910.3812.192015
김종호NC133486424125490364465410.3380.2950.3640.3940.7580.3401.032015
조영훈NC1031461243582035193630.3290.2820.3720.540.9120.3891.002015
손시헌NC140508440108135658366630.260.2450.3190.3980.7170.3160.852015
이종욱NC125504440118563525478170.3150.2680.3510.3680.7190.3220.842015
모창민NC1032392146262335185250.3520.290.3400.4390.7790.3400.762015
지석훈NC137466415111115346238540.3110.2670.3280.3830.7110.3170.512015
용덕한NC504942120455820.3530.2860.3750.310.6850.3260.442015
최재원NC1141028521231131029140.3520.2470.3660.4120.7780.3500.302015
박정준NC19242180220500.50.3810.4580.4760.9340.4170.252015
김태군NC14447442110764552257710.2930.2540.3070.3540.6610.2940.252015
조평호NC22222281430600.4670.3640.3640.5910.9550.4010.182015
이창섭NC15850000330000.37500.3750.286-0.012015
김준완NC305444100122101020.2940.2270.3700.2270.5970.308-0.042015
강구성NC45510000000.20.20.2000.40.60.242-0.042015
강민국NC1220000010000.000000.000-0.062015
김태진NC1330000000000.000000.000-0.092015
\n", + "
" + ], + "text/plain": [ + " 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 출루율 \\\n", + "선수명 \n", + "모창민 NC 108 436 395 109 12 57 51 37 68 16 0.307 0.276 0.339 \n", + "이호준 NC 126 508 442 123 20 46 87 60 109 2 0.324 0.278 0.362 \n", + "김종호 NC 128 546 465 129 0 72 22 57 100 50 0.352 0.277 0.376 \n", + "나성범 NC 104 458 404 98 14 55 64 33 95 12 0.279 0.243 0.319 \n", + "조영훈 NC 120 426 380 107 6 38 39 39 56 4 0.316 0.282 0.350 \n", + "이현곤 NC 91 161 139 38 0 10 9 16 14 2 0.304 0.273 0.361 \n", + "이상호 NC 102 138 125 31 0 26 13 9 21 24 0.298 0.248 0.299 \n", + "강진성 NC 3 3 2 1 0 1 0 1 0 0 0.500 0.500 0.667 \n", + "조평호 NC 26 86 79 21 2 12 7 6 24 1 0.358 0.266 0.318 \n", + "박민우 NC 32 48 42 11 0 10 6 5 7 9 0.306 0.262 0.333 \n", + "박정준 NC 77 195 167 41 4 24 21 23 44 4 0.303 0.246 0.335 \n", + "이승호 NC 2 1 0 0 0 0 0 1 0 1 - - 1.000 \n", + "마낙길 NC 24 31 29 9 0 5 0 1 5 2 0.375 0.310 0.333 \n", + "김성욱 NC 4 4 4 1 0 0 1 0 2 0 0.500 0.250 0.250 \n", + "강구성 NC 2 2 2 0 0 0 0 0 0 0 0.000 0.000 0.000 \n", + "지석훈 NC 104 356 309 68 3 25 35 30 82 2 0.285 0.220 0.300 \n", + "김종찬 NC 5 7 7 1 0 0 0 0 3 0 0.250 0.143 0.143 \n", + "차화준 NC 58 121 106 24 1 18 7 12 29 4 0.295 0.226 0.306 \n", + "김동건 NC 7 17 16 2 1 1 1 1 7 0 0.125 0.125 0.176 \n", + "이창섭 NC 5 5 5 0 0 0 0 0 2 0 0.000 0.000 0.000 \n", + "테임즈 NC 125 514 443 152 37 95 121 58 99 11 0.367 0.343 0.422 \n", + "나성범 NC 123 536 477 157 30 88 101 43 128 14 0.397 0.329 0.400 \n", + "박민우 NC 118 491 416 124 1 87 40 56 89 50 0.373 0.298 0.392 \n", + "손시헌 NC 97 361 307 90 5 39 39 34 53 2 0.331 0.293 0.368 \n", + "지석훈 NC 114 238 212 58 6 26 34 16 46 1 0.323 0.274 0.340 \n", + "이호준 NC 122 500 424 115 23 59 78 67 104 2 0.305 0.271 0.371 \n", + "권희동 NC 101 252 221 63 7 39 36 25 43 6 0.324 0.285 0.363 \n", + "모창민 NC 122 468 419 110 16 62 72 37 82 14 0.289 0.263 0.320 \n", + "이종욱 NC 124 495 438 126 6 73 79 40 60 15 0.313 0.288 0.343 \n", + "김준완 NC 6 5 4 2 0 1 0 1 1 1 0.667 0.5 0.600 \n", + "최재원 NC 2 2 1 0 0 1 0 1 1 0 - 0 0.500 \n", + "마낙길 NC 2 2 1 0 0 1 0 1 0 0 0.000 0 0.500 \n", + "조영훈 NC 92 124 111 29 6 15 22 10 26 1 0.288 0.261 0.325 \n", + "김태우 NC 4 5 5 1 0 0 0 0 3 0 0.500 0.2 0.200 \n", + "박명환* NC 2 1 1 0 0 0 0 0 1 0 - 0 0.000 \n", + "조평호 NC 2 2 2 0 0 0 0 0 0 0 0.000 0 0.000 \n", + "강민국 NC 6 3 3 0 0 0 0 0 0 0 0.000 0 0.000 \n", + "허준 NC 28 36 29 5 0 2 1 5 10 0 0.263 0.172 0.294 \n", + "김성욱 NC 26 26 23 4 1 6 1 3 9 1 0.231 0.174 0.269 \n", + "노진혁 NC 25 16 16 3 1 3 2 0 7 0 0.250 0.188 0.188 \n", + "테임즈 NC 142 595 472 180 47 130 140 103 91 40 0.39 0.381 0.497 \n", + "나성범 NC 144 622 564 184 28 112 135 33 127 23 0.374 0.326 0.373 \n", + "박민우 NC 141 617 520 158 3 111 47 73 108 46 0.373 0.304 0.399 \n", + "이호준 NC 131 518 449 132 24 48 110 61 102 0 0.332 0.294 0.381 \n", + "김종호 NC 133 486 424 125 4 90 36 44 65 41 0.338 0.295 0.364 \n", + "조영훈 NC 103 146 124 35 8 20 35 19 36 3 0.329 0.282 0.372 \n", + "손시헌 NC 140 508 440 108 13 56 58 36 66 3 0.26 0.245 0.319 \n", + "이종욱 NC 125 504 440 118 5 63 52 54 78 17 0.315 0.268 0.351 \n", + "모창민 NC 103 239 214 62 6 23 35 18 52 5 0.352 0.29 0.340 \n", + "지석훈 NC 137 466 415 111 11 53 46 23 85 4 0.311 0.267 0.328 \n", + "용덕한 NC 50 49 42 12 0 4 5 5 8 2 0.353 0.286 0.375 \n", + "최재원 NC 114 102 85 21 2 31 13 10 29 14 0.352 0.247 0.366 \n", + "박정준 NC 19 24 21 8 0 2 2 0 5 0 0.5 0.381 0.458 \n", + "김태군 NC 144 474 421 107 6 45 52 25 77 1 0.293 0.254 0.307 \n", + "조평호 NC 22 22 22 8 1 4 3 0 6 0 0.467 0.364 0.364 \n", + "이창섭 NC 15 8 5 0 0 0 0 3 3 0 0 0 0.375 \n", + "김준완 NC 30 54 44 10 0 12 2 10 10 2 0.294 0.227 0.370 \n", + "강구성 NC 4 5 5 1 0 0 0 0 0 0 0.2 0.2 0.200 \n", + "강민국 NC 1 2 2 0 0 0 0 0 1 0 0 0 0.000 \n", + "김태진 NC 1 3 3 0 0 0 0 0 0 0 0 0 0.000 \n", + "\n", + " 장타율 OPS wOBA WAR 년도 \n", + "선수명 \n", + "모창민 0.443 0.782 0.353 2.31 2013 \n", + "이호준 0.475 0.837 0.373 1.85 2013 \n", + "김종호 0.333 0.709 0.339 1.55 2013 \n", + "나성범 0.416 0.735 0.329 1.50 2013 \n", + "조영훈 0.413 0.763 0.348 0.83 2013 \n", + "이현곤 0.324 0.685 0.327 0.52 2013 \n", + "이상호 0.320 0.619 0.289 0.16 2013 \n", + "강진성 1.000 1.667 0.671 0.10 2013 \n", + "조평호 0.418 0.736 0.329 0.09 2013 \n", + "박민우 0.286 0.619 0.296 0.07 2013 \n", + "박정준 0.353 0.688 0.320 0.06 2013 \n", + "이승호 - - 0.712 0.06 2013 \n", + "마낙길 0.345 0.678 0.317 -0.03 2013 \n", + "김성욱 0.250 0.500 0.234 -0.03 2013 \n", + "강구성 0.000 0.000 0.000 -0.06 2013 \n", + "지석훈 0.330 0.630 0.293 -0.09 2013 \n", + "김종찬 0.143 0.286 0.134 -0.11 2013 \n", + "차화준 0.311 0.617 0.289 -0.12 2013 \n", + "김동건 0.313 0.489 0.216 -0.14 2013 \n", + "이창섭 0.000 0.000 0.000 -0.14 2013 \n", + "테임즈 0.688 1.11 0.456 6.36 2014 \n", + "나성범 0.597 0.997 0.424 5.94 2014 \n", + "박민우 0.399 0.791 0.365 2.73 2014 \n", + "손시헌 0.414 0.782 0.349 1.52 2014 \n", + "지석훈 0.462 0.802 0.352 0.97 2014 \n", + "이호준 0.481 0.852 0.369 0.88 2014 \n", + "권희동 0.443 0.806 0.353 0.62 2014 \n", + "모창민 0.413 0.733 0.319 0.17 2014 \n", + "이종욱 0.411 0.754 0.332 0.13 2014 \n", + "김준완 0.5 1.1 0.509 0.11 2014 \n", + "최재원 0 0.5 0.363 0.01 2014 \n", + "마낙길 0 0.5 0.363 0.01 2014 \n", + "조영훈 0.459 0.784 0.337 -0.02 2014 \n", + "김태우 0.4 0.6 0.244 -0.03 2014 \n", + "박명환* 0 0 0.000 -0.03 2014 \n", + "조평호 0 0 0.000 -0.07 2014 \n", + "강민국 0 0 0.000 -0.10 2014 \n", + "허준 0.276 0.57 0.268 -0.11 2014 \n", + "김성욱 0.348 0.617 0.272 -0.15 2014 \n", + "노진혁 0.375 0.563 0.231 -0.18 2014 \n", + "테임즈 0.79 1.287 0.520 11.73 2015 \n", + "나성범 0.553 0.926 0.390 4.46 2015 \n", + "박민우 0.404 0.803 0.364 3.52 2015 \n", + "이호준 0.51 0.891 0.381 2.19 2015 \n", + "김종호 0.394 0.758 0.340 1.03 2015 \n", + "조영훈 0.54 0.912 0.389 1.00 2015 \n", + "손시헌 0.398 0.717 0.316 0.85 2015 \n", + "이종욱 0.368 0.719 0.322 0.84 2015 \n", + "모창민 0.439 0.779 0.340 0.76 2015 \n", + "지석훈 0.383 0.711 0.317 0.51 2015 \n", + "용덕한 0.31 0.685 0.326 0.44 2015 \n", + "최재원 0.412 0.778 0.350 0.30 2015 \n", + "박정준 0.476 0.934 0.417 0.25 2015 \n", + "김태군 0.354 0.661 0.294 0.25 2015 \n", + "조평호 0.591 0.955 0.401 0.18 2015 \n", + "이창섭 0 0.375 0.286 -0.01 2015 \n", + "김준완 0.227 0.597 0.308 -0.04 2015 \n", + "강구성 0.4 0.6 0.242 -0.04 2015 \n", + "강민국 0 0 0.000 -0.06 2015 \n", + "김태진 0 0 0.000 -0.09 2015 " + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 선수 이름 순서가 년도별로 다르므로 올바른 데이터 합치기가 아니다\n", + "pd.concat([NC13, NC14, NC15])" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "NC13=NC13.set_index('선수명')\n", + "NC14=NC14.set_index('선수명')\n", + "NC15=NC15.set_index('선수명')" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "homerun = pd.concat([NC13.홈런, NC14.홈런, NC15.홈런], axis = 1, sort = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "scrolled": true + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
201320142015
강구성0.0NaN0.0
강민국NaN0.00.0
강진성0.0NaNNaN
권희동NaN7.0NaN
김동건1.0NaNNaN
김성욱0.01.0NaN
김종찬0.0NaNNaN
김종호0.0NaN4.0
김준완NaN0.00.0
김태군NaNNaN6.0
김태우NaN0.0NaN
김태진NaNNaN0.0
나성범14.030.028.0
노진혁NaN1.0NaN
마낙길0.00.0NaN
모창민12.016.06.0
박명환*NaN0.0NaN
박민우0.01.03.0
박정준4.0NaN0.0
손시헌NaN5.013.0
용덕한NaNNaN0.0
이상호0.0NaNNaN
이승호0.0NaNNaN
이종욱NaN6.05.0
이창섭0.0NaN0.0
이현곤0.0NaNNaN
이호준20.023.024.0
조영훈6.06.08.0
조평호2.00.01.0
지석훈3.06.011.0
차화준1.0NaNNaN
최재원NaN0.02.0
테임즈NaN37.047.0
허준NaN0.0NaN
\n", + "
" + ], + "text/plain": [ + " 2013 2014 2015\n", + "강구성 0.0 NaN 0.0\n", + "강민국 NaN 0.0 0.0\n", + "강진성 0.0 NaN NaN\n", + "권희동 NaN 7.0 NaN\n", + "김동건 1.0 NaN NaN\n", + "김성욱 0.0 1.0 NaN\n", + "김종찬 0.0 NaN NaN\n", + "김종호 0.0 NaN 4.0\n", + "김준완 NaN 0.0 0.0\n", + "김태군 NaN NaN 6.0\n", + "김태우 NaN 0.0 NaN\n", + "김태진 NaN NaN 0.0\n", + "나성범 14.0 30.0 28.0\n", + "노진혁 NaN 1.0 NaN\n", + "마낙길 0.0 0.0 NaN\n", + "모창민 12.0 16.0 6.0\n", + "박명환* NaN 0.0 NaN\n", + "박민우 0.0 1.0 3.0\n", + "박정준 4.0 NaN 0.0\n", + "손시헌 NaN 5.0 13.0\n", + "용덕한 NaN NaN 0.0\n", + "이상호 0.0 NaN NaN\n", + "이승호 0.0 NaN NaN\n", + "이종욱 NaN 6.0 5.0\n", + "이창섭 0.0 NaN 0.0\n", + "이현곤 0.0 NaN NaN\n", + "이호준 20.0 23.0 24.0\n", + "조영훈 6.0 6.0 8.0\n", + "조평호 2.0 0.0 1.0\n", + "지석훈 3.0 6.0 11.0\n", + "차화준 1.0 NaN NaN\n", + "최재원 NaN 0.0 2.0\n", + "테임즈 NaN 37.0 47.0\n", + "허준 NaN 0.0 NaN" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "homerun.columns = [2013,2014,2015]\n", + "homerun" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "scrolled": true + }, + "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", + "
201320142015
나성범14.030.028.0
노진혁NaN1.0NaN
마낙길0.00.0NaN
모창민12.016.06.0
박명환*NaN0.0NaN
박민우0.01.03.0
박정준4.0NaN0.0
\n", + "
" + ], + "text/plain": [ + " 2013 2014 2015\n", + "나성범 14.0 30.0 28.0\n", + "노진혁 NaN 1.0 NaN\n", + "마낙길 0.0 0.0 NaN\n", + "모창민 12.0 16.0 6.0\n", + "박명환* NaN 0.0 NaN\n", + "박민우 0.0 1.0 3.0\n", + "박정준 4.0 NaN 0.0" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "homerun.loc['나성범':'박정준']" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "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", + "
201320142015
나성범14.030.028.0
모창민12.016.06.0
이호준20.023.024.0
\n", + "
" + ], + "text/plain": [ + " 2013 2014 2015\n", + "나성범 14.0 30.0 28.0\n", + "모창민 12.0 16.0 6.0\n", + "이호준 20.0 23.0 24.0" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2013년도 홈런 10개 이상\n", + "homerun[homerun[2013]>=10]" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
201320142015
강구성0-0
강민국-00
강진성0--
권희동-7-
김동건1--
김성욱01-
김종찬0--
김종호0-4
김준완-00
김태군--6
김태우-0-
김태진--0
나성범143028
노진혁-1-
마낙길00-
모창민12166
박명환*-0-
박민우013
박정준4-0
손시헌-513
용덕한--0
이상호0--
이승호0--
이종욱-65
이창섭0-0
이현곤0--
이호준202324
조영훈668
조평호201
지석훈3611
차화준1--
최재원-02
테임즈-3747
허준-0-
\n", + "
" + ], + "text/plain": [ + " 2013 2014 2015\n", + "강구성 0 - 0\n", + "강민국 - 0 0\n", + "강진성 0 - -\n", + "권희동 - 7 -\n", + "김동건 1 - -\n", + "김성욱 0 1 -\n", + "김종찬 0 - -\n", + "김종호 0 - 4\n", + "김준완 - 0 0\n", + "김태군 - - 6\n", + "김태우 - 0 -\n", + "김태진 - - 0\n", + "나성범 14 30 28\n", + "노진혁 - 1 -\n", + "마낙길 0 0 -\n", + "모창민 12 16 6\n", + "박명환* - 0 -\n", + "박민우 0 1 3\n", + "박정준 4 - 0\n", + "손시헌 - 5 13\n", + "용덕한 - - 0\n", + "이상호 0 - -\n", + "이승호 0 - -\n", + "이종욱 - 6 5\n", + "이창섭 0 - 0\n", + "이현곤 0 - -\n", + "이호준 20 23 24\n", + "조영훈 6 6 8\n", + "조평호 2 0 1\n", + "지석훈 3 6 11\n", + "차화준 1 - -\n", + "최재원 - 0 2\n", + "테임즈 - 37 47\n", + "허준 - 0 -" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "homerun.fillna('-')" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "강구성 0.0\n", + "강민국 0.0\n", + "강진성 NaN\n", + "권희동 NaN\n", + "김동건 NaN\n", + "김성욱 NaN\n", + "김종찬 NaN\n", + "김종호 4.0\n", + "김준완 0.0\n", + "김태군 6.0\n", + "김태우 NaN\n", + "김태진 0.0\n", + "나성범 28.0\n", + "노진혁 NaN\n", + "마낙길 NaN\n", + "모창민 6.0\n", + "박명환* NaN\n", + "박민우 3.0\n", + "박정준 0.0\n", + "손시헌 13.0\n", + "용덕한 0.0\n", + "이상호 NaN\n", + "이승호 NaN\n", + "이종욱 5.0\n", + "이창섭 0.0\n", + "이현곤 NaN\n", + "이호준 24.0\n", + "조영훈 8.0\n", + "조평호 1.0\n", + "지석훈 11.0\n", + "차화준 NaN\n", + "최재원 2.0\n", + "테임즈 47.0\n", + "허준 NaN\n", + "Name: 2015, dtype: float64" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "homerun[2015]" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2013 14.0\n", + "2014 30.0\n", + "2015 28.0\n", + "Name: 나성범, dtype: float64" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 나성범 선수 데이터\n", + "homerun.loc['나성범']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 5. \353\215\260\354\235\264\355\204\260 \352\260\200\352\263\265 2 - \354\202\260\354\210\240 \354\227\260\354\202\260, \354\273\254\353\237\274 \354\266\224\352\260\200, \355\225\250\354\210\230 \354\240\201\354\232\251.ipynb" "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 5. \353\215\260\354\235\264\355\204\260 \352\260\200\352\263\265 2 - \354\202\260\354\210\240 \354\227\260\354\202\260, \354\273\254\353\237\274 \354\266\224\352\260\200, \355\225\250\354\210\230 \354\240\201\354\232\251.ipynb" new file mode 100644 index 0000000..cebb14c --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 5. \353\215\260\354\235\264\355\204\260 \352\260\200\352\263\265 2 - \354\202\260\354\210\240 \354\227\260\354\202\260, \354\273\254\353\237\274 \354\266\224\352\260\200, \355\225\250\354\210\230 \354\240\201\354\232\251.ipynb" @@ -0,0 +1,3285 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pandas import Series, DataFrame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5-1. 산술연산\n", + "## 1) Series 산술연산\n", + "### - 같은 인덱스 라벨을 가진 항목끼리 산술 연산을 수행함.\n", + "### - 겹치는 인덱스가 없다면, 데이터는 NA가 된다. \n", + "\"산술연산표\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "sr1 = Series([1,2,3], index = list('abc'))\n", + "sr2 = Series([4,5,6], index = list('abd'))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "a 4.0\n", + "b 10.0\n", + "c NaN\n", + "d NaN\n", + "dtype: float64" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sr1*sr2" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 5.0\n", + "b 7.0\n", + "c NaN\n", + "d NaN\n", + "dtype: float64" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sr1.add(sr2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "#같은 인덱스 라벨을 가진 항목끼리 산술 연산을 수행함.\n", + "#겹치는 인덱스가 없다면, 데이터는 NA가 된다. \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#sr1 + sr2와 동일하지만, 함수로 사용하는 경우에는 다양한 파라미터 설정이 가능해짐.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#산술 연산 시, 데이터가 없는 경우 fill_value인자의 값으로 간주함.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2) DataFrame 산술연산" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "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", + "
bcd
Ohio012
Texas345
Colorado678
\n", + "
" + ], + "text/plain": [ + " b c d\n", + "Ohio 0 1 2\n", + "Texas 3 4 5\n", + "Colorado 6 7 8" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "arr1 = [[0, 1, 2],\n", + " [3, 4, 5],\n", + " [6, 7, 8]]\n", + "df1 = DataFrame(arr1, columns = list('bcd'), index = ['Ohio', 'Texas', 'Colorado'])\n", + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": true + }, + "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", + "
bde
Utah012
Ohio345
Texas678
Oregon91011
\n", + "
" + ], + "text/plain": [ + " b d e\n", + "Utah 0 1 2\n", + "Ohio 3 4 5\n", + "Texas 6 7 8\n", + "Oregon 9 10 11" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "arr2 = [[ 0, 1, 2],\n", + " [ 3, 4, 5],\n", + " [ 6, 7, 8],\n", + " [ 9, 10, 11]]\n", + "df2 = DataFrame(arr2, columns = list('bde'), index = ['Utah', 'Ohio', 'Texas', 'Oregon'])\n", + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "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", + "
bcde
ColoradoNaNNaNNaNNaN
Ohio3.0NaN6.0NaN
OregonNaNNaNNaNNaN
Texas9.0NaN12.0NaN
UtahNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " b c d e\n", + "Colorado NaN NaN NaN NaN\n", + "Ohio 3.0 NaN 6.0 NaN\n", + "Oregon NaN NaN NaN NaN\n", + "Texas 9.0 NaN 12.0 NaN\n", + "Utah NaN NaN NaN NaN" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 동일 값인 부분만 연산\n", + "df1+df2\n", + "df1.add(df2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# 컬럼과 로우 인덱스 모두 동일한 항목끼리 연산이 수행됨.\n", + "# 둘 중 하나라도 없으면 NaN \n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "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", + "
bcde
Colorado6.07.08.0NaN
Ohio3.01.06.05.0
Oregon9.0NaN10.011.0
Texas9.04.012.08.0
Utah0.0NaN1.02.0
\n", + "
" + ], + "text/plain": [ + " b c d e\n", + "Colorado 6.0 7.0 8.0 NaN\n", + "Ohio 3.0 1.0 6.0 5.0\n", + "Oregon 9.0 NaN 10.0 11.0\n", + "Texas 9.0 4.0 12.0 8.0\n", + "Utah 0.0 NaN 1.0 2.0" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1.add(df2,fill_value = 0)\n", + "#fill_value = <값> : Missing Value를 <값>으로 간주함. 두 데이터프레임에 모두 없는 경우에는 결과도 Missing\n", + "# http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.add.html#pandas.DataFrame.add" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## DataFrame 산술 연산\n", + "\"Add\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3) DataFrame과 Series 간의 연산\n", + "\n", + "### 기본적으로 DataFrame과 Series 간의 산술연산은 Series의 색인을 DataFrame의 칼럼에 맞추고 아래로 전파한다." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "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", + "
ABCD
X1357
Y2468
Z10203040
\n", + "
" + ], + "text/plain": [ + " A B C D\n", + "X 1 3 5 7\n", + "Y 2 4 6 8\n", + "Z 10 20 30 40" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = DataFrame([[1,3, 5, 7],[2,4, 6, 8], [10, 20, 30, 40]], \n", + " columns = list('ABCD'), index = ['X','Y','Z'])\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "A 10\n", + "B 20\n", + "C 30\n", + "D 40\n", + "dtype: int64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#A, B, C, D 컬럼 각각에 10, 20, 30, 40을 더하기\n", + "sr = Series([10,20,30,40], index= ['A','B','C','D'])\n", + "sr" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true + }, + "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", + "
ABCD
X11233547
Y12243648
Z20406080
\n", + "
" + ], + "text/plain": [ + " A B C D\n", + "X 11 23 35 47\n", + "Y 12 24 36 48\n", + "Z 20 40 60 80" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "df+sr\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.add(sr)\n", + "df.add(sr, axis = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#실습. X,Y,Z 로우에 각각에 10, 100, 1000을 더하시오." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "X 10\n", + "Y 100\n", + "Z 1000\n", + "dtype: int64" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sr2= Series([10,100,1000], index = ['X','Y','Z'])\n", + "sr2" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "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", + "
ABCD
X11131517
Y102104106108
Z1010102010301040
\n", + "
" + ], + "text/plain": [ + " A B C D\n", + "X 11 13 15 17\n", + "Y 102 104 106 108\n", + "Z 1010 1020 1030 1040" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.add(sr2, axis = 0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4) 함수 적용과 매핑\n", + "\n", + "### apply() :각 로우나 컬럼의 1차원 배열에 함수를 적용\n", + "### applymap() : 각 항목에 함수를 적용" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 4-1) apply() 함수" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "def diff(x):\n", + " return x.max()-x.min()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 3-1\n", + "diff(sr1)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "a 1\n", + "b 2\n", + "c 3\n", + "dtype: int64" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sr1" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "b 6\n", + "c 6\n", + "d 6\n", + "dtype: int64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1.apply(diff)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": true + }, + "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", + "
bcd
Ohio012
Texas345
Colorado678
\n", + "
" + ], + "text/plain": [ + " b c d\n", + "Ohio 0 1 2\n", + "Texas 3 4 5\n", + "Colorado 6 7 8" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Ohio 2\n", + "Texas 2\n", + "Colorado 2\n", + "dtype: int64" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1.apply(diff, axis = 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### 4-2) applymap() 함수" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "def mul2(x):\n", + " return x*2\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "scrolled": true + }, + "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", + "
bcd
Ohio012
Texas345
Colorado678
\n", + "
" + ], + "text/plain": [ + " b c d\n", + "Ohio 0 1 2\n", + "Texas 3 4 5\n", + "Colorado 6 7 8" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "scrolled": true + }, + "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", + "
bcd
Ohio024
Texas6810
Colorado121416
\n", + "
" + ], + "text/plain": [ + " b c d\n", + "Ohio 0 2 4\n", + "Texas 6 8 10\n", + "Colorado 12 14 16" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1.applymap(mul2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "b 6\n", + "c 6\n", + "d 6\n", + "dtype: int64" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "diff(df1)\n", + "# df1.apply(diff)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "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", + "
bcd
Ohio024
Texas6810
Colorado121416
\n", + "
" + ], + "text/plain": [ + " b c d\n", + "Ohio 0 2 4\n", + "Texas 6 8 10\n", + "Colorado 12 14 16" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mul2(df1)\n", + "# df1.applymap(mul2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. 컬럼 추가하기" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "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", + "
bcd
Ohio012
Texas345
Colorado678
\n", + "
" + ], + "text/plain": [ + " b c d\n", + "Ohio 0 1 2\n", + "Texas 3 4 5\n", + "Colorado 6 7 8" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "# 동일 값 할당 시에는 특정 스칼라 값을 입력하면 broadcasting \n", + "df1['e']=10" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "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", + "
bcdef
Ohio0121012
Texas3451015
Colorado6781018
\n", + "
" + ], + "text/plain": [ + " b c d e f\n", + "Ohio 0 1 2 10 12\n", + "Texas 3 4 5 10 15\n", + "Colorado 6 7 8 10 18" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1['f']=df1['d']+df1['e']\n", + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "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", + "
bcdefg
Ohio01210120
Texas34510153
Colorado67810186
\n", + "
" + ], + "text/plain": [ + " b c d e f g\n", + "Ohio 0 1 2 10 12 0\n", + "Texas 3 4 5 10 15 3\n", + "Colorado 6 7 8 10 18 6" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#실습. df1에 'g'라는 새로운 컬럼을 추가하고, 값은 각 로우(row)에 있는 값들 중 가장 작은 값으로 할당\n", + "\n", + " \n", + "df1['g']=df1.apply(min, axis=1)\n", + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
선수명팀명경기타석타수안타홈런득점타점볼넷삼진도루BABIP타율출루율장타율OPSwOBAWAR
0모창민NC1084363951091257513768160.3070.2760.3390.4430.7820.3532.31
1이호준NC1265084421232046876010920.3240.2780.3620.4750.8370.3731.85
2김종호NC1285464651290722257100500.3520.2770.3760.3330.7090.3391.55
3나성범NC104458404981455643395120.2790.2430.3190.4160.7350.3291.50
4조영훈NC12042638010763839395640.3160.2820.3500.4130.7630.3480.83
5이현곤NC91161139380109161420.3040.2730.3610.3240.6850.3270.52
6이상호NC1021381253102613921240.2980.2480.2990.3200.6190.2890.16
7강진성NC33210101000.5000.5000.6671.0001.6670.6710.10
8조평호NC26867921212762410.3580.2660.3180.4180.7360.3290.09
9박민우NC3248421101065790.3060.2620.3330.2860.6190.2960.07
10박정준NC771951674142421234440.3030.2460.3350.3530.6880.3200.06
11이승호NC2100000101--1.000--0.7120.06
12마낙길NC24312990501520.3750.3100.3330.3450.6780.317-0.03
13김성욱NC44410010200.5000.2500.2500.2500.5000.234-0.03
14강구성NC22200000000.0000.0000.0000.0000.0000.000-0.06
15지석훈NC1043563096832535308220.2850.2200.3000.3300.6300.293-0.09
16김종찬NC57710000300.2500.1430.1430.1430.2860.134-0.11
17차화준NC58121106241187122940.2950.2260.3060.3110.6170.289-0.12
18김동건NC7171621111700.1250.1250.1760.3130.4890.216-0.14
19이창섭NC55500000200.0000.0000.0000.0000.0000.000-0.14
\n", + "
" + ], + "text/plain": [ + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 출루율 \\\n", + "0 모창민 NC 108 436 395 109 12 57 51 37 68 16 0.307 0.276 0.339 \n", + "1 이호준 NC 126 508 442 123 20 46 87 60 109 2 0.324 0.278 0.362 \n", + "2 김종호 NC 128 546 465 129 0 72 22 57 100 50 0.352 0.277 0.376 \n", + "3 나성범 NC 104 458 404 98 14 55 64 33 95 12 0.279 0.243 0.319 \n", + "4 조영훈 NC 120 426 380 107 6 38 39 39 56 4 0.316 0.282 0.350 \n", + "5 이현곤 NC 91 161 139 38 0 10 9 16 14 2 0.304 0.273 0.361 \n", + "6 이상호 NC 102 138 125 31 0 26 13 9 21 24 0.298 0.248 0.299 \n", + "7 강진성 NC 3 3 2 1 0 1 0 1 0 0 0.500 0.500 0.667 \n", + "8 조평호 NC 26 86 79 21 2 12 7 6 24 1 0.358 0.266 0.318 \n", + "9 박민우 NC 32 48 42 11 0 10 6 5 7 9 0.306 0.262 0.333 \n", + "10 박정준 NC 77 195 167 41 4 24 21 23 44 4 0.303 0.246 0.335 \n", + "11 이승호 NC 2 1 0 0 0 0 0 1 0 1 - - 1.000 \n", + "12 마낙길 NC 24 31 29 9 0 5 0 1 5 2 0.375 0.310 0.333 \n", + "13 김성욱 NC 4 4 4 1 0 0 1 0 2 0 0.500 0.250 0.250 \n", + "14 강구성 NC 2 2 2 0 0 0 0 0 0 0 0.000 0.000 0.000 \n", + "15 지석훈 NC 104 356 309 68 3 25 35 30 82 2 0.285 0.220 0.300 \n", + "16 김종찬 NC 5 7 7 1 0 0 0 0 3 0 0.250 0.143 0.143 \n", + "17 차화준 NC 58 121 106 24 1 18 7 12 29 4 0.295 0.226 0.306 \n", + "18 김동건 NC 7 17 16 2 1 1 1 1 7 0 0.125 0.125 0.176 \n", + "19 이창섭 NC 5 5 5 0 0 0 0 0 2 0 0.000 0.000 0.000 \n", + "\n", + " 장타율 OPS wOBA WAR \n", + "0 0.443 0.782 0.353 2.31 \n", + "1 0.475 0.837 0.373 1.85 \n", + "2 0.333 0.709 0.339 1.55 \n", + "3 0.416 0.735 0.329 1.50 \n", + "4 0.413 0.763 0.348 0.83 \n", + "5 0.324 0.685 0.327 0.52 \n", + "6 0.320 0.619 0.289 0.16 \n", + "7 1.000 1.667 0.671 0.10 \n", + "8 0.418 0.736 0.329 0.09 \n", + "9 0.286 0.619 0.296 0.07 \n", + "10 0.353 0.688 0.320 0.06 \n", + "11 - - 0.712 0.06 \n", + "12 0.345 0.678 0.317 -0.03 \n", + "13 0.250 0.500 0.234 -0.03 \n", + "14 0.000 0.000 0.000 -0.06 \n", + "15 0.330 0.630 0.293 -0.09 \n", + "16 0.143 0.286 0.134 -0.11 \n", + "17 0.311 0.617 0.289 -0.12 \n", + "18 0.313 0.489 0.216 -0.14 \n", + "19 0.000 0.000 0.000 -0.14 " + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습을 위한 데이터 읽기 (NC Dinos.xlsx의 첫번째 시트값만 읽어오기)\n", + "# 첫번째 시트는 2013년도 선수 기록 정보\n", + "NC = pd.read_excel('data/NC Dinos.xlsx')\n", + "NC" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
선수명팀명경기타석타수안타홈런득점타점볼넷삼진도루BABIP타율출루율장타율OPSwOBAWAR연도
0모창민NC1084363951091257513768160.3070.2760.3390.4430.7820.3532.312013
1이호준NC1265084421232046876010920.3240.2780.3620.4750.8370.3731.852013
2김종호NC1285464651290722257100500.3520.2770.3760.3330.7090.3391.552013
3나성범NC104458404981455643395120.2790.2430.3190.4160.7350.3291.502013
4조영훈NC12042638010763839395640.3160.2820.3500.4130.7630.3480.832013
5이현곤NC91161139380109161420.3040.2730.3610.3240.6850.3270.522013
6이상호NC1021381253102613921240.2980.2480.2990.3200.6190.2890.162013
7강진성NC33210101000.5000.5000.6671.0001.6670.6710.102013
8조평호NC26867921212762410.3580.2660.3180.4180.7360.3290.092013
9박민우NC3248421101065790.3060.2620.3330.2860.6190.2960.072013
10박정준NC771951674142421234440.3030.2460.3350.3530.6880.3200.062013
11이승호NC2100000101--1.000--0.7120.062013
12마낙길NC24312990501520.3750.3100.3330.3450.6780.317-0.032013
13김성욱NC44410010200.5000.2500.2500.2500.5000.234-0.032013
14강구성NC22200000000.0000.0000.0000.0000.0000.000-0.062013
15지석훈NC1043563096832535308220.2850.2200.3000.3300.6300.293-0.092013
16김종찬NC57710000300.2500.1430.1430.1430.2860.134-0.112013
17차화준NC58121106241187122940.2950.2260.3060.3110.6170.289-0.122013
18김동건NC7171621111700.1250.1250.1760.3130.4890.216-0.142013
19이창섭NC55500000200.0000.0000.0000.0000.0000.000-0.142013
\n", + "
" + ], + "text/plain": [ + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 출루율 \\\n", + "0 모창민 NC 108 436 395 109 12 57 51 37 68 16 0.307 0.276 0.339 \n", + "1 이호준 NC 126 508 442 123 20 46 87 60 109 2 0.324 0.278 0.362 \n", + "2 김종호 NC 128 546 465 129 0 72 22 57 100 50 0.352 0.277 0.376 \n", + "3 나성범 NC 104 458 404 98 14 55 64 33 95 12 0.279 0.243 0.319 \n", + "4 조영훈 NC 120 426 380 107 6 38 39 39 56 4 0.316 0.282 0.350 \n", + "5 이현곤 NC 91 161 139 38 0 10 9 16 14 2 0.304 0.273 0.361 \n", + "6 이상호 NC 102 138 125 31 0 26 13 9 21 24 0.298 0.248 0.299 \n", + "7 강진성 NC 3 3 2 1 0 1 0 1 0 0 0.500 0.500 0.667 \n", + "8 조평호 NC 26 86 79 21 2 12 7 6 24 1 0.358 0.266 0.318 \n", + "9 박민우 NC 32 48 42 11 0 10 6 5 7 9 0.306 0.262 0.333 \n", + "10 박정준 NC 77 195 167 41 4 24 21 23 44 4 0.303 0.246 0.335 \n", + "11 이승호 NC 2 1 0 0 0 0 0 1 0 1 - - 1.000 \n", + "12 마낙길 NC 24 31 29 9 0 5 0 1 5 2 0.375 0.310 0.333 \n", + "13 김성욱 NC 4 4 4 1 0 0 1 0 2 0 0.500 0.250 0.250 \n", + "14 강구성 NC 2 2 2 0 0 0 0 0 0 0 0.000 0.000 0.000 \n", + "15 지석훈 NC 104 356 309 68 3 25 35 30 82 2 0.285 0.220 0.300 \n", + "16 김종찬 NC 5 7 7 1 0 0 0 0 3 0 0.250 0.143 0.143 \n", + "17 차화준 NC 58 121 106 24 1 18 7 12 29 4 0.295 0.226 0.306 \n", + "18 김동건 NC 7 17 16 2 1 1 1 1 7 0 0.125 0.125 0.176 \n", + "19 이창섭 NC 5 5 5 0 0 0 0 0 2 0 0.000 0.000 0.000 \n", + "\n", + " 장타율 OPS wOBA WAR 연도 \n", + "0 0.443 0.782 0.353 2.31 2013 \n", + "1 0.475 0.837 0.373 1.85 2013 \n", + "2 0.333 0.709 0.339 1.55 2013 \n", + "3 0.416 0.735 0.329 1.50 2013 \n", + "4 0.413 0.763 0.348 0.83 2013 \n", + "5 0.324 0.685 0.327 0.52 2013 \n", + "6 0.320 0.619 0.289 0.16 2013 \n", + "7 1.000 1.667 0.671 0.10 2013 \n", + "8 0.418 0.736 0.329 0.09 2013 \n", + "9 0.286 0.619 0.296 0.07 2013 \n", + "10 0.353 0.688 0.320 0.06 2013 \n", + "11 - - 0.712 0.06 2013 \n", + "12 0.345 0.678 0.317 -0.03 2013 \n", + "13 0.250 0.500 0.234 -0.03 2013 \n", + "14 0.000 0.000 0.000 -0.06 2013 \n", + "15 0.330 0.630 0.293 -0.09 2013 \n", + "16 0.143 0.286 0.134 -0.11 2013 \n", + "17 0.311 0.617 0.289 -0.12 2013 \n", + "18 0.313 0.489 0.216 -0.14 2013 \n", + "19 0.000 0.000 0.000 -0.14 2013 " + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습. '연도' 라는 새로운 컬럼을 추가하고, 값을 2013 으로 초기화하기\n", + "NC['연도']=2013\n", + "NC" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
선수명팀명경기타석타수안타홈런득점타점볼넷...도루BABIP타율출루율장타율OPSwOBAWAR연도안타홈런
0모창민NC10843639510912575137...160.3070.2760.3390.4430.7820.3532.312013121
1이호준NC12650844212320468760...20.3240.2780.3620.4750.8370.3731.852013143
2김종호NC1285464651290722257...500.3520.2770.3760.3330.7090.3391.552013129
3나성범NC1044584049814556433...120.2790.2430.3190.4160.7350.3291.502013112
4조영훈NC1204263801076383939...40.3160.2820.3500.4130.7630.3480.832013113
5이현곤NC9116113938010916...20.3040.2730.3610.3240.6850.3270.52201338
6이상호NC10213812531026139...240.2980.2480.2990.3200.6190.2890.16201331
7강진성NC33210101...00.5000.5000.6671.0001.6670.6710.1020131
8조평호NC2686792121276...10.3580.2660.3180.4180.7360.3290.09201323
9박민우NC3248421101065...90.3060.2620.3330.2860.6190.2960.07201311
10박정준NC77195167414242123...40.3030.2460.3350.3530.6880.3200.06201345
11이승호NC21000001...1--1.000--0.7120.0620130
12마낙길NC24312990501...20.3750.3100.3330.3450.6780.317-0.0320139
13김성욱NC44410010...00.5000.2500.2500.2500.5000.234-0.0320131
14강구성NC22200000...00.0000.0000.0000.0000.0000.000-0.0620130
15지석훈NC104356309683253530...20.2850.2200.3000.3300.6300.293-0.09201371
16김종찬NC57710000...00.2500.1430.1430.1430.2860.134-0.1120131
17차화준NC5812110624118712...40.2950.2260.3060.3110.6170.289-0.12201325
18김동건NC7171621111...00.1250.1250.1760.3130.4890.216-0.1420133
19이창섭NC55500000...00.0000.0000.0000.0000.0000.000-0.1420130
\n", + "

20 rows × 21 columns

\n", + "
" + ], + "text/plain": [ + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 ... 도루 BABIP 타율 \\\n", + "0 모창민 NC 108 436 395 109 12 57 51 37 ... 16 0.307 0.276 \n", + "1 이호준 NC 126 508 442 123 20 46 87 60 ... 2 0.324 0.278 \n", + "2 김종호 NC 128 546 465 129 0 72 22 57 ... 50 0.352 0.277 \n", + "3 나성범 NC 104 458 404 98 14 55 64 33 ... 12 0.279 0.243 \n", + "4 조영훈 NC 120 426 380 107 6 38 39 39 ... 4 0.316 0.282 \n", + "5 이현곤 NC 91 161 139 38 0 10 9 16 ... 2 0.304 0.273 \n", + "6 이상호 NC 102 138 125 31 0 26 13 9 ... 24 0.298 0.248 \n", + "7 강진성 NC 3 3 2 1 0 1 0 1 ... 0 0.500 0.500 \n", + "8 조평호 NC 26 86 79 21 2 12 7 6 ... 1 0.358 0.266 \n", + "9 박민우 NC 32 48 42 11 0 10 6 5 ... 9 0.306 0.262 \n", + "10 박정준 NC 77 195 167 41 4 24 21 23 ... 4 0.303 0.246 \n", + "11 이승호 NC 2 1 0 0 0 0 0 1 ... 1 - - \n", + "12 마낙길 NC 24 31 29 9 0 5 0 1 ... 2 0.375 0.310 \n", + "13 김성욱 NC 4 4 4 1 0 0 1 0 ... 0 0.500 0.250 \n", + "14 강구성 NC 2 2 2 0 0 0 0 0 ... 0 0.000 0.000 \n", + "15 지석훈 NC 104 356 309 68 3 25 35 30 ... 2 0.285 0.220 \n", + "16 김종찬 NC 5 7 7 1 0 0 0 0 ... 0 0.250 0.143 \n", + "17 차화준 NC 58 121 106 24 1 18 7 12 ... 4 0.295 0.226 \n", + "18 김동건 NC 7 17 16 2 1 1 1 1 ... 0 0.125 0.125 \n", + "19 이창섭 NC 5 5 5 0 0 0 0 0 ... 0 0.000 0.000 \n", + "\n", + " 출루율 장타율 OPS wOBA WAR 연도 안타홈런 \n", + "0 0.339 0.443 0.782 0.353 2.31 2013 121 \n", + "1 0.362 0.475 0.837 0.373 1.85 2013 143 \n", + "2 0.376 0.333 0.709 0.339 1.55 2013 129 \n", + "3 0.319 0.416 0.735 0.329 1.50 2013 112 \n", + "4 0.350 0.413 0.763 0.348 0.83 2013 113 \n", + "5 0.361 0.324 0.685 0.327 0.52 2013 38 \n", + "6 0.299 0.320 0.619 0.289 0.16 2013 31 \n", + "7 0.667 1.000 1.667 0.671 0.10 2013 1 \n", + "8 0.318 0.418 0.736 0.329 0.09 2013 23 \n", + "9 0.333 0.286 0.619 0.296 0.07 2013 11 \n", + "10 0.335 0.353 0.688 0.320 0.06 2013 45 \n", + "11 1.000 - - 0.712 0.06 2013 0 \n", + "12 0.333 0.345 0.678 0.317 -0.03 2013 9 \n", + "13 0.250 0.250 0.500 0.234 -0.03 2013 1 \n", + "14 0.000 0.000 0.000 0.000 -0.06 2013 0 \n", + "15 0.300 0.330 0.630 0.293 -0.09 2013 71 \n", + "16 0.143 0.143 0.286 0.134 -0.11 2013 1 \n", + "17 0.306 0.311 0.617 0.289 -0.12 2013 25 \n", + "18 0.176 0.313 0.489 0.216 -0.14 2013 3 \n", + "19 0.000 0.000 0.000 0.000 -0.14 2013 0 \n", + "\n", + "[20 rows x 21 columns]" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습. 안타와 홈런의 수를 합한 값을 '안타홈런'이라는 컬럼으로 추가\n", + "NC['안타홈런']=NC['안타']+NC['홈런']\n", + "\n", + "NC" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "def 안타홈런더하기 (x):\n", + " return x.홈런+x.안타" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "NC['안타홈런2']=NC.apply(안타홈런더하기, axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 6. \353\215\260\354\235\264\355\204\260 \352\260\200\352\263\265 3 - \352\263\204\354\270\265 \354\203\211\354\235\270 (1).ipynb" "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 6. \353\215\260\354\235\264\355\204\260 \352\260\200\352\263\265 3 - \352\263\204\354\270\265 \354\203\211\354\235\270 (1).ipynb" new file mode 100644 index 0000000..7c0fd03 --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 6. \353\215\260\354\235\264\355\204\260 \352\260\200\352\263\265 3 - \352\263\204\354\270\265 \354\203\211\354\235\270 (1).ipynb" @@ -0,0 +1,3544 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pandas import Series, DataFrame\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6. 계층 색인 (다중 색인)\n", + "### 2개 이상의 색인(인덱스)를 지정할 수 있다. \n", + "### 차원이 높은 (고차원) 데이터를 낮은 차원의 형식으로 다룰 수 있게 해주는 기능" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# 샘플 데이터 생성\n", + "np.random.seed(0)\n", + "df = pd.DataFrame(np.random.randint(50, 100, (5, 4)), \n", + " columns=[[2016, 2016, 2017, 2017], ['영어','수학','영어','수학']], index = ['Kim','Park','Lee','Jung','Moon'])\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 3, + "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", + "
20162017
영어수학영어수학
Kim94975053
Park53895969
Lee71867356
Jung74746251
Moon88897396
\n", + "
" + ], + "text/plain": [ + " 2016 2017 \n", + " 영어 수학 영어 수학\n", + "Kim 94 97 50 53\n", + "Park 53 89 59 69\n", + "Lee 71 86 73 56\n", + "Jung 74 74 62 51\n", + "Moon 88 89 73 96" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6-1. 인덱싱" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "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", + "
영어수학
Kim9497
Park5389
Lee7186
Jung7474
Moon8889
\n", + "
" + ], + "text/plain": [ + " 영어 수학\n", + "Kim 94 97\n", + "Park 53 89\n", + "Lee 71 86\n", + "Jung 74 74\n", + "Moon 88 89" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#2016년 영어, 수학 성적 조회\n", + "df[2016]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Kim 94\n", + "Park 53\n", + "Lee 71\n", + "Jung 74\n", + "Moon 88\n", + "Name: (2016, 영어), dtype: int32" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#2016년 영어 성적만 조회\n", + "df[(2016,'영어')]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2016 영어 94\n", + " 수학 97\n", + "2017 영어 50\n", + " 수학 53\n", + "Name: Kim, dtype: int32" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Kim의 성적만 선택\n", + "df.loc['Kim']" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "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", + "
20162017
영어수학영어수학
Kim94975053
Park53895969
Lee71867356
\n", + "
" + ], + "text/plain": [ + " 2016 2017 \n", + " 영어 수학 영어 수학\n", + "Kim 94 97 50 53\n", + "Park 53 89 59 69\n", + "Lee 71 86 73 56" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습. Kim, Park, Lee의 성적만 선택\n", + "df.loc[['Kim','Park','Lee']]\n", + "df.loc['Kim':'Lee']\n", + "df['Kim':'Lee']\n", + "df.iloc[0:3]\n", + "df[0:3]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "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", + "
20162017
Kim9450
Park5359
Lee7173
Jung7462
Moon8873
\n", + "
" + ], + "text/plain": [ + " 2016 2017\n", + "Kim 94 50\n", + "Park 53 59\n", + "Lee 71 73\n", + "Jung 74 62\n", + "Moon 88 73" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 최상위 색인이 아닌 색인으로만 인덱싱하고 싶은 경우에는 xs() 함수를 사용.\n", + "# 2016, 2017년도 영어 성적만 선택\n", + "# level :계층 (최상위:0, 1, 2,...)\n", + "# axis (row: 0, col: 1)\n", + "df.xs('영어',axis=1, level = 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## 6-2. 메타데이터 설정 (set_names)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "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", + "
20162017
영어수학영어수학
학생명
Kim94975053
Park53895969
Lee71867356
Jung74746251
Moon88897396
\n", + "
" + ], + "text/plain": [ + " 2016 2017 \n", + " 영어 수학 영어 수학\n", + "학생명 \n", + "Kim 94 97 50 53\n", + "Park 53 89 59 69\n", + "Lee 71 86 73 56\n", + "Jung 74 74 62 51\n", + "Moon 88 89 73 96" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 인덱스에 이름 부여하기 (set_names)\n", + "# 로우 인덱스의 이름을 '학생명'이라고 정의하기\n", + "# inplace : True 시 로우 인덱스로 올라감 \n", + "df.index.set_names('학생명', inplace = True)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "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", + "
년도20162017
과목명영어수학영어수학
학생명
Kim94975053
Park53895969
Lee71867356
Jung74746251
Moon88897396
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017 \n", + "과목명 영어 수학 영어 수학\n", + "학생명 \n", + "Kim 94 97 50 53\n", + "Park 53 89 59 69\n", + "Lee 71 86 73 56\n", + "Jung 74 74 62 51\n", + "Moon 88 89 73 96" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습. 컬럼들의 이름을 각각 year와 subject로 정의하기\n", + "df.columns.set_names(['년도','과목명'], inplace= True)\n", + "df" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 6-3. 몇 가지 주요 함수들\n", + "### 1) swaplevel(index1, index2, axis)\n", + "##### index1과 index2의 위치를 변경함. \n", + "##### index1과 index2가 로우 인덱스인 경우, axis = 0, 컬럼인덱스면 1 (기본값은 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "scrolled": true + }, + "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", + "
과목명영어수학영어수학
년도2016201620172017
학생명
Kim94975053
Park53895969
Lee71867356
Jung74746251
Moon88897396
\n", + "
" + ], + "text/plain": [ + "과목명 영어 수학 영어 수학\n", + "년도 2016 2016 2017 2017\n", + "학생명 \n", + "Kim 94 97 50 53\n", + "Park 53 89 59 69\n", + "Lee 71 86 73 56\n", + "Jung 74 74 62 51\n", + "Moon 88 89 73 96" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# year과 subject의 위치를 변경\n", + "df.swaplevel('년도','과목명', axis = 1)" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
과목명영어수학영어수학
년도2016201620172017
학생명
Kim94975053
Park53895969
Lee71867356
Jung74746251
Moon88897396
\n", + "
" + ], + "text/plain": [ + "과목명 영어 수학 영어 수학\n", + "년도 2016 2016 2017 2017\n", + "학생명 \n", + "Kim 94 97 50 53\n", + "Park 53 89 59 69\n", + "Lee 71 86 73 56\n", + "Jung 74 74 62 51\n", + "Moon 88 89 73 96" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.swaplevel(0,1, axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2) stack(), unstack() 함수\n", + "### stack(level) : 컬럼 인덱스를 로우 인덱스로 옮길 때 사용.\n", + "### unstack(level): 로우 인덱스를 컬럼 인덱스로 옮길 때 사용.\n", + "### level 인자는 옮기고자 하는 인덱스의 위치를 표기함. 명시하지 않은 경우, 최하단의 인덱스를 이동시킴.\n", + "### level은 최상위가 0이고, 1씩 증가함" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "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", + "
년도20162017
과목명영어수학영어수학
학생명
Kim94975053
Park53895969
Lee71867356
Jung74746251
Moon88897396
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017 \n", + "과목명 영어 수학 영어 수학\n", + "학생명 \n", + "Kim 94 97 50 53\n", + "Park 53 89 59 69\n", + "Lee 71 86 73 56\n", + "Jung 74 74 62 51\n", + "Moon 88 89 73 96" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "scrolled": true + }, + "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", + "
년도20162017
학생명과목명
Kim수학9753
영어9450
Park수학8969
영어5359
Lee수학8656
영어7173
Jung수학7451
영어7462
Moon수학8996
영어8873
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017\n", + "학생명 과목명 \n", + "Kim 수학 97 53\n", + " 영어 94 50\n", + "Park 수학 89 69\n", + " 영어 53 59\n", + "Lee 수학 86 56\n", + " 영어 71 73\n", + "Jung 수학 74 51\n", + " 영어 74 62\n", + "Moon 수학 89 96\n", + " 영어 88 73" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.stack() # level 인자 : 기본값 = 최하위" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
년도20162017
학생명과목명
Kim수학9753
영어9450
Park수학8969
영어5359
Lee수학8656
영어7173
Jung수학7451
영어7462
Moon수학8996
영어8873
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017\n", + "학생명 과목명 \n", + "Kim 수학 97 53\n", + " 영어 94 50\n", + "Park 수학 89 69\n", + " 영어 53 59\n", + "Lee 수학 86 56\n", + " 영어 71 73\n", + "Jung 수학 74 51\n", + " 영어 74 62\n", + "Moon 수학 89 96\n", + " 영어 88 73" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.stack(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "scrolled": true + }, + "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", + "
년도20162017
학생명과목명
Kim수학9753
영어9450
Park수학8969
영어5359
Lee수학8656
영어7173
Jung수학7451
영어7462
Moon수학8996
영어8873
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017\n", + "학생명 과목명 \n", + "Kim 수학 97 53\n", + " 영어 94 50\n", + "Park 수학 89 69\n", + " 영어 53 59\n", + "Lee 수학 86 56\n", + " 영어 71 73\n", + "Jung 수학 74 51\n", + " 영어 74 62\n", + "Moon 수학 89 96\n", + " 영어 88 73" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 컬럼 인덱스 과목을 로우 인덱스로 변경하고 df2에 저장\n", + "df.stack()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "scrolled": true + }, + "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", + "
과목명수학영어
학생명년도
Kim20169794
20175350
Park20168953
20176959
Lee20168671
20175673
Jung20167474
20175162
Moon20168988
20179673
\n", + "
" + ], + "text/plain": [ + "과목명 수학 영어\n", + "학생명 년도 \n", + "Kim 2016 97 94\n", + " 2017 53 50\n", + "Park 2016 89 53\n", + " 2017 69 59\n", + "Lee 2016 86 71\n", + " 2017 56 73\n", + "Jung 2016 74 74\n", + " 2017 51 62\n", + "Moon 2016 89 88\n", + " 2017 96 73" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 컬럼 인덱스 '년도'를 로우 인덱스로 변경\n", + "df.stack(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### df2를 대상으로 아래 실습 문제 수행" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "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", + "
년도20162017
학생명과목명
Kim수학9753
영어9450
Park수학8969
영어5359
Lee수학8656
영어7173
Jung수학7451
영어7462
Moon수학8996
영어8873
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017\n", + "학생명 과목명 \n", + "Kim 수학 97 53\n", + " 영어 94 50\n", + "Park 수학 89 69\n", + " 영어 53 59\n", + "Lee 수학 86 56\n", + " 영어 71 73\n", + "Jung 수학 74 51\n", + " 영어 74 62\n", + "Moon 수학 89 96\n", + " 영어 88 73" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2= df.stack(1)\n", + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "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", + "
년도20162017
과목명
수학9753
영어9450
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017\n", + "과목명 \n", + "수학 97 53\n", + "영어 94 50" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습. Kim의 성적만 선택\n", + "df2.loc['Kim']" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "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", + "
Park
수학
년도
201689
201769
\n", + "
" + ], + "text/plain": [ + " Park\n", + " 수학\n", + "년도 \n", + "2016 89\n", + "2017 69" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습. Park의 수학 성적만 선택\n", + "# 튜플 형태로\n", + "df2.loc[('Park','수학')]\n", + "DataFrame(df2.loc[('Park','수학')])" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "scrolled": true + }, + "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", + "
년도20162017
학생명
Kim9450
Park5359
Lee7173
Jung7462
Moon8873
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017\n", + "학생명 \n", + "Kim 94 50\n", + "Park 53 59\n", + "Lee 71 73\n", + "Jung 74 62\n", + "Moon 88 73" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습. 모든 학생들의 영어 성적만 선택 \n", + "df2.xs('영어',axis =0, level=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "학생명 과목명\n", + "Park 수학 89\n", + " 영어 53\n", + "Name: 2016, dtype: int32" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습. Park 학생의 2016년 영어 성적만 출력\n", + "df2[2016][('Park','영어')]\n", + "df2.loc[['Park','영어'],2016]" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "scrolled": false + }, + "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", + "
년도20162017평균
학생명과목명
Kim수학975375.0
영어945072.0
Park수학896979.0
영어535956.0
Lee수학865671.0
영어717372.0
Jung수학745162.5
영어746268.0
Moon수학899692.5
영어887380.5
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017 평균\n", + "학생명 과목명 \n", + "Kim 수학 97 53 75.0\n", + " 영어 94 50 72.0\n", + "Park 수학 89 69 79.0\n", + " 영어 53 59 56.0\n", + "Lee 수학 86 56 71.0\n", + " 영어 71 73 72.0\n", + "Jung 수학 74 51 62.5\n", + " 영어 74 62 68.0\n", + "Moon 수학 89 96 92.5\n", + " 영어 88 73 80.5" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습. 학생들의 과목별 평균 \n", + "\n", + "df2['평균']=df2.apply(np.mean, axis = 1)\n", + "df2" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'mean' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mhelp\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'mean' is not defined" + ] + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 60, + "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", + "
선수명년도안타홈런
0모창민201310912
1이호준201312320
2김종호20131290
3나성범20139814
4조영훈20131076
\n", + "
" + ], + "text/plain": [ + " 선수명 년도 안타 홈런\n", + "0 모창민 2013 109 12\n", + "1 이호준 2013 123 20\n", + "2 김종호 2013 129 0\n", + "3 나성범 2013 98 14\n", + "4 조영훈 2013 107 6" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# NC Dinos 선수 기록 적재\n", + "NC = pd.read_excel('data/NC Dinos.xlsx', sheet_name = None)\n", + "NC13, NC14, NC15 = NC.values()\n", + "NC13['년도'] = 2013\n", + "NC14['년도'] = 2014\n", + "NC15['년도'] = 2015\n", + "NC13 = NC13[['선수명', '년도', '안타','홈런']]\n", + "NC14 = NC14[['선수명', '년도', '안타','홈런']]\n", + "NC15 = NC15[['선수명', '년도', '안타','홈런']]\n", + "NCAll = pd.concat([NC13, NC14, NC15])\n", + "NCAll.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
선수명년도안타홈런
0모창민201310912
1이호준201312320
2김종호20131290
3나성범20139814
4조영훈20131076
5이현곤2013380
6이상호2013310
7강진성201310
8조평호2013212
9박민우2013110
10박정준2013414
11이승호201300
12마낙길201390
13김성욱201310
14강구성201300
15지석훈2013683
16김종찬201310
17차화준2013241
18김동건201321
19이창섭201300
0테임즈201415237
1나성범201415730
2박민우20141241
3손시헌2014905
4지석훈2014586
5이호준201411523
6권희동2014637
7모창민201411016
8이종욱20141266
9김준완201420
10최재원201400
11마낙길201400
12조영훈2014296
13김태우201410
14박명환*201400
15조평호201400
16강민국201400
17허준201450
18김성욱201441
19노진혁201431
0테임즈201518047
1나성범201518428
2박민우20151583
3이호준201513224
4김종호20151254
5조영훈2015358
6손시헌201510813
7이종욱20151185
8모창민2015626
9지석훈201511111
10용덕한2015120
11최재원2015212
12박정준201580
13김태군20151076
14조평호201581
15이창섭201500
16김준완2015100
17강구성201510
18강민국201500
19김태진201500
\n", + "
" + ], + "text/plain": [ + " 선수명 년도 안타 홈런\n", + "0 모창민 2013 109 12\n", + "1 이호준 2013 123 20\n", + "2 김종호 2013 129 0\n", + "3 나성범 2013 98 14\n", + "4 조영훈 2013 107 6\n", + "5 이현곤 2013 38 0\n", + "6 이상호 2013 31 0\n", + "7 강진성 2013 1 0\n", + "8 조평호 2013 21 2\n", + "9 박민우 2013 11 0\n", + "10 박정준 2013 41 4\n", + "11 이승호 2013 0 0\n", + "12 마낙길 2013 9 0\n", + "13 김성욱 2013 1 0\n", + "14 강구성 2013 0 0\n", + "15 지석훈 2013 68 3\n", + "16 김종찬 2013 1 0\n", + "17 차화준 2013 24 1\n", + "18 김동건 2013 2 1\n", + "19 이창섭 2013 0 0\n", + "0 테임즈 2014 152 37\n", + "1 나성범 2014 157 30\n", + "2 박민우 2014 124 1\n", + "3 손시헌 2014 90 5\n", + "4 지석훈 2014 58 6\n", + "5 이호준 2014 115 23\n", + "6 권희동 2014 63 7\n", + "7 모창민 2014 110 16\n", + "8 이종욱 2014 126 6\n", + "9 김준완 2014 2 0\n", + "10 최재원 2014 0 0\n", + "11 마낙길 2014 0 0\n", + "12 조영훈 2014 29 6\n", + "13 김태우 2014 1 0\n", + "14 박명환* 2014 0 0\n", + "15 조평호 2014 0 0\n", + "16 강민국 2014 0 0\n", + "17 허준 2014 5 0\n", + "18 김성욱 2014 4 1\n", + "19 노진혁 2014 3 1\n", + "0 테임즈 2015 180 47\n", + "1 나성범 2015 184 28\n", + "2 박민우 2015 158 3\n", + "3 이호준 2015 132 24\n", + "4 김종호 2015 125 4\n", + "5 조영훈 2015 35 8\n", + "6 손시헌 2015 108 13\n", + "7 이종욱 2015 118 5\n", + "8 모창민 2015 62 6\n", + "9 지석훈 2015 111 11\n", + "10 용덕한 2015 12 0\n", + "11 최재원 2015 21 2\n", + "12 박정준 2015 8 0\n", + "13 김태군 2015 107 6\n", + "14 조평호 2015 8 1\n", + "15 이창섭 2015 0 0\n", + "16 김준완 2015 10 0\n", + "17 강구성 2015 1 0\n", + "18 강민국 2015 0 0\n", + "19 김태진 2015 0 0" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "NCAll" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
안타홈런
년도201320142015201320142015
선수명
강구성0.0NaN1.00.0NaN0.0
강민국NaN0.00.0NaN0.00.0
강진성1.0NaNNaN0.0NaNNaN
권희동NaN63.0NaNNaN7.0NaN
김동건2.0NaNNaN1.0NaNNaN
김성욱1.04.0NaN0.01.0NaN
김종찬1.0NaNNaN0.0NaNNaN
김종호129.0NaN125.00.0NaN4.0
김준완NaN2.010.0NaN0.00.0
김태군NaNNaN107.0NaNNaN6.0
김태우NaN1.0NaNNaN0.0NaN
김태진NaNNaN0.0NaNNaN0.0
나성범98.0157.0184.014.030.028.0
노진혁NaN3.0NaNNaN1.0NaN
마낙길9.00.0NaN0.00.0NaN
모창민109.0110.062.012.016.06.0
박명환*NaN0.0NaNNaN0.0NaN
박민우11.0124.0158.00.01.03.0
박정준41.0NaN8.04.0NaN0.0
손시헌NaN90.0108.0NaN5.013.0
용덕한NaNNaN12.0NaNNaN0.0
이상호31.0NaNNaN0.0NaNNaN
이승호0.0NaNNaN0.0NaNNaN
이종욱NaN126.0118.0NaN6.05.0
이창섭0.0NaN0.00.0NaN0.0
이현곤38.0NaNNaN0.0NaNNaN
이호준123.0115.0132.020.023.024.0
조영훈107.029.035.06.06.08.0
조평호21.00.08.02.00.01.0
지석훈68.058.0111.03.06.011.0
차화준24.0NaNNaN1.0NaNNaN
최재원NaN0.021.0NaN0.02.0
테임즈NaN152.0180.0NaN37.047.0
허준NaN5.0NaNNaN0.0NaN
\n", + "
" + ], + "text/plain": [ + " 안타 홈런 \n", + "년도 2013 2014 2015 2013 2014 2015\n", + "선수명 \n", + "강구성 0.0 NaN 1.0 0.0 NaN 0.0\n", + "강민국 NaN 0.0 0.0 NaN 0.0 0.0\n", + "강진성 1.0 NaN NaN 0.0 NaN NaN\n", + "권희동 NaN 63.0 NaN NaN 7.0 NaN\n", + "김동건 2.0 NaN NaN 1.0 NaN NaN\n", + "김성욱 1.0 4.0 NaN 0.0 1.0 NaN\n", + "김종찬 1.0 NaN NaN 0.0 NaN NaN\n", + "김종호 129.0 NaN 125.0 0.0 NaN 4.0\n", + "김준완 NaN 2.0 10.0 NaN 0.0 0.0\n", + "김태군 NaN NaN 107.0 NaN NaN 6.0\n", + "김태우 NaN 1.0 NaN NaN 0.0 NaN\n", + "김태진 NaN NaN 0.0 NaN NaN 0.0\n", + "나성범 98.0 157.0 184.0 14.0 30.0 28.0\n", + "노진혁 NaN 3.0 NaN NaN 1.0 NaN\n", + "마낙길 9.0 0.0 NaN 0.0 0.0 NaN\n", + "모창민 109.0 110.0 62.0 12.0 16.0 6.0\n", + "박명환* NaN 0.0 NaN NaN 0.0 NaN\n", + "박민우 11.0 124.0 158.0 0.0 1.0 3.0\n", + "박정준 41.0 NaN 8.0 4.0 NaN 0.0\n", + "손시헌 NaN 90.0 108.0 NaN 5.0 13.0\n", + "용덕한 NaN NaN 12.0 NaN NaN 0.0\n", + "이상호 31.0 NaN NaN 0.0 NaN NaN\n", + "이승호 0.0 NaN NaN 0.0 NaN NaN\n", + "이종욱 NaN 126.0 118.0 NaN 6.0 5.0\n", + "이창섭 0.0 NaN 0.0 0.0 NaN 0.0\n", + "이현곤 38.0 NaN NaN 0.0 NaN NaN\n", + "이호준 123.0 115.0 132.0 20.0 23.0 24.0\n", + "조영훈 107.0 29.0 35.0 6.0 6.0 8.0\n", + "조평호 21.0 0.0 8.0 2.0 0.0 1.0\n", + "지석훈 68.0 58.0 111.0 3.0 6.0 11.0\n", + "차화준 24.0 NaN NaN 1.0 NaN NaN\n", + "최재원 NaN 0.0 21.0 NaN 0.0 2.0\n", + "테임즈 NaN 152.0 180.0 NaN 37.0 47.0\n", + "허준 NaN 5.0 NaN NaN 0.0 NaN" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "NCAll.set_index(['선수명','년도']).unstack()" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": { + "scrolled": true + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
안타홈런
년도201320142015201320142015
선수명
강구성0.0NaN1.00.0NaN0.0
강민국NaN0.00.0NaN0.00.0
강진성1.0NaNNaN0.0NaNNaN
권희동NaN63.0NaNNaN7.0NaN
김동건2.0NaNNaN1.0NaNNaN
김성욱1.04.0NaN0.01.0NaN
김종찬1.0NaNNaN0.0NaNNaN
김종호129.0NaN125.00.0NaN4.0
김준완NaN2.010.0NaN0.00.0
김태군NaNNaN107.0NaNNaN6.0
김태우NaN1.0NaNNaN0.0NaN
김태진NaNNaN0.0NaNNaN0.0
나성범98.0157.0184.014.030.028.0
노진혁NaN3.0NaNNaN1.0NaN
마낙길9.00.0NaN0.00.0NaN
모창민109.0110.062.012.016.06.0
박명환*NaN0.0NaNNaN0.0NaN
박민우11.0124.0158.00.01.03.0
박정준41.0NaN8.04.0NaN0.0
손시헌NaN90.0108.0NaN5.013.0
용덕한NaNNaN12.0NaNNaN0.0
이상호31.0NaNNaN0.0NaNNaN
이승호0.0NaNNaN0.0NaNNaN
이종욱NaN126.0118.0NaN6.05.0
이창섭0.0NaN0.00.0NaN0.0
이현곤38.0NaNNaN0.0NaNNaN
이호준123.0115.0132.020.023.024.0
조영훈107.029.035.06.06.08.0
조평호21.00.08.02.00.01.0
지석훈68.058.0111.03.06.011.0
차화준24.0NaNNaN1.0NaNNaN
최재원NaN0.021.0NaN0.02.0
테임즈NaN152.0180.0NaN37.047.0
허준NaN5.0NaNNaN0.0NaN
\n", + "
" + ], + "text/plain": [ + " 안타 홈런 \n", + "년도 2013 2014 2015 2013 2014 2015\n", + "선수명 \n", + "강구성 0.0 NaN 1.0 0.0 NaN 0.0\n", + "강민국 NaN 0.0 0.0 NaN 0.0 0.0\n", + "강진성 1.0 NaN NaN 0.0 NaN NaN\n", + "권희동 NaN 63.0 NaN NaN 7.0 NaN\n", + "김동건 2.0 NaN NaN 1.0 NaN NaN\n", + "김성욱 1.0 4.0 NaN 0.0 1.0 NaN\n", + "김종찬 1.0 NaN NaN 0.0 NaN NaN\n", + "김종호 129.0 NaN 125.0 0.0 NaN 4.0\n", + "김준완 NaN 2.0 10.0 NaN 0.0 0.0\n", + "김태군 NaN NaN 107.0 NaN NaN 6.0\n", + "김태우 NaN 1.0 NaN NaN 0.0 NaN\n", + "김태진 NaN NaN 0.0 NaN NaN 0.0\n", + "나성범 98.0 157.0 184.0 14.0 30.0 28.0\n", + "노진혁 NaN 3.0 NaN NaN 1.0 NaN\n", + "마낙길 9.0 0.0 NaN 0.0 0.0 NaN\n", + "모창민 109.0 110.0 62.0 12.0 16.0 6.0\n", + "박명환* NaN 0.0 NaN NaN 0.0 NaN\n", + "박민우 11.0 124.0 158.0 0.0 1.0 3.0\n", + "박정준 41.0 NaN 8.0 4.0 NaN 0.0\n", + "손시헌 NaN 90.0 108.0 NaN 5.0 13.0\n", + "용덕한 NaN NaN 12.0 NaN NaN 0.0\n", + "이상호 31.0 NaN NaN 0.0 NaN NaN\n", + "이승호 0.0 NaN NaN 0.0 NaN NaN\n", + "이종욱 NaN 126.0 118.0 NaN 6.0 5.0\n", + "이창섭 0.0 NaN 0.0 0.0 NaN 0.0\n", + "이현곤 38.0 NaN NaN 0.0 NaN NaN\n", + "이호준 123.0 115.0 132.0 20.0 23.0 24.0\n", + "조영훈 107.0 29.0 35.0 6.0 6.0 8.0\n", + "조평호 21.0 0.0 8.0 2.0 0.0 1.0\n", + "지석훈 68.0 58.0 111.0 3.0 6.0 11.0\n", + "차화준 24.0 NaN NaN 1.0 NaN NaN\n", + "최재원 NaN 0.0 21.0 NaN 0.0 2.0\n", + "테임즈 NaN 152.0 180.0 NaN 37.0 47.0\n", + "허준 NaN 5.0 NaN NaN 0.0 NaN" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# NCAll을 아래 결과처럼 나오도록 변경\n", + "NCAll.set_index(['선수명','년도']).unstack()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 7. \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 1 - \355\206\265\352\263\204, \354\240\225\353\240\254.ipynb" "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 7. \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 1 - \355\206\265\352\263\204, \354\240\225\353\240\254.ipynb" new file mode 100644 index 0000000..5ba3023 --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 7. \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 1 - \355\206\265\352\263\204, \354\240\225\353\240\254.ipynb" @@ -0,0 +1,1572 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pandas import Series, DataFrame\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 7-1. 통계 함수\n", + "## 주요 통계 함수 목록\n", + "\"통계함수\"\n", + "\n", + "## 주요 함수 옵션\n", + "\"주요옵션\"\n", + "\n", + "### ** axis는 통계함수 뿐만 아니라, 많은 함수에서 동일하게 적용됨. **" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# 샘플 데이터 생성\n", + "np.random.seed(0)\n", + "df = pd.DataFrame(np.random.randint(50, 100, (5, 4)), \n", + " columns=[[2016, 2016, 2017, 2017], ['영어','수학','영어','수학']], index = ['Kim','Park','Lee','Jung','Moon'])\n", + "df\n", + "df.index.set_names('학생명', inplace = True)\n", + "df.columns.set_names(['년도','과목'], inplace = True)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "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", + "
년도20162017
과목영어수학영어수학
학생명
Kim94975053
Park53895969
Lee71867356
Jung74746251
Moon88897396
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017 \n", + "과목 영어 수학 영어 수학\n", + "학생명 \n", + "Kim 94 97 50 53\n", + "Park 53 89 59 69\n", + "Lee 71 86 73 56\n", + "Jung 74 74 62 51\n", + "Moon 88 89 73 96" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "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", + "
과목영어수학
학생명
Kim9497
Park5389
Lee7186
Jung7474
Moon8889
\n", + "
" + ], + "text/plain": [ + "과목 영어 수학\n", + "학생명 \n", + "Kim 94 97\n", + "Park 53 89\n", + "Lee 71 86\n", + "Jung 74 74\n", + "Moon 88 89" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2016년 성적만 선택해서 df2016에 저장\n", + "df2016 = df[2016]\n", + "df2016" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "과목\n", + "영어 5\n", + "수학 5\n", + "dtype: int64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1) count() - 컬럼 단위로 NaN 값을 제외한 데이터의 갯수 \n", + "df2016.count()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "과목\n", + "영어 380\n", + "수학 435\n", + "dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2) sum() - 값의 합을 계산\n", + "## 기본적으로 함수는 각 컬럼에 있는 로우(row)들의 값들로 수행됨. (기본값 axis =0) \n", + "## 모든 통계 함수는 동일함.\n", + "df2016.sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "과목\n", + "영어 76.0\n", + "수학 87.0\n", + "dtype: float64" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 전체 학생들의 과목 평균 구하기\n", + "df2016.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "학생명\n", + "Kim 95.5\n", + "Park 71.0\n", + "Lee 78.5\n", + "Jung 74.0\n", + "Moon 88.5\n", + "dtype: float64" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2016.mean(axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "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", + "
과목영어수학
count5.0000005.000000
mean76.00000087.000000
std16.0156178.336666
min53.00000074.000000
25%71.00000086.000000
50%74.00000089.000000
75%88.00000089.000000
max94.00000097.000000
\n", + "
" + ], + "text/plain": [ + "과목 영어 수학\n", + "count 5.000000 5.000000\n", + "mean 76.000000 87.000000\n", + "std 16.015617 8.336666\n", + "min 53.000000 74.000000\n", + "25% 71.000000 86.000000\n", + "50% 74.000000 89.000000\n", + "75% 88.000000 89.000000\n", + "max 94.000000 97.000000" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 3) describe() - 각 컬럼에 대한 요약 통계\n", + "df2016.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "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", + "
년도20162017
과목영어수학영어수학
학생명
Kim94975053
Park53895969
Lee71867356
Jung74746251
Moon88897396
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017 \n", + "과목 영어 수학 영어 수학\n", + "학생명 \n", + "Kim 94 97 50 53\n", + "Park 53 89 59 69\n", + "Lee 71 86 73 56\n", + "Jung 74 74 62 51\n", + "Moon 88 89 73 96" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "년도 과목\n", + "2016 영어 76.0\n", + " 수학 87.0\n", + "2017 영어 63.4\n", + " 수학 65.0\n", + "dtype: float64" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습.df 대상으로 년도별 과목별 평균 성적을 출력\n", + "df.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "학생명\n", + "Kim 73.50\n", + "Park 67.50\n", + "Lee 71.50\n", + "Jung 65.25\n", + "Moon 86.50\n", + "dtype: float64" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습. df 대상으로 학생별로 모든 년도/과목에 대한 전체 평균을 출력\n", + "df.mean(axis=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 7-2. 정렬\n", + "## * 데이터 정렬 : sort_values()\n", + "\"DataFrame.sort_values\"\n", + "## * 인덱스 정렬 : sort_index() - 인자는 sort_values()와 동일\n", + "### http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html#pandas.DataFrame.sort_values" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1) Series 정렬" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "b 3\n", + "c 5\n", + "a 2\n", + "f 1\n", + "e 7\n", + "d 10\n", + "dtype: int64" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Series 정렬을 위한 샘플 데이터\n", + "sr = Series([3,5,2,1,7,10], index = list('bcafed'))\n", + "sr" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "a 2\n", + "b 3\n", + "c 5\n", + "d 10\n", + "e 7\n", + "f 1\n", + "dtype: int64" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 로우 인덱스 라벨의 값으로 정렬\n", + "sr.sort_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "f 1\n", + "a 2\n", + "b 3\n", + "c 5\n", + "e 7\n", + "d 10\n", + "dtype: int64" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Series의 값으로 정렬 (기본값 = 오름차순)\n", + "sr.sort_values()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "d 10\n", + "e 7\n", + "c 5\n", + "b 3\n", + "a 2\n", + "f 1\n", + "dtype: int64" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Series의 값으로 내림차순 정렬\n", + "sr.sort_values(ascending = False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2) DataFrame 정렬" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "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", + "
과목영어수학
학생명
Kim9497
Park5389
Lee7186
Jung7474
Moon8889
\n", + "
" + ], + "text/plain": [ + "과목 영어 수학\n", + "학생명 \n", + "Kim 94 97\n", + "Park 53 89\n", + "Lee 71 86\n", + "Jung 74 74\n", + "Moon 88 89" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2016" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "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", + "
년도20162017
과목영어수학영어수학
학생명
Jung74746251
Kim94975053
Lee71867356
Moon88897396
Park53895969
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017 \n", + "과목 영어 수학 영어 수학\n", + "학생명 \n", + "Jung 74 74 62 51\n", + "Kim 94 97 50 53\n", + "Lee 71 86 73 56\n", + "Moon 88 89 73 96\n", + "Park 53 89 59 69" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 학생명으로 알파벳 정렬하여 보고 싶을 때 \n", + "df.sort_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "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", + "
과목영어수학
학생명
Jung7474
Lee7186
Park5389
Moon8889
Kim9497
\n", + "
" + ], + "text/plain": [ + "과목 영어 수학\n", + "학생명 \n", + "Jung 74 74\n", + "Lee 71 86\n", + "Park 53 89\n", + "Moon 88 89\n", + "Kim 94 97" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 수학 성적을 오름 차순 정렬\n", + "df2016.sort_values(by = '수학')" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "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", + "
과목영어수학
학생명
Kim9497
Park5389
Moon8889
Lee7186
Jung7474
\n", + "
" + ], + "text/plain": [ + "과목 영어 수학\n", + "학생명 \n", + "Kim 94 97\n", + "Park 53 89\n", + "Moon 88 89\n", + "Lee 71 86\n", + "Jung 74 74" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 수학성적으로 내림차순 정렬\n", + "df2016.sort_values(by = '수학', ascending = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "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", + "
년도20162017
과목영어수학영어수학
학생명
Kim94975053
Park53895969
Lee71867356
Jung74746251
Moon88897396
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017 \n", + "과목 영어 수학 영어 수학\n", + "학생명 \n", + "Kim 94 97 50 53\n", + "Park 53 89 59 69\n", + "Lee 71 86 73 56\n", + "Jung 74 74 62 51\n", + "Moon 88 89 73 96" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "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", + "
년도20162017
과목영어수학영어수학
학생명
Kim94975053
Park53895969
Moon88897396
Lee71867356
Jung74746251
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017 \n", + "과목 영어 수학 영어 수학\n", + "학생명 \n", + "Kim 94 97 50 53\n", + "Park 53 89 59 69\n", + "Moon 88 89 73 96\n", + "Lee 71 86 73 56\n", + "Jung 74 74 62 51" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2016년 수학 성적을 기준으로 내림차순 정렬\n", + "# by 인자는 튜플로\n", + "df.sort_values(by=(2016,'수학'), ascending= False)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "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", + "
년도20162017
과목영어수학영어수학
학생명
Kim94975053
Moon88897396
Park53895969
Lee71867356
Jung74746251
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017 \n", + "과목 영어 수학 영어 수학\n", + "학생명 \n", + "Kim 94 97 50 53\n", + "Moon 88 89 73 96\n", + "Park 53 89 59 69\n", + "Lee 71 86 73 56\n", + "Jung 74 74 62 51" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2016, 2017 수학성적으로 내림차순 정렬\n", + "df.sort_values(by=[(2016,'수학'),(2017,'수학')], ascending = False)" + ] + }, + { + "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", + "
년도20162017
과목영어수학영어수학
학생명
Kim94975053
Park53895969
Moon88897396
Lee71867356
Jung74746251
\n", + "
" + ], + "text/plain": [ + "년도 2016 2017 \n", + "과목 영어 수학 영어 수학\n", + "학생명 \n", + "Kim 94 97 50 53\n", + "Park 53 89 59 69\n", + "Moon 88 89 73 96\n", + "Lee 71 86 73 56\n", + "Jung 74 74 62 51" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2016 수학 내림차순, 2017 수학 오름차순\n", + "df.sort_values(by=[(2016,'수학'),(2017,'수학')], ascending = [False, True])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 8. \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 2 - \354\247\221\352\263\204 (Groupby, pivot_table) (1).ipynb" "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 8. \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 2 - \354\247\221\352\263\204 (Groupby, pivot_table) (1).ipynb" new file mode 100644 index 0000000..a4eff0f --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\352\270\260\354\264\210 8. \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 2 - \354\247\221\352\263\204 (Groupby, pivot_table) (1).ipynb" @@ -0,0 +1,1345 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pandas import Series, DataFrame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"그룹분석_groupby\"\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#groupby() 실습\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# 실습 데이터 적재\n", + "data = pd.read_excel('data/인구수예제.xlsx')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
도시자치구연도남자인구여자인구총인구
0서울강남구20137392165
1서울강남구201413955194
2서울강남구201512383206
3서울강남구2016147150297
4서울강남구201757133190
5서울서대문구201395111206
6서울서대문구2014149150299
7서울서대문구201510677183
8서울서대문구201656109165
9서울서대문구20178296178
10서울종로구201312168189
11서울종로구201410755162
12서울종로구20155079129
13서울종로구201610080180
14서울종로구201710591196
15서울영등포구2013146113259
16서울영등포구2014127117244
17서울영등포구20157072142
18서울영등포구2016141136277
19서울영등포구2017145124269
20서울송파구201390130220
21서울송파구201412166187
22서울송파구201562121183
23서울송파구20168092172
24서울송파구201762150212
25서울도봉구2013113138251
26서울도봉구2014145140285
27서울도봉구201556139195
28서울도봉구20166071131
29서울도봉구201711162173
30서울동작구2013120117237
31서울동작구201494108202
32서울동작구201574139213
33서울동작구20168784171
34서울동작구201779134213
35부산해운대구2013124103227
36부산해운대구2014101144245
37부산해운대구201511570185
38부산해운대구2016134126260
39부산해운대구201714672218
40부산수영구201313494228
41부산수영구201474138212
42부산수영구20156981150
43부산수영구201681148229
44부산수영구201714498242
45부산동래구20138365148
46부산동래구201413987226
47부산동래구2015147115262
48부산동래구201661102163
49부산동래구2017132105237
\n", + "
" + ], + "text/plain": [ + " 도시 자치구 연도 남자인구 여자인구 총인구\n", + "0 서울 강남구 2013 73 92 165\n", + "1 서울 강남구 2014 139 55 194\n", + "2 서울 강남구 2015 123 83 206\n", + "3 서울 강남구 2016 147 150 297\n", + "4 서울 강남구 2017 57 133 190\n", + "5 서울 서대문구 2013 95 111 206\n", + "6 서울 서대문구 2014 149 150 299\n", + "7 서울 서대문구 2015 106 77 183\n", + "8 서울 서대문구 2016 56 109 165\n", + "9 서울 서대문구 2017 82 96 178\n", + "10 서울 종로구 2013 121 68 189\n", + "11 서울 종로구 2014 107 55 162\n", + "12 서울 종로구 2015 50 79 129\n", + "13 서울 종로구 2016 100 80 180\n", + "14 서울 종로구 2017 105 91 196\n", + "15 서울 영등포구 2013 146 113 259\n", + "16 서울 영등포구 2014 127 117 244\n", + "17 서울 영등포구 2015 70 72 142\n", + "18 서울 영등포구 2016 141 136 277\n", + "19 서울 영등포구 2017 145 124 269\n", + "20 서울 송파구 2013 90 130 220\n", + "21 서울 송파구 2014 121 66 187\n", + "22 서울 송파구 2015 62 121 183\n", + "23 서울 송파구 2016 80 92 172\n", + "24 서울 송파구 2017 62 150 212\n", + "25 서울 도봉구 2013 113 138 251\n", + "26 서울 도봉구 2014 145 140 285\n", + "27 서울 도봉구 2015 56 139 195\n", + "28 서울 도봉구 2016 60 71 131\n", + "29 서울 도봉구 2017 111 62 173\n", + "30 서울 동작구 2013 120 117 237\n", + "31 서울 동작구 2014 94 108 202\n", + "32 서울 동작구 2015 74 139 213\n", + "33 서울 동작구 2016 87 84 171\n", + "34 서울 동작구 2017 79 134 213\n", + "35 부산 해운대구 2013 124 103 227\n", + "36 부산 해운대구 2014 101 144 245\n", + "37 부산 해운대구 2015 115 70 185\n", + "38 부산 해운대구 2016 134 126 260\n", + "39 부산 해운대구 2017 146 72 218\n", + "40 부산 수영구 2013 134 94 228\n", + "41 부산 수영구 2014 74 138 212\n", + "42 부산 수영구 2015 69 81 150\n", + "43 부산 수영구 2016 81 148 229\n", + "44 부산 수영구 2017 144 98 242\n", + "45 부산 동래구 2013 83 65 148\n", + "46 부산 동래구 2014 139 87 226\n", + "47 부산 동래구 2015 147 115 262\n", + "48 부산 동래구 2016 61 102 163\n", + "49 부산 동래구 2017 132 105 237" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "연도\n", + "2013 2130\n", + "2014 2256\n", + "2015 1848\n", + "2016 2045\n", + "2017 2128\n", + "Name: 총인구, dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 연도별 총인구수\n", + "data.groupby('연도')['총인구'].sum()\n", + "\n", + "#SELECT COL1, SUM(총인구)\n", + "#FROM DATA\n", + "#GROUP BY 연도" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "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", + "
연도20132014201520162017
도시
부산603683597652697
서울15271573125113931431
\n", + "
" + ], + "text/plain": [ + "연도 2013 2014 2015 2016 2017\n", + "도시 \n", + "부산 603 683 597 652 697\n", + "서울 1527 1573 1251 1393 1431" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 도시별, 연도별 총인구수\n", + "data.groupby(['도시','연도'])['총인구'].sum()\n", + "# 도시를 컬럼으로 삼아 데이터프레임 만듦\n", + "data.groupby(['도시','연도'])['총인구'].sum().unstack()\n", + "# 도시-서울, 부산\n", + "# 연도-2013,2014,2015,2016,2017\n", + "# 도시, 연도 컬럼값의 조합으로 구릅핑\n", + "# 그럼 총 10가지 (서울, 2013),(서울, 2014)~~~(부산, 2017)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"그룹분석_groupby\"" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "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", + "
도시부산서울
연도
20136031527
20146831573
20155971251
20166521393
20176971431
\n", + "
" + ], + "text/plain": [ + "도시 부산 서울\n", + "연도 \n", + "2013 603 1527\n", + "2014 683 1573\n", + "2015 597 1251\n", + "2016 652 1393\n", + "2017 697 1431" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# pivot_table() 실습\n", + "data.pivot_table(index= '연도', columns='도시', aggfunc='sum', values ='총인구')" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "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", + "
남자인구
도시자치구
서울영등포구125.8
부산해운대구124.0
동래구112.4
서울강남구107.8
부산수영구100.4
\n", + "
" + ], + "text/plain": [ + " 남자인구\n", + "도시 자치구 \n", + "서울 영등포구 125.8\n", + "부산 해운대구 124.0\n", + " 동래구 112.4\n", + "서울 강남구 107.8\n", + "부산 수영구 100.4" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 실습. 자치구 별로 남자인구의 5년치 평균을 구한 후, 평균 남자인구수가 가장 많은 상위 5개 구를 찾아보기\n", + "data.pivot_table(index=['도시','자치구'], aggfunc='mean', values='남자인구' ).sort_values(by='남자인구', ascending = False).head(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "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", + "
인구차
도시자치구
서울송파구50.8
부산수영구45.8
서울강남구44.4
부산해운대구38.2
서울도봉구34.6
\n", + "
" + ], + "text/plain": [ + " 인구차\n", + "도시 자치구 \n", + "서울 송파구 50.8\n", + "부산 수영구 45.8\n", + "서울 강남구 44.4\n", + "부산 해운대구 38.2\n", + "서울 도봉구 34.6" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 남자와 여자의 인구수가 가장 많이 차이나는 도시 및 자치구 찾기\n", + "data['인구차']=abs(data.남자인구-data.여자인구)\n", + "data\n", + "data.pivot_table(index=['도시','자치구'], aggfunc = 'mean', values = '인구차').sort_values(by = '인구차', ascending = False).head()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "남녀차이 = data.pivot_table(index=['도시','자치구'], aggfunc = 'mean', values= ['남자인구','여자인구'])" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "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", + "
남자인구여자인구차이
도시자치구
서울송파구83.0111.828.8
동작구90.8116.425.6
종로구96.674.622.0
부산해운대구124.0103.021.0
동래구112.494.817.6
\n", + "
" + ], + "text/plain": [ + " 남자인구 여자인구 차이\n", + "도시 자치구 \n", + "서울 송파구 83.0 111.8 28.8\n", + " 동작구 90.8 116.4 25.6\n", + " 종로구 96.6 74.6 22.0\n", + "부산 해운대구 124.0 103.0 21.0\n", + " 동래구 112.4 94.8 17.6" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "남녀차이['차이'] = abs(남녀차이.남자인구 - 남녀차이.여자인구)\n", + "남녀차이.sort_values(by = '차이', ascending = False).head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "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", + "
남자인구여자인구총인구
연도
2013109.9103.1213.0
2014119.6106.0225.6
201587.297.6184.8
201694.7109.8204.5
2017106.3106.5212.8
\n", + "
" + ], + "text/plain": [ + " 남자인구 여자인구 총인구\n", + "연도 \n", + "2013 109.9 103.1 213.0\n", + "2014 119.6 106.0 225.6\n", + "2015 87.2 97.6 184.8\n", + "2016 94.7 109.8 204.5\n", + "2017 106.3 106.5 212.8" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.pivot_table(index='연도', aggfunc= 'mean', values= ['남자인구','여자인구','총인구'])" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "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", + "
남자인구여자인구총인구
연도
2013109.9103.12130
2014119.6106.02256
201587.297.61848
201694.7109.82045
2017106.3106.52128
\n", + "
" + ], + "text/plain": [ + " 남자인구 여자인구 총인구\n", + "연도 \n", + "2013 109.9 103.1 2130\n", + "2014 119.6 106.0 2256\n", + "2015 87.2 97.6 1848\n", + "2016 94.7 109.8 2045\n", + "2017 106.3 106.5 2128" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.pivot_table(index = '연도',aggfunc={'남자인구':'mean','여자인구':'mean','총인구':'sum'}, values = ['남자인구','여자인구','총인구'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 1. \354\230\201\355\231\224 \355\217\211\354\240\220 \353\266\204\354\204\235.ipynb" "b/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 1. \354\230\201\355\231\224 \355\217\211\354\240\220 \353\266\204\354\204\235.ipynb" new file mode 100644 index 0000000..f1fe034 --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 1. \354\230\201\355\231\224 \355\217\211\354\240\220 \353\266\204\354\204\235.ipynb" @@ -0,0 +1,4265 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 영화 평점 분석 실습" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pandas import Series, DataFrame\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. 영화 평점 데이터 적재 및 전처리" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "scrolled": true + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
사용자아이디성별연령직업지역
01F11048067
12M561670072
23M251555117
34M45702460
45M252055455
56F50955117
67M35106810
78M251211413
89M251761614
910F35195370
1011F25104093
1112M251232793
1213M45193304
1314M35060126
1415M25722903
1516F35020670
1617M50195350
1718F18395825
1819M11048073
1920M251455113
2021M181699353
2122M181553706
2223M35090049
2324F25710023
2425M18401609
2526M25723112
2627M251119130
2728F25114607
2829M35733407
2930F35719143
..................
60106011M351580538
60116012M351502871
60126013F252032301
60136014M45180634
60146015F25980013
60156016M45137209
60166017F35721117
60176018M35148906
60186019M25010024
60196020M501610023
60206021M251208876
60216022M251757006
60226023M25043213
60236024M251253705
60246025F25132607
60256026M35611210
60266027M18420742
60276028M18494133
60286029F25123185
60296030M251732618
60306031F18045123
60316032M45755108
60326033M501378232
60336034M251494117
60346035F25178734
60356036F251532603
60366037F45176006
60376038F56114706
60386039F45001060
60396040M25611106
\n", + "

6040 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " 사용자아이디 성별 연령 직업 지역\n", + "0 1 F 1 10 48067\n", + "1 2 M 56 16 70072\n", + "2 3 M 25 15 55117\n", + "3 4 M 45 7 02460\n", + "4 5 M 25 20 55455\n", + "5 6 F 50 9 55117\n", + "6 7 M 35 1 06810\n", + "7 8 M 25 12 11413\n", + "8 9 M 25 17 61614\n", + "9 10 F 35 1 95370\n", + "10 11 F 25 1 04093\n", + "11 12 M 25 12 32793\n", + "12 13 M 45 1 93304\n", + "13 14 M 35 0 60126\n", + "14 15 M 25 7 22903\n", + "15 16 F 35 0 20670\n", + "16 17 M 50 1 95350\n", + "17 18 F 18 3 95825\n", + "18 19 M 1 10 48073\n", + "19 20 M 25 14 55113\n", + "20 21 M 18 16 99353\n", + "21 22 M 18 15 53706\n", + "22 23 M 35 0 90049\n", + "23 24 F 25 7 10023\n", + "24 25 M 18 4 01609\n", + "25 26 M 25 7 23112\n", + "26 27 M 25 11 19130\n", + "27 28 F 25 1 14607\n", + "28 29 M 35 7 33407\n", + "29 30 F 35 7 19143\n", + "... ... .. .. .. ...\n", + "6010 6011 M 35 15 80538\n", + "6011 6012 M 35 15 02871\n", + "6012 6013 F 25 20 32301\n", + "6013 6014 M 45 1 80634\n", + "6014 6015 F 25 9 80013\n", + "6015 6016 M 45 1 37209\n", + "6016 6017 F 35 7 21117\n", + "6017 6018 M 35 1 48906\n", + "6018 6019 M 25 0 10024\n", + "6019 6020 M 50 16 10023\n", + "6020 6021 M 25 12 08876\n", + "6021 6022 M 25 17 57006\n", + "6022 6023 M 25 0 43213\n", + "6023 6024 M 25 12 53705\n", + "6024 6025 F 25 1 32607\n", + "6025 6026 M 35 6 11210\n", + "6026 6027 M 18 4 20742\n", + "6027 6028 M 18 4 94133\n", + "6028 6029 F 25 1 23185\n", + "6029 6030 M 25 17 32618\n", + "6030 6031 F 18 0 45123\n", + "6031 6032 M 45 7 55108\n", + "6032 6033 M 50 13 78232\n", + "6033 6034 M 25 14 94117\n", + "6034 6035 F 25 1 78734\n", + "6035 6036 F 25 15 32603\n", + "6036 6037 F 45 1 76006\n", + "6037 6038 F 56 1 14706\n", + "6038 6039 F 45 0 01060\n", + "6039 6040 M 25 6 11106\n", + "\n", + "[6040 rows x 5 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "users = pd.read_csv('data/movielens/users.dat', sep=\"::\", engine = 'python', names = ['사용자아이디','성별','연령', '직업','지역'])\n", + "users" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "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", + "
사용자아이디영화아이디평점타임스탬프
0111935978300760
116613978302109
219143978301968
3134084978300275
4123555978824291
\n", + "
" + ], + "text/plain": [ + " 사용자아이디 영화아이디 평점 타임스탬프\n", + "0 1 1193 5 978300760\n", + "1 1 661 3 978302109\n", + "2 1 914 3 978301968\n", + "3 1 3408 4 978300275\n", + "4 1 2355 5 978824291" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2.평점 데이터 불러오기\n", + "ratings= pd.read_csv('data/movielens/ratings.dat', sep=\"::\", engine = 'python', names = ['사용자아이디','영화아이디','평점', '타임스탬프'])\n", + "ratings.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1000209" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(ratings)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# 영화데이터 불러오기 " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": false + }, + "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", + "
영화아이디영화제목장르
01Toy Story (1995)Animation|Children's|Comedy
12Jumanji (1995)Adventure|Children's|Fantasy
23Grumpier Old Men (1995)Comedy|Romance
34Waiting to Exhale (1995)Comedy|Drama
45Father of the Bride Part II (1995)Comedy
\n", + "
" + ], + "text/plain": [ + " 영화아이디 영화제목 장르\n", + "0 1 Toy Story (1995) Animation|Children's|Comedy\n", + "1 2 Jumanji (1995) Adventure|Children's|Fantasy\n", + "2 3 Grumpier Old Men (1995) Comedy|Romance\n", + "3 4 Waiting to Exhale (1995) Comedy|Drama\n", + "4 5 Father of the Bride Part II (1995) Comedy" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "movies= pd.read_csv('data/movielens/movies.dat', sep=\"::\", engine = 'python', names = ['영화아이디','영화제목', '장르'], encoding= 'latin-1')\n", + "movies.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "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", + "
사용자아이디성별연령직업지역영화아이디평점타임스탬프
01F1104806711935978300760
11F110480676613978302109
21F110480679143978301968
31F1104806734084978300275
41F1104806723555978824291
\n", + "
" + ], + "text/plain": [ + " 사용자아이디 성별 연령 직업 지역 영화아이디 평점 타임스탬프\n", + "0 1 F 1 10 48067 1193 5 978300760\n", + "1 1 F 1 10 48067 661 3 978302109\n", + "2 1 F 1 10 48067 914 3 978301968\n", + "3 1 F 1 10 48067 3408 4 978300275\n", + "4 1 F 1 10 48067 2355 5 978824291" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data=pd.merge(users, ratings)\n", + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "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", + "
사용자아이디성별연령직업지역영화아이디평점타임스탬프영화제목장르
01F1104806711935978300760One Flew Over the Cuckoo's Nest (1975)Drama
12M56167007211935978298413One Flew Over the Cuckoo's Nest (1975)Drama
212M25123279311934978220179One Flew Over the Cuckoo's Nest (1975)Drama
315M2572290311934978199279One Flew Over the Cuckoo's Nest (1975)Drama
417M5019535011935978158471One Flew Over the Cuckoo's Nest (1975)Drama
\n", + "
" + ], + "text/plain": [ + " 사용자아이디 성별 연령 직업 지역 영화아이디 평점 타임스탬프 \\\n", + "0 1 F 1 10 48067 1193 5 978300760 \n", + "1 2 M 56 16 70072 1193 5 978298413 \n", + "2 12 M 25 12 32793 1193 4 978220179 \n", + "3 15 M 25 7 22903 1193 4 978199279 \n", + "4 17 M 50 1 95350 1193 5 978158471 \n", + "\n", + " 영화제목 장르 \n", + "0 One Flew Over the Cuckoo's Nest (1975) Drama \n", + "1 One Flew Over the Cuckoo's Nest (1975) Drama \n", + "2 One Flew Over the Cuckoo's Nest (1975) Drama \n", + "3 One Flew Over the Cuckoo's Nest (1975) Drama \n", + "4 One Flew Over the Cuckoo's Nest (1975) Drama " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data = pd.merge(data, movies)\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. 보고 싶은 영화 찾기 (평점 높은 영화 찾기)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": true + }, + "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", + "
평점
영화제목
Ulysses (Ulisse) (1954)5.000000
Lured (1947)5.000000
Follow the Bitch (1998)5.000000
Bittersweet Motel (2000)5.000000
Song of Freedom (1936)5.000000
One Little Indian (1973)5.000000
Smashing Time (1967)5.000000
Schlafes Bruder (Brother of Sleep) (1995)5.000000
Gate of Heavenly Peace, The (1995)5.000000
Baby, The (1973)5.000000
I Am Cuba (Soy Cuba/Ya Kuba) (1964)4.800000
Lamerica (1994)4.750000
Apple, The (Sib) (1998)4.666667
Sanjuro (1962)4.608696
Seven Samurai (The Magnificent Seven) (Shichinin no samurai) (1954)4.560510
\n", + "
" + ], + "text/plain": [ + " 평점\n", + "영화제목 \n", + "Ulysses (Ulisse) (1954) 5.000000\n", + "Lured (1947) 5.000000\n", + "Follow the Bitch (1998) 5.000000\n", + "Bittersweet Motel (2000) 5.000000\n", + "Song of Freedom (1936) 5.000000\n", + "One Little Indian (1973) 5.000000\n", + "Smashing Time (1967) 5.000000\n", + "Schlafes Bruder (Brother of Sleep) (1995) 5.000000\n", + "Gate of Heavenly Peace, The (1995) 5.000000\n", + "Baby, The (1973) 5.000000\n", + "I Am Cuba (Soy Cuba/Ya Kuba) (1964) 4.800000\n", + "Lamerica (1994) 4.750000\n", + "Apple, The (Sib) (1998) 4.666667\n", + "Sanjuro (1962) 4.608696\n", + "Seven Samurai (The Magnificent Seven) (Shichini... 4.560510" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.pivot_table(index= '영화제목', values = '평점', aggfunc = 'mean').sort_values(by='평점', ascending = False).head(15)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "영화평점 = data.pivot_table(index= '영화제목', values = '평점', aggfunc = ('mean','count'))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "scrolled": true + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
countmean
영화제목
Ulysses (Ulisse) (1954)15.000000
Lured (1947)15.000000
Follow the Bitch (1998)15.000000
Bittersweet Motel (2000)15.000000
Song of Freedom (1936)15.000000
One Little Indian (1973)15.000000
Smashing Time (1967)25.000000
Schlafes Bruder (Brother of Sleep) (1995)15.000000
Gate of Heavenly Peace, The (1995)35.000000
Baby, The (1973)15.000000
I Am Cuba (Soy Cuba/Ya Kuba) (1964)54.800000
Lamerica (1994)84.750000
Apple, The (Sib) (1998)94.666667
Sanjuro (1962)694.608696
Seven Samurai (The Magnificent Seven) (Shichinin no samurai) (1954)6284.560510
Shawshank Redemption, The (1994)22274.554558
Godfather, The (1972)22234.524966
Close Shave, A (1995)6574.520548
Usual Suspects, The (1995)17834.517106
Schindler's List (1993)23044.510417
Wrong Trousers, The (1993)8824.507937
Dry Cleaning (Nettoyage à sec) (1997)24.500000
Inheritors, The (Die Siebtelbauern) (1998)24.500000
Mamma Roma (1962)24.500000
Bells, The (1926)24.500000
Dangerous Game (1993)24.500000
Hour of the Pig, The (1993)24.500000
Callejón de los milagros, El (1995)24.500000
Skipped Parts (2000)24.500000
Sunset Blvd. (a.k.a. Sunset Boulevard) (1950)4704.491489
.........
Diebinnen (1995)11.000000
Blood Spattered Bride, The (La Novia Ensangrentada) (1972)21.000000
Bloody Child, The (1996)11.000000
Uninvited Guest, An (2000)11.000000
Little Indian, Big City (Un indien dans la ville) (1994)11.000000
Shadows (Cienie) (1988)11.000000
McCullochs, The (1975)11.000000
Hillbillys in a Haunted House (1967)11.000000
Terror in a Texas Town (1958)11.000000
White Boys (1999)11.000000
Lotto Land (1995)11.000000
Nueba Yol (1995)11.000000
Even Dwarfs Started Small (Auch Zwerge haben klein angefangen) (1971)11.000000
Get Over It (1996)21.000000
Venice/Venice (1992)21.000000
Sleepover (1995)11.000000
Silence of the Palace, The (Saimt el Qusur) (1994)11.000000
Waltzes from Vienna (1933)11.000000
Wirey Spindell (1999)21.000000
Kestrel's Eye (Falkens öga) (1998)11.000000
Spring Fever USA (a.k.a. Lauderdale) (1989)31.000000
Loves of Carmen, The (1948)11.000000
Underworld (1997)11.000000
Low Life, The (1994)11.000000
Santa with Muscles (1996)71.000000
Fantastic Night, The (La Nuit Fantastique) (1949)11.000000
Cheetah (1989)11.000000
Torso (Corpi Presentano Tracce di Violenza Carnale) (1973)21.000000
Mutters Courage (1995)11.000000
Windows (1980)11.000000
\n", + "

3706 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " count mean\n", + "영화제목 \n", + "Ulysses (Ulisse) (1954) 1 5.000000\n", + "Lured (1947) 1 5.000000\n", + "Follow the Bitch (1998) 1 5.000000\n", + "Bittersweet Motel (2000) 1 5.000000\n", + "Song of Freedom (1936) 1 5.000000\n", + "One Little Indian (1973) 1 5.000000\n", + "Smashing Time (1967) 2 5.000000\n", + "Schlafes Bruder (Brother of Sleep) (1995) 1 5.000000\n", + "Gate of Heavenly Peace, The (1995) 3 5.000000\n", + "Baby, The (1973) 1 5.000000\n", + "I Am Cuba (Soy Cuba/Ya Kuba) (1964) 5 4.800000\n", + "Lamerica (1994) 8 4.750000\n", + "Apple, The (Sib) (1998) 9 4.666667\n", + "Sanjuro (1962) 69 4.608696\n", + "Seven Samurai (The Magnificent Seven) (Shichini... 628 4.560510\n", + "Shawshank Redemption, The (1994) 2227 4.554558\n", + "Godfather, The (1972) 2223 4.524966\n", + "Close Shave, A (1995) 657 4.520548\n", + "Usual Suspects, The (1995) 1783 4.517106\n", + "Schindler's List (1993) 2304 4.510417\n", + "Wrong Trousers, The (1993) 882 4.507937\n", + "Dry Cleaning (Nettoyage à sec) (1997) 2 4.500000\n", + "Inheritors, The (Die Siebtelbauern) (1998) 2 4.500000\n", + "Mamma Roma (1962) 2 4.500000\n", + "Bells, The (1926) 2 4.500000\n", + "Dangerous Game (1993) 2 4.500000\n", + "Hour of the Pig, The (1993) 2 4.500000\n", + "Callejón de los milagros, El (1995) 2 4.500000\n", + "Skipped Parts (2000) 2 4.500000\n", + "Sunset Blvd. (a.k.a. Sunset Boulevard) (1950) 470 4.491489\n", + "... ... ...\n", + "Diebinnen (1995) 1 1.000000\n", + "Blood Spattered Bride, The (La Novia Ensangrent... 2 1.000000\n", + "Bloody Child, The (1996) 1 1.000000\n", + "Uninvited Guest, An (2000) 1 1.000000\n", + "Little Indian, Big City (Un indien dans la vill... 1 1.000000\n", + "Shadows (Cienie) (1988) 1 1.000000\n", + "McCullochs, The (1975) 1 1.000000\n", + "Hillbillys in a Haunted House (1967) 1 1.000000\n", + "Terror in a Texas Town (1958) 1 1.000000\n", + "White Boys (1999) 1 1.000000\n", + "Lotto Land (1995) 1 1.000000\n", + "Nueba Yol (1995) 1 1.000000\n", + "Even Dwarfs Started Small (Auch Zwerge haben kl... 1 1.000000\n", + "Get Over It (1996) 2 1.000000\n", + "Venice/Venice (1992) 2 1.000000\n", + "Sleepover (1995) 1 1.000000\n", + "Silence of the Palace, The (Saimt el Qusur) (1994) 1 1.000000\n", + "Waltzes from Vienna (1933) 1 1.000000\n", + "Wirey Spindell (1999) 2 1.000000\n", + "Kestrel's Eye (Falkens öga) (1998) 1 1.000000\n", + "Spring Fever USA (a.k.a. Lauderdale) (1989) 3 1.000000\n", + "Loves of Carmen, The (1948) 1 1.000000\n", + "Underworld (1997) 1 1.000000\n", + "Low Life, The (1994) 1 1.000000\n", + "Santa with Muscles (1996) 7 1.000000\n", + "Fantastic Night, The (La Nuit Fantastique) (1949) 1 1.000000\n", + "Cheetah (1989) 1 1.000000\n", + "Torso (Corpi Presentano Tracce di Violenza Carn... 2 1.000000\n", + "Mutters Courage (1995) 1 1.000000\n", + "Windows (1980) 1 1.000000\n", + "\n", + "[3706 rows x 2 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "영화평점.sort_values(by='mean', ascending = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "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", + "
countmean
영화제목
American Beauty (1999)34284.317386
Star Wars: Episode IV - A New Hope (1977)29914.453694
Star Wars: Episode V - The Empire Strikes Back (1980)29904.292977
Star Wars: Episode VI - Return of the Jedi (1983)28834.022893
Jurassic Park (1993)26723.763847
\n", + "
" + ], + "text/plain": [ + " count mean\n", + "영화제목 \n", + "American Beauty (1999) 3428 4.317386\n", + "Star Wars: Episode IV - A New Hope (1977) 2991 4.453694\n", + "Star Wars: Episode V - The Empire Strikes Back ... 2990 4.292977\n", + "Star Wars: Episode VI - Return of the Jedi (1983) 2883 4.022893\n", + "Jurassic Park (1993) 2672 3.763847" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#1. 평점 개수가 가장 많은 영화 상위 10개 찾기\n", + "영화평점.sort_values(by = 'count', ascending = False).head()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "scrolled": true + }, + "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", + "
countmean
영화제목
Schindler's List (1993)23044.510417
Shawshank Redemption, The (1994)22274.554558
Godfather, The (1972)22234.524966
Usual Suspects, The (1995)17834.517106
Wrong Trousers, The (1993)8824.507937
Close Shave, A (1995)6574.520548
Seven Samurai (The Magnificent Seven) (Shichinin no samurai) (1954)6284.560510
Sanjuro (1962)694.608696
Apple, The (Sib) (1998)94.666667
Lamerica (1994)84.750000
I Am Cuba (Soy Cuba/Ya Kuba) (1964)54.800000
Gate of Heavenly Peace, The (1995)35.000000
Hour of the Pig, The (1993)24.500000
Inheritors, The (Die Siebtelbauern) (1998)24.500000
Bells, The (1926)24.500000
Smashing Time (1967)25.000000
Skipped Parts (2000)24.500000
Callejón de los milagros, El (1995)24.500000
Dangerous Game (1993)24.500000
Dry Cleaning (Nettoyage à sec) (1997)24.500000
Mamma Roma (1962)24.500000
Follow the Bitch (1998)15.000000
One Little Indian (1973)15.000000
Bittersweet Motel (2000)15.000000
Lured (1947)15.000000
Song of Freedom (1936)15.000000
Ulysses (Ulisse) (1954)15.000000
Baby, The (1973)15.000000
Schlafes Bruder (Brother of Sleep) (1995)15.000000
\n", + "
" + ], + "text/plain": [ + " count mean\n", + "영화제목 \n", + "Schindler's List (1993) 2304 4.510417\n", + "Shawshank Redemption, The (1994) 2227 4.554558\n", + "Godfather, The (1972) 2223 4.524966\n", + "Usual Suspects, The (1995) 1783 4.517106\n", + "Wrong Trousers, The (1993) 882 4.507937\n", + "Close Shave, A (1995) 657 4.520548\n", + "Seven Samurai (The Magnificent Seven) (Shichini... 628 4.560510\n", + "Sanjuro (1962) 69 4.608696\n", + "Apple, The (Sib) (1998) 9 4.666667\n", + "Lamerica (1994) 8 4.750000\n", + "I Am Cuba (Soy Cuba/Ya Kuba) (1964) 5 4.800000\n", + "Gate of Heavenly Peace, The (1995) 3 5.000000\n", + "Hour of the Pig, The (1993) 2 4.500000\n", + "Inheritors, The (Die Siebtelbauern) (1998) 2 4.500000\n", + "Bells, The (1926) 2 4.500000\n", + "Smashing Time (1967) 2 5.000000\n", + "Skipped Parts (2000) 2 4.500000\n", + "Callejón de los milagros, El (1995) 2 4.500000\n", + "Dangerous Game (1993) 2 4.500000\n", + "Dry Cleaning (Nettoyage à sec) (1997) 2 4.500000\n", + "Mamma Roma (1962) 2 4.500000\n", + "Follow the Bitch (1998) 1 5.000000\n", + "One Little Indian (1973) 1 5.000000\n", + "Bittersweet Motel (2000) 1 5.000000\n", + "Lured (1947) 1 5.000000\n", + "Song of Freedom (1936) 1 5.000000\n", + "Ulysses (Ulisse) (1954) 1 5.000000\n", + "Baby, The (1973) 1 5.000000\n", + "Schlafes Bruder (Brother of Sleep) (1995) 1 5.000000" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#2. 평점이 4.5 이상인 영화들 중에 평점의 개수가 많은 순으로 정렬해 보고 싶다\n", + "영화평점높 = 영화평점[영화평점['mean']>=4.5]\n", + "영화평점높.head()\n", + "영화평점높.sort_values(by='count', ascending =False)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "scrolled": true + }, + "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", + "
countmean
영화제목
American Beauty (1999)34284.317386
Godfather, The (1972)22234.524966
Matrix, The (1999)25904.315830
Princess Bride, The (1987)23184.303710
Raiders of the Lost Ark (1981)25144.477725
Saving Private Ryan (1998)26534.337354
Schindler's List (1993)23044.510417
Shawshank Redemption, The (1994)22274.554558
Silence of the Lambs, The (1991)25784.351823
Sixth Sense, The (1999)24594.406263
Star Wars: Episode IV - A New Hope (1977)29914.453694
\n", + "
" + ], + "text/plain": [ + " count mean\n", + "영화제목 \n", + "American Beauty (1999) 3428 4.317386\n", + "Godfather, The (1972) 2223 4.524966\n", + "Matrix, The (1999) 2590 4.315830\n", + "Princess Bride, The (1987) 2318 4.303710\n", + "Raiders of the Lost Ark (1981) 2514 4.477725\n", + "Saving Private Ryan (1998) 2653 4.337354\n", + "Schindler's List (1993) 2304 4.510417\n", + "Shawshank Redemption, The (1994) 2227 4.554558\n", + "Silence of the Lambs, The (1991) 2578 4.351823\n", + "Sixth Sense, The (1999) 2459 4.406263\n", + "Star Wars: Episode IV - A New Hope (1977) 2991 4.453694" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 평점이 4.3이상이고 평점의 수가 2000개 이상\n", + "평점_평점수 = 영화평점[(영화평점['mean']>=4.3)&( 영화평점['count']>=2000)]\n", + "평점_평점수" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'>=' not supported between instances of 'method' and 'float'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# COUNT 와 MEAN은 통계함수로 인식되어 계산되지 않음\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0m평점_평점수\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m영화평점\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m영화평점\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m>=\u001b[0m\u001b[1;36m4.3\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m&\u001b[0m\u001b[1;33m(\u001b[0m \u001b[0m영화평점\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcount\u001b[0m\u001b[1;33m>=\u001b[0m\u001b[1;36m2000\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m: '>=' not supported between instances of 'method' and 'float'" + ] + } + ], + "source": [ + "# COUNT 와 MEAN은 통계함수로 인식되어 계산되지 않음\n", + "평점_평점수 = 영화평점[(영화평점.mean>=4.3)&( 영화평점.count>=2000)]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "영화평점.columns=['개수','평점평균']\n", + "영화평점.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "평점_평점수 = 영화평점[(영화평점.평점평균>=4.3)&(영화평점.개수>=2000)]\n", + "평점_평점수.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. (실습) 여자들이 좋아하는 영화 찾기 (평점이 4.0 이상이고 여성 평점의 개수가 500개 이상인 영화)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3-1. (심화) 여자들이 어떤 장르의 영화를 좋아하는지 찾아보자.\n", + "### 위에서 찾은 여성들이 좋아하는 영화들의 장르를 찾아낸 후, 어떤 장르가 많았는지 확인" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "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", + "
사용자아이디성별연령직업지역영화아이디평점타임스탬프영화제목장르
01F1104806711935978300760One Flew Over the Cuckoo's Nest (1975)Drama
12M56167007211935978298413One Flew Over the Cuckoo's Nest (1975)Drama
212M25123279311934978220179One Flew Over the Cuckoo's Nest (1975)Drama
315M2572290311934978199279One Flew Over the Cuckoo's Nest (1975)Drama
417M5019535011935978158471One Flew Over the Cuckoo's Nest (1975)Drama
\n", + "
" + ], + "text/plain": [ + " 사용자아이디 성별 연령 직업 지역 영화아이디 평점 타임스탬프 \\\n", + "0 1 F 1 10 48067 1193 5 978300760 \n", + "1 2 M 56 16 70072 1193 5 978298413 \n", + "2 12 M 25 12 32793 1193 4 978220179 \n", + "3 15 M 25 7 22903 1193 4 978199279 \n", + "4 17 M 50 1 95350 1193 5 978158471 \n", + "\n", + " 영화제목 장르 \n", + "0 One Flew Over the Cuckoo's Nest (1975) Drama \n", + "1 One Flew Over the Cuckoo's Nest (1975) Drama \n", + "2 One Flew Over the Cuckoo's Nest (1975) Drama \n", + "3 One Flew Over the Cuckoo's Nest (1975) Drama \n", + "4 One Flew Over the Cuckoo's Nest (1975) Drama " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "data3 = data[data.성별 == 'F']" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "scrolled": true + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
사용자아이디성별연령직업지역영화아이디평점타임스탬프영화제목장르
01F1104806711935978300760One Flew Over the Cuckoo's Nest (1975)Drama
518F1839582511934978156168One Flew Over the Cuckoo's Nest (1975)Drama
724F2571002311935978136709One Flew Over the Cuckoo's Nest (1975)Drama
828F2511460711933978125194One Flew Over the Cuckoo's Nest (1975)Drama
1959F5015541311934977934292One Flew Over the Cuckoo's Nest (1975)Drama
2062F3539810511934977968584One Flew Over the Cuckoo's Nest (1975)Drama
2281F2506064011935977785864One Flew Over the Cuckoo's Nest (1975)Drama
2388F4510247611935977694161One Flew Over the Cuckoo's Nest (1975)Drama
2489F5698574911935977683596One Flew Over the Cuckoo's Nest (1975)Drama
2696F25167802811933977621789One Flew Over the Cuckoo's Nest (1975)Drama
2799F1101939011932982791053One Flew Over the Cuckoo's Nest (1975)Drama
36139F25204540911934977359402One Flew Over the Cuckoo's Nest (1975)Drama
37146F35201095411934979940868One Flew Over the Cuckoo's Nest (1975)Drama
39151F25208501311934993121122One Flew Over the Cuckoo's Nest (1975)Drama
43175F2529512311935978051929One Flew Over the Cuckoo's Nest (1975)Drama
50196F3599458711934977004875One Flew Over the Cuckoo's Nest (1975)Drama
55224F1841485011934976833559One Flew Over the Cuckoo's Nest (1975)Drama
62242F1845370611934977267440One Flew Over the Cuckoo's Nest (1975)Drama
67265F3575511611935976649008One Flew Over the Cuckoo's Nest (1975)Drama
71281F3509411711935976571257One Flew Over the Cuckoo's Nest (1975)Drama
72285F3509410911934976579214One Flew Over the Cuckoo's Nest (1975)Drama
77294F4594314711934976541860One Flew Over the Cuckoo's Nest (1975)Drama
87312F5022220711934976475038One Flew Over the Cuckoo's Nest (1975)Drama
88314F5694691111933976751458One Flew Over the Cuckoo's Nest (1975)Drama
89315F5615510511935976465623One Flew Over the Cuckoo's Nest (1975)Drama
91318F56135510411934976426473One Flew Over the Cuckoo's Nest (1975)Drama
92319F5063343611935976418958One Flew Over the Cuckoo's Nest (1975)Drama
99334F5625511311935976378531One Flew Over the Cuckoo's Nest (1975)Drama
102340F2532800111933976341657One Flew Over the Cuckoo's Nest (1975)Drama
105353F3579262511934976323254One Flew Over the Cuckoo's Nest (1975)Drama
.................................
10001183790F25179461826234966019247Trippin' (1999)Comedy
10001243842F3516920543964979988590Fall Time (1995)Drama
10001263945F4519677834134965690592Impact (1949)Crime|Drama
10001283952F4511244913164974595248Anna (1996)Drama
10001454888F560080558204962739636Death in the Garden (Mort en ce jardin, La) (1...Drama
10001506001F257941171381956807238Neon Bible, The (1995)Drama
10001605334F56134614031231960795763Spring Fever USA (a.k.a. Lauderdale) (1989)Comedy
10001634553F35164823732903964551353Soft Toilet Seats (1999)Comedy
10001644553F35164823717092964551353Legal Deceit (1997)Thriller
10001654572F1101703631644964460301Alley Cats, The (1968)Drama
10001664579F18463332331521033002064Happy Go Lovely (1951)Musical
10001674628F5662322518324964050337Heaven's Burning (1997)Action|Drama
10001694888F560080554394962737163Dangerous Game (1993)Drama
10001704651F450100361344963953346Sonic Outlaws (1995)Documentary
10001755878F25060640184241043783975Illtown (1996)Crime|Drama
10001764790F2529413323095963105678Inheritors, The (Die Siebtelbauern) (1998)Drama
10001774816F4560424023094965869069Inheritors, The (Die Siebtelbauern) (1998)Drama
10001824874F254708086244962781918Condition Red (1995)Action|Drama|Thriller
10001845947F45169721514344957190428Stranger, The (1994)Action
10001865944F18102760618681957197520Truce, The (1996)Drama|War
10001885185F354444854044963402617Brother Minister: The Assassination of Malcolm...Documentary
10001925754F1816064025434958272316Six Ways to Sunday (1997)Comedy
10001965328F2549174024384960838075Outside Ozona (1998)Drama|Thriller
10001975334F56134614033233960796159Chain of Fools (2000)Comedy|Crime
10001985334F5613461401271960795494Silence of the Palace, The (Saimt el Qusur) (1...Drama
10001995334F56134614033825960796159Song of Freedom (1936)Drama
10002005420F1191485018433960156505Slappy and the Stinkers (1998)Children's|Comedy
10002015433F3517450142863960240881Nemesis 2: Nebula (1995)Action|Sci-Fi|Thriller
10002025494F35179430635304959816296Smoking/No Smoking (1993)Comedy
10002075851F18205541036075957756608One Little Indian (1973)Comedy|Drama|Western
\n", + "

246440 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " 사용자아이디 성별 연령 직업 지역 영화아이디 평점 타임스탬프 \\\n", + "0 1 F 1 10 48067 1193 5 978300760 \n", + "5 18 F 18 3 95825 1193 4 978156168 \n", + "7 24 F 25 7 10023 1193 5 978136709 \n", + "8 28 F 25 1 14607 1193 3 978125194 \n", + "19 59 F 50 1 55413 1193 4 977934292 \n", + "20 62 F 35 3 98105 1193 4 977968584 \n", + "22 81 F 25 0 60640 1193 5 977785864 \n", + "23 88 F 45 1 02476 1193 5 977694161 \n", + "24 89 F 56 9 85749 1193 5 977683596 \n", + "26 96 F 25 16 78028 1193 3 977621789 \n", + "27 99 F 1 10 19390 1193 2 982791053 \n", + "36 139 F 25 20 45409 1193 4 977359402 \n", + "37 146 F 35 20 10954 1193 4 979940868 \n", + "39 151 F 25 20 85013 1193 4 993121122 \n", + "43 175 F 25 2 95123 1193 5 978051929 \n", + "50 196 F 35 9 94587 1193 4 977004875 \n", + "55 224 F 18 4 14850 1193 4 976833559 \n", + "62 242 F 18 4 53706 1193 4 977267440 \n", + "67 265 F 35 7 55116 1193 5 976649008 \n", + "71 281 F 35 0 94117 1193 5 976571257 \n", + "72 285 F 35 0 94109 1193 4 976579214 \n", + "77 294 F 45 9 43147 1193 4 976541860 \n", + "87 312 F 50 2 22207 1193 4 976475038 \n", + "88 314 F 56 9 46911 1193 3 976751458 \n", + "89 315 F 56 1 55105 1193 5 976465623 \n", + "91 318 F 56 13 55104 1193 4 976426473 \n", + "92 319 F 50 6 33436 1193 5 976418958 \n", + "99 334 F 56 2 55113 1193 5 976378531 \n", + "102 340 F 25 3 28001 1193 3 976341657 \n", + "105 353 F 35 7 92625 1193 4 976323254 \n", + "... ... .. .. .. ... ... .. ... \n", + "1000118 3790 F 25 17 94618 2623 4 966019247 \n", + "1000124 3842 F 35 16 92054 396 4 979988590 \n", + "1000126 3945 F 45 1 96778 3413 4 965690592 \n", + "1000128 3952 F 45 1 12449 1316 4 974595248 \n", + "1000145 4888 F 56 0 08055 820 4 962739636 \n", + "1000150 6001 F 25 7 94117 138 1 956807238 \n", + "1000160 5334 F 56 13 46140 3123 1 960795763 \n", + "1000163 4553 F 35 16 48237 3290 3 964551353 \n", + "1000164 4553 F 35 16 48237 1709 2 964551353 \n", + "1000165 4572 F 1 10 17036 3164 4 964460301 \n", + "1000166 4579 F 18 4 63332 3315 2 1033002064 \n", + "1000167 4628 F 56 6 23225 1832 4 964050337 \n", + "1000169 4888 F 56 0 08055 439 4 962737163 \n", + "1000170 4651 F 45 0 10036 134 4 963953346 \n", + "1000175 5878 F 25 0 60640 1842 4 1043783975 \n", + "1000176 4790 F 25 2 94133 2309 5 963105678 \n", + "1000177 4816 F 45 6 04240 2309 4 965869069 \n", + "1000182 4874 F 25 4 70808 624 4 962781918 \n", + "1000184 5947 F 45 16 97215 1434 4 957190428 \n", + "1000186 5944 F 18 10 27606 1868 1 957197520 \n", + "1000188 5185 F 35 4 44485 404 4 963402617 \n", + "1000192 5754 F 18 1 60640 2543 4 958272316 \n", + "1000196 5328 F 25 4 91740 2438 4 960838075 \n", + "1000197 5334 F 56 13 46140 3323 3 960796159 \n", + "1000198 5334 F 56 13 46140 127 1 960795494 \n", + "1000199 5334 F 56 13 46140 3382 5 960796159 \n", + "1000200 5420 F 1 19 14850 1843 3 960156505 \n", + "1000201 5433 F 35 17 45014 286 3 960240881 \n", + "1000202 5494 F 35 17 94306 3530 4 959816296 \n", + "1000207 5851 F 18 20 55410 3607 5 957756608 \n", + "\n", + " 영화제목 \\\n", + "0 One Flew Over the Cuckoo's Nest (1975) \n", + "5 One Flew Over the Cuckoo's Nest (1975) \n", + "7 One Flew Over the Cuckoo's Nest (1975) \n", + "8 One Flew Over the Cuckoo's Nest (1975) \n", + "19 One Flew Over the Cuckoo's Nest (1975) \n", + "20 One Flew Over the Cuckoo's Nest (1975) \n", + "22 One Flew Over the Cuckoo's Nest (1975) \n", + "23 One Flew Over the Cuckoo's Nest (1975) \n", + "24 One Flew Over the Cuckoo's Nest (1975) \n", + "26 One Flew Over the Cuckoo's Nest (1975) \n", + "27 One Flew Over the Cuckoo's Nest (1975) \n", + "36 One Flew Over the Cuckoo's Nest (1975) \n", + "37 One Flew Over the Cuckoo's Nest (1975) \n", + "39 One Flew Over the Cuckoo's Nest (1975) \n", + "43 One Flew Over the Cuckoo's Nest (1975) \n", + "50 One Flew Over the Cuckoo's Nest (1975) \n", + "55 One Flew Over the Cuckoo's Nest (1975) \n", + "62 One Flew Over the Cuckoo's Nest (1975) \n", + "67 One Flew Over the Cuckoo's Nest (1975) \n", + "71 One Flew Over the Cuckoo's Nest (1975) \n", + "72 One Flew Over the Cuckoo's Nest (1975) \n", + "77 One Flew Over the Cuckoo's Nest (1975) \n", + "87 One Flew Over the Cuckoo's Nest (1975) \n", + "88 One Flew Over the Cuckoo's Nest (1975) \n", + "89 One Flew Over the Cuckoo's Nest (1975) \n", + "91 One Flew Over the Cuckoo's Nest (1975) \n", + "92 One Flew Over the Cuckoo's Nest (1975) \n", + "99 One Flew Over the Cuckoo's Nest (1975) \n", + "102 One Flew Over the Cuckoo's Nest (1975) \n", + "105 One Flew Over the Cuckoo's Nest (1975) \n", + "... ... \n", + "1000118 Trippin' (1999) \n", + "1000124 Fall Time (1995) \n", + "1000126 Impact (1949) \n", + "1000128 Anna (1996) \n", + "1000145 Death in the Garden (Mort en ce jardin, La) (1... \n", + "1000150 Neon Bible, The (1995) \n", + "1000160 Spring Fever USA (a.k.a. Lauderdale) (1989) \n", + "1000163 Soft Toilet Seats (1999) \n", + "1000164 Legal Deceit (1997) \n", + "1000165 Alley Cats, The (1968) \n", + "1000166 Happy Go Lovely (1951) \n", + "1000167 Heaven's Burning (1997) \n", + "1000169 Dangerous Game (1993) \n", + "1000170 Sonic Outlaws (1995) \n", + "1000175 Illtown (1996) \n", + "1000176 Inheritors, The (Die Siebtelbauern) (1998) \n", + "1000177 Inheritors, The (Die Siebtelbauern) (1998) \n", + "1000182 Condition Red (1995) \n", + "1000184 Stranger, The (1994) \n", + "1000186 Truce, The (1996) \n", + "1000188 Brother Minister: The Assassination of Malcolm... \n", + "1000192 Six Ways to Sunday (1997) \n", + "1000196 Outside Ozona (1998) \n", + "1000197 Chain of Fools (2000) \n", + "1000198 Silence of the Palace, The (Saimt el Qusur) (1... \n", + "1000199 Song of Freedom (1936) \n", + "1000200 Slappy and the Stinkers (1998) \n", + "1000201 Nemesis 2: Nebula (1995) \n", + "1000202 Smoking/No Smoking (1993) \n", + "1000207 One Little Indian (1973) \n", + "\n", + " 장르 \n", + "0 Drama \n", + "5 Drama \n", + "7 Drama \n", + "8 Drama \n", + "19 Drama \n", + "20 Drama \n", + "22 Drama \n", + "23 Drama \n", + "24 Drama \n", + "26 Drama \n", + "27 Drama \n", + "36 Drama \n", + "37 Drama \n", + "39 Drama \n", + "43 Drama \n", + "50 Drama \n", + "55 Drama \n", + "62 Drama \n", + "67 Drama \n", + "71 Drama \n", + "72 Drama \n", + "77 Drama \n", + "87 Drama \n", + "88 Drama \n", + "89 Drama \n", + "91 Drama \n", + "92 Drama \n", + "99 Drama \n", + "102 Drama \n", + "105 Drama \n", + "... ... \n", + "1000118 Comedy \n", + "1000124 Drama \n", + "1000126 Crime|Drama \n", + "1000128 Drama \n", + "1000145 Drama \n", + "1000150 Drama \n", + "1000160 Comedy \n", + "1000163 Comedy \n", + "1000164 Thriller \n", + "1000165 Drama \n", + "1000166 Musical \n", + "1000167 Action|Drama \n", + "1000169 Drama \n", + "1000170 Documentary \n", + "1000175 Crime|Drama \n", + "1000176 Drama \n", + "1000177 Drama \n", + "1000182 Action|Drama|Thriller \n", + "1000184 Action \n", + "1000186 Drama|War \n", + "1000188 Documentary \n", + "1000192 Comedy \n", + "1000196 Drama|Thriller \n", + "1000197 Comedy|Crime \n", + "1000198 Drama \n", + "1000199 Drama \n", + "1000200 Children's|Comedy \n", + "1000201 Action|Sci-Fi|Thriller \n", + "1000202 Comedy \n", + "1000207 Comedy|Drama|Western \n", + "\n", + "[246440 rows x 10 columns]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data3" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
countmean
영화제목
$1,000,000 Duck (1971)163.375000
'Night Mother (1986)363.388889
'Til There Was You (1997)372.675676
'burbs, The (1989)922.793478
...And Justice for All (1979)353.828571
1-900 (1994)12.000000
10 Things I Hate About You (1999)2323.646552
101 Dalmatians (1961)1873.791444
101 Dalmatians (1996)1503.240000
12 Angry Men (1957)1414.184397
13th Warrior, The (1999)1253.112000
187 (1997)72.428571
2 Days in the Valley (1996)453.488889
20 Dates (1998)292.620690
20,000 Leagues Under the Sea (1954)973.670103
200 Cigarettes (1999)713.169014
2001: A Space Odyssey (1968)3443.825581
2010 (1984)473.446809
24 7: Twenty Four Seven (1997)15.000000
24-hour Woman (1998)42.000000
28 Days (2000)1913.209424
3 Ninjas: High Noon On Mega Mountain (1998)101.400000
301, 302 (1995)23.000000
39 Steps, The (1935)583.965517
400 Blows, The (Les Quatre cents coups) (1959)474.489362
42 Up (1998)303.966667
52 Pick-Up (1986)233.304348
54 (1998)572.701754
7th Voyage of Sinbad, The (1958)443.409091
8 1/2 (1963)524.096154
.........
World of Apu, The (Apur Sansar) (1959)194.842105
Wrong Man, The (1956)273.703704
Wrong Trousers, The (1993)2384.588235
Wrongfully Accused (1998)122.666667
Wyatt Earp (1994)343.147059
X-Files: Fight the Future, The (1998)1903.489474
X-Men (2000)2773.682310
X: The Unknown (1956)42.250000
Xiu Xiu: The Sent-Down Girl (Tian yu) (1998)283.821429
Yankee Zulu (1994)13.000000
Yards, The (1999)162.687500
Year My Voice Broke, The (1987)104.000000
Year of Living Dangerously (1982)1233.951220
Yellow Submarine (1968)1193.714286
Yojimbo (1961)264.423077
You Can't Take It With You (1938)264.192308
You So Crazy (1994)33.666667
You've Got Mail (1998)3303.542424
Young Doctors in Love (1982)131.923077
Young Frankenstein (1974)2694.289963
Young Guns (1988)783.371795
Young Guns II (1990)462.934783
Young Poisoner's Handbook, The (1995)174.000000
Young Sherlock Holmes (1985)683.514706
Young and Innocent (1937)22.500000
Your Friends and Neighbors (1998)272.888889
Zed & Two Noughts, A (1985)83.500000
Zero Effect (1998)593.864407
Zeus and Roxanne (1997)92.777778
eXistenZ (1999)713.098592
\n", + "

3481 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " count mean\n", + "영화제목 \n", + "$1,000,000 Duck (1971) 16 3.375000\n", + "'Night Mother (1986) 36 3.388889\n", + "'Til There Was You (1997) 37 2.675676\n", + "'burbs, The (1989) 92 2.793478\n", + "...And Justice for All (1979) 35 3.828571\n", + "1-900 (1994) 1 2.000000\n", + "10 Things I Hate About You (1999) 232 3.646552\n", + "101 Dalmatians (1961) 187 3.791444\n", + "101 Dalmatians (1996) 150 3.240000\n", + "12 Angry Men (1957) 141 4.184397\n", + "13th Warrior, The (1999) 125 3.112000\n", + "187 (1997) 7 2.428571\n", + "2 Days in the Valley (1996) 45 3.488889\n", + "20 Dates (1998) 29 2.620690\n", + "20,000 Leagues Under the Sea (1954) 97 3.670103\n", + "200 Cigarettes (1999) 71 3.169014\n", + "2001: A Space Odyssey (1968) 344 3.825581\n", + "2010 (1984) 47 3.446809\n", + "24 7: Twenty Four Seven (1997) 1 5.000000\n", + "24-hour Woman (1998) 4 2.000000\n", + "28 Days (2000) 191 3.209424\n", + "3 Ninjas: High Noon On Mega Mountain (1998) 10 1.400000\n", + "301, 302 (1995) 2 3.000000\n", + "39 Steps, The (1935) 58 3.965517\n", + "400 Blows, The (Les Quatre cents coups) (1959) 47 4.489362\n", + "42 Up (1998) 30 3.966667\n", + "52 Pick-Up (1986) 23 3.304348\n", + "54 (1998) 57 2.701754\n", + "7th Voyage of Sinbad, The (1958) 44 3.409091\n", + "8 1/2 (1963) 52 4.096154\n", + "... ... ...\n", + "World of Apu, The (Apur Sansar) (1959) 19 4.842105\n", + "Wrong Man, The (1956) 27 3.703704\n", + "Wrong Trousers, The (1993) 238 4.588235\n", + "Wrongfully Accused (1998) 12 2.666667\n", + "Wyatt Earp (1994) 34 3.147059\n", + "X-Files: Fight the Future, The (1998) 190 3.489474\n", + "X-Men (2000) 277 3.682310\n", + "X: The Unknown (1956) 4 2.250000\n", + "Xiu Xiu: The Sent-Down Girl (Tian yu) (1998) 28 3.821429\n", + "Yankee Zulu (1994) 1 3.000000\n", + "Yards, The (1999) 16 2.687500\n", + "Year My Voice Broke, The (1987) 10 4.000000\n", + "Year of Living Dangerously (1982) 123 3.951220\n", + "Yellow Submarine (1968) 119 3.714286\n", + "Yojimbo (1961) 26 4.423077\n", + "You Can't Take It With You (1938) 26 4.192308\n", + "You So Crazy (1994) 3 3.666667\n", + "You've Got Mail (1998) 330 3.542424\n", + "Young Doctors in Love (1982) 13 1.923077\n", + "Young Frankenstein (1974) 269 4.289963\n", + "Young Guns (1988) 78 3.371795\n", + "Young Guns II (1990) 46 2.934783\n", + "Young Poisoner's Handbook, The (1995) 17 4.000000\n", + "Young Sherlock Holmes (1985) 68 3.514706\n", + "Young and Innocent (1937) 2 2.500000\n", + "Your Friends and Neighbors (1998) 27 2.888889\n", + "Zed & Two Noughts, A (1985) 8 3.500000\n", + "Zero Effect (1998) 59 3.864407\n", + "Zeus and Roxanne (1997) 9 2.777778\n", + "eXistenZ (1999) 71 3.098592\n", + "\n", + "[3481 rows x 2 columns]" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data3.pivot_table(index = '영화제목', values = '평점', aggfunc = ('mean', 'count'))" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "여성평점 = data3.pivot_table(index = '영화제목', values = '평점', aggfunc = ('mean', 'count'))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "여성인기영화 = 여성평점[(여성평점['count']>= 500) & (여성평점['mean']>= 4.0)]" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
영화아이디장르
영화제목
Toy Story (1995)1Animation|Children's|Comedy
Jumanji (1995)2Adventure|Children's|Fantasy
Grumpier Old Men (1995)3Comedy|Romance
Waiting to Exhale (1995)4Comedy|Drama
Father of the Bride Part II (1995)5Comedy
Heat (1995)6Action|Crime|Thriller
Sabrina (1995)7Comedy|Romance
Tom and Huck (1995)8Adventure|Children's
Sudden Death (1995)9Action
GoldenEye (1995)10Action|Adventure|Thriller
\n", + "
" + ], + "text/plain": [ + " 영화아이디 장르\n", + "영화제목 \n", + "Toy Story (1995) 1 Animation|Children's|Comedy\n", + "Jumanji (1995) 2 Adventure|Children's|Fantasy\n", + "Grumpier Old Men (1995) 3 Comedy|Romance\n", + "Waiting to Exhale (1995) 4 Comedy|Drama\n", + "Father of the Bride Part II (1995) 5 Comedy\n", + "Heat (1995) 6 Action|Crime|Thriller\n", + "Sabrina (1995) 7 Comedy|Romance\n", + "Tom and Huck (1995) 8 Adventure|Children's\n", + "Sudden Death (1995) 9 Action\n", + "GoldenEye (1995) 10 Action|Adventure|Thriller" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "movies2= movies.set_index('영화제목')\n", + "movies2.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "ename": "KeyError", + "evalue": "'장르'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_value\u001b[1;34m(self, series, key)\u001b[0m\n\u001b[0;32m 3108\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3109\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mlibindex\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_value_box\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3110\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mIndexError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.get_value_box\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.get_value_box\u001b[1;34m()\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: 'str' object cannot be interpreted as an integer", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mpd\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mconcat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0m여성평점\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmovies2\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'장르'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msort\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mjoin\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'inner'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\series.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 764\u001b[0m \u001b[0mkey\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcom\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_apply_if_callable\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 765\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 766\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_value\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 767\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 768\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mis_scalar\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_value\u001b[1;34m(self, series, key)\u001b[0m\n\u001b[0;32m 3115\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mInvalidIndexError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3116\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3117\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0me1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3118\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# pragma: no cover\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3119\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0me1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_value\u001b[1;34m(self, series, key)\u001b[0m\n\u001b[0;32m 3101\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3102\u001b[0m return self._engine.get_value(s, k,\n\u001b[1;32m-> 3103\u001b[1;33m tz=getattr(series.dtype, 'tz', None))\n\u001b[0m\u001b[0;32m 3104\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3105\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m0\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0minferred_type\u001b[0m \u001b[1;32min\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;34m'integer'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'boolean'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_value\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_value\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", + "\u001b[1;31mKeyError\u001b[0m: '장르'" + ] + } + ], + "source": [ + "pd.concat([여성인기영화, movies2['장르']],axis=1, sort = True, join = 'inner')" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "'장르'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 3062\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3063\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3064\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", + "\u001b[1;31mKeyError\u001b[0m: '장르'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0m여성인기장르\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m여성인기영화\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'장르'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'|'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mexpand\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 2683\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2684\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2685\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_getitem_column\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2686\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2687\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_getitem_column\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36m_getitem_column\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 2690\u001b[0m \u001b[1;31m# get column\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2691\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_unique\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2692\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_item_cache\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2693\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2694\u001b[0m \u001b[1;31m# duplicate columns & possible reduce dimensionality\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36m_get_item_cache\u001b[1;34m(self, item)\u001b[0m\n\u001b[0;32m 2484\u001b[0m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcache\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2485\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mres\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2486\u001b[1;33m \u001b[0mvalues\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2487\u001b[0m \u001b[0mres\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_box_item_values\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalues\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2488\u001b[0m \u001b[0mcache\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mres\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\internals.py\u001b[0m in \u001b[0;36mget\u001b[1;34m(self, item, fastpath)\u001b[0m\n\u001b[0;32m 4113\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4114\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0misna\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 4115\u001b[1;33m \u001b[0mloc\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4116\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4117\u001b[0m \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0misna\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexes\\base.py\u001b[0m in \u001b[0;36mget_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 3063\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3064\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3065\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3066\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3067\u001b[0m \u001b[0mindexer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", + "\u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n", + "\u001b[1;31mKeyError\u001b[0m: '장르'" + ] + } + ], + "source": [ + "여성인기장르 = 여성인기영화['장르'].str.split('|',expand=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name '여성인기장르' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0m인기장르\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m여성인기장르\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue_counts\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m여성인기장르\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue_counts\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mfill_value\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mcol\u001b[0m \u001b[1;32min\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0m인기장르\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m인기장르\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m여성인기장르\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mcol\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue_counts\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfill_value\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0m인기장르\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msort_values\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mascending\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name '여성인기장르' is not defined" + ] + } + ], + "source": [ + "인기장르 = 여성인기장르[0].value_counts().add(여성인기장르[1].value_counts(),fill_value=0)\n", + "for col in [2,3,4]:\n", + " 인기장르 = 인기장르.add(여성인기장르[col].value_counts(), fill_value = 0)\n", + "인기장르.sort_values(ascending = False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## (실습) 4. 남자와 여자의 호불호가 크게 갈리는 영화 10개를 출력 \n", + "### 전체 평점의 개수가 500개 이상인 영화만 대상으로 함." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "여자평점평균" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "# 전체 평점의 개수 500개 이상 -> 남자평점평균, 여자 평점평균의 차이가 큰 10개의 영화 \n", + "data3 = data[data.성별 == 'F']\n", + "여자평점평균 = data3.pivot_table(index='영화제목', values = '평점', aggfunc = 'mean') \n", + "data3_1 = data[data.성별 =='M']\n", + "남자평점평균 = data3_1.pivot_table(index='영화제목', values = '평점', aggfunc = 'mean')\n", + "차이 = abs(여자평점평균['평점'] - 남자평점평균['평점'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "abs(여자평점평균['평점'] - 남자평점평균['평점'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "차이 = DataFrame(차이)\n", + "차이" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "평점개수 = data.pivot_table(index = '영화제목', values = '평점', aggfunc = ('count'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "평점오백이상 = 평점개수[평점개수['평점']>=500]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "평점오백이상_평점차= pd.merge(평점오백이상,차이, how='left', left_on = '영화제목', right_on = '영화제목')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "남자와여자의호불호가크게갈리는영화 = 평점오백이상_평점차.sort_values(by = '평점_y', ascending = False).head(10)\n", + "남자와여자의호불호가크게갈리는영화" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 답\n", + "성별영화평점 = data.pivot_table(index='영화제목',columns='성별',values = '평점',aggfunc=('count','mean'))\n", + "평점500개이상 = 성별영화평점[('count','F')]+성별영화평점[('count','M')]>=500\n", + "성별영화평점 = 성별영화평점[평점500개이상]\n", + "성별영화평점['남녀차이']= abs(성별영화평점[('mean','F')]-성별영화평점[('mean','M')])\n", + "성별영화평점.sort_values(by='남녀차이', ascending = False).head(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## 5. (실습) 연령대 별로 영화 평점 분석하기" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data.head(20)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def 연령대생성 (x):\n", + " if x <10 :\n", + " return '10세 미만'\n", + " elif x<20 :\n", + " return '10대'\n", + " elif x<30 :\n", + " return '20대'\n", + " elif x<40 :\n", + " return '30대'\n", + " elif x<50 :\n", + " return '40대'\n", + " elif x<60 :\n", + " return '50대'\n", + " else:\n", + " return '60대 이상'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data.연령.apply(연령대생성)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data['연령대']=data.연령.apply(연령대생성)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data.pivot_table(index='영화제목',columns='연령대', values = '평점', aggfunc=('count','mean'), fill_value = '-')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 2. NC \353\213\244\354\235\264\353\205\270\354\212\244 \354\204\240\354\210\230 \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235.ipynb" "b/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 2. NC \353\213\244\354\235\264\353\205\270\354\212\244 \354\204\240\354\210\230 \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235.ipynb" new file mode 100644 index 0000000..43051a9 --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 2. NC \353\213\244\354\235\264\353\205\270\354\212\244 \354\204\240\354\210\230 \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235.ipynb" @@ -0,0 +1,6069 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pandas import Series, DataFrame\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# NC 다이노스 선수 데이터 분석\n", + "## 1. 데이터 적재 및 통합" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# sheet_name = None으로 읽으면 데이터프레임이 아닌 OrderedDict(정렬된 사전식) 방식으로 출력\n", + "data = pd.read_excel('data/NC Dinos.xlsx', sheet_name=None)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "OrderedDict([('2013',\n", + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 출루율 \\\n", + " 0 모창민 NC 108 436 395 109 12 57 51 37 68 16 0.307 0.276 0.339 \n", + " 1 이호준 NC 126 508 442 123 20 46 87 60 109 2 0.324 0.278 0.362 \n", + " 2 김종호 NC 128 546 465 129 0 72 22 57 100 50 0.352 0.277 0.376 \n", + " 3 나성범 NC 104 458 404 98 14 55 64 33 95 12 0.279 0.243 0.319 \n", + " 4 조영훈 NC 120 426 380 107 6 38 39 39 56 4 0.316 0.282 0.350 \n", + " 5 이현곤 NC 91 161 139 38 0 10 9 16 14 2 0.304 0.273 0.361 \n", + " 6 이상호 NC 102 138 125 31 0 26 13 9 21 24 0.298 0.248 0.299 \n", + " 7 강진성 NC 3 3 2 1 0 1 0 1 0 0 0.500 0.500 0.667 \n", + " 8 조평호 NC 26 86 79 21 2 12 7 6 24 1 0.358 0.266 0.318 \n", + " 9 박민우 NC 32 48 42 11 0 10 6 5 7 9 0.306 0.262 0.333 \n", + " 10 박정준 NC 77 195 167 41 4 24 21 23 44 4 0.303 0.246 0.335 \n", + " 11 이승호 NC 2 1 0 0 0 0 0 1 0 1 - - 1.000 \n", + " 12 마낙길 NC 24 31 29 9 0 5 0 1 5 2 0.375 0.310 0.333 \n", + " 13 김성욱 NC 4 4 4 1 0 0 1 0 2 0 0.500 0.250 0.250 \n", + " 14 강구성 NC 2 2 2 0 0 0 0 0 0 0 0.000 0.000 0.000 \n", + " 15 지석훈 NC 104 356 309 68 3 25 35 30 82 2 0.285 0.220 0.300 \n", + " 16 김종찬 NC 5 7 7 1 0 0 0 0 3 0 0.250 0.143 0.143 \n", + " 17 차화준 NC 58 121 106 24 1 18 7 12 29 4 0.295 0.226 0.306 \n", + " 18 김동건 NC 7 17 16 2 1 1 1 1 7 0 0.125 0.125 0.176 \n", + " 19 이창섭 NC 5 5 5 0 0 0 0 0 2 0 0.000 0.000 0.000 \n", + " \n", + " 장타율 OPS wOBA WAR \n", + " 0 0.443 0.782 0.353 2.31 \n", + " 1 0.475 0.837 0.373 1.85 \n", + " 2 0.333 0.709 0.339 1.55 \n", + " 3 0.416 0.735 0.329 1.50 \n", + " 4 0.413 0.763 0.348 0.83 \n", + " 5 0.324 0.685 0.327 0.52 \n", + " 6 0.320 0.619 0.289 0.16 \n", + " 7 1.000 1.667 0.671 0.10 \n", + " 8 0.418 0.736 0.329 0.09 \n", + " 9 0.286 0.619 0.296 0.07 \n", + " 10 0.353 0.688 0.320 0.06 \n", + " 11 - - 0.712 0.06 \n", + " 12 0.345 0.678 0.317 -0.03 \n", + " 13 0.250 0.500 0.234 -0.03 \n", + " 14 0.000 0.000 0.000 -0.06 \n", + " 15 0.330 0.630 0.293 -0.09 \n", + " 16 0.143 0.286 0.134 -0.11 \n", + " 17 0.311 0.617 0.289 -0.12 \n", + " 18 0.313 0.489 0.216 -0.14 \n", + " 19 0.000 0.000 0.000 -0.14 ),\n", + " ('2014',\n", + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 \\\n", + " 0 테임즈 NC 125 514 443 152 37 95 121 58 99 11 0.367 0.343 \n", + " 1 나성범 NC 123 536 477 157 30 88 101 43 128 14 0.397 0.329 \n", + " 2 박민우 NC 118 491 416 124 1 87 40 56 89 50 0.373 0.298 \n", + " 3 손시헌 NC 97 361 307 90 5 39 39 34 53 2 0.331 0.293 \n", + " 4 지석훈 NC 114 238 212 58 6 26 34 16 46 1 0.323 0.274 \n", + " 5 이호준 NC 122 500 424 115 23 59 78 67 104 2 0.305 0.271 \n", + " 6 권희동 NC 101 252 221 63 7 39 36 25 43 6 0.324 0.285 \n", + " 7 모창민 NC 122 468 419 110 16 62 72 37 82 14 0.289 0.263 \n", + " 8 이종욱 NC 124 495 438 126 6 73 79 40 60 15 0.313 0.288 \n", + " 9 김준완 NC 6 5 4 2 0 1 0 1 1 1 0.667 0.500 \n", + " 10 최재원 NC 2 2 1 0 0 1 0 1 1 0 - 0.000 \n", + " 11 마낙길 NC 2 2 1 0 0 1 0 1 0 0 0.000 0.000 \n", + " 12 조영훈 NC 92 124 111 29 6 15 22 10 26 1 0.288 0.261 \n", + " 13 김태우 NC 4 5 5 1 0 0 0 0 3 0 0.500 0.200 \n", + " 14 박명환* NC 2 1 1 0 0 0 0 0 1 0 - 0.000 \n", + " 15 조평호 NC 2 2 2 0 0 0 0 0 0 0 0.000 0.000 \n", + " 16 강민국 NC 6 3 3 0 0 0 0 0 0 0 0.000 0.000 \n", + " 17 허준 NC 28 36 29 5 0 2 1 5 10 0 0.263 0.172 \n", + " 18 김성욱 NC 26 26 23 4 1 6 1 3 9 1 0.231 0.174 \n", + " 19 노진혁 NC 25 16 16 3 1 3 2 0 7 0 0.250 0.188 \n", + " \n", + " 출루율 장타율 OPS wOBA WAR \n", + " 0 0.422 0.688 1.110 0.456 6.36 \n", + " 1 0.400 0.597 0.997 0.424 5.94 \n", + " 2 0.392 0.399 0.791 0.365 2.73 \n", + " 3 0.368 0.414 0.782 0.349 1.52 \n", + " 4 0.340 0.462 0.802 0.352 0.97 \n", + " 5 0.371 0.481 0.852 0.369 0.88 \n", + " 6 0.363 0.443 0.806 0.353 0.62 \n", + " 7 0.320 0.413 0.733 0.319 0.17 \n", + " 8 0.343 0.411 0.754 0.332 0.13 \n", + " 9 0.600 0.500 1.100 0.509 0.11 \n", + " 10 0.500 0.000 0.500 0.363 0.01 \n", + " 11 0.500 0.000 0.500 0.363 0.01 \n", + " 12 0.325 0.459 0.784 0.337 -0.02 \n", + " 13 0.200 0.400 0.600 0.244 -0.03 \n", + " 14 0.000 0.000 0.000 0.000 -0.03 \n", + " 15 0.000 0.000 0.000 0.000 -0.07 \n", + " 16 0.000 0.000 0.000 0.000 -0.10 \n", + " 17 0.294 0.276 0.570 0.268 -0.11 \n", + " 18 0.269 0.348 0.617 0.272 -0.15 \n", + " 19 0.188 0.375 0.563 0.231 -0.18 ),\n", + " ('2015',\n", + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 \\\n", + " 0 테임즈 NC 142 595 472 180 47 130 140 103 91 40 0.390 0.381 \n", + " 1 나성범 NC 144 622 564 184 28 112 135 33 127 23 0.374 0.326 \n", + " 2 박민우 NC 141 617 520 158 3 111 47 73 108 46 0.373 0.304 \n", + " 3 이호준 NC 131 518 449 132 24 48 110 61 102 0 0.332 0.294 \n", + " 4 김종호 NC 133 486 424 125 4 90 36 44 65 41 0.338 0.295 \n", + " 5 조영훈 NC 103 146 124 35 8 20 35 19 36 3 0.329 0.282 \n", + " 6 손시헌 NC 140 508 440 108 13 56 58 36 66 3 0.260 0.245 \n", + " 7 이종욱 NC 125 504 440 118 5 63 52 54 78 17 0.315 0.268 \n", + " 8 모창민 NC 103 239 214 62 6 23 35 18 52 5 0.352 0.290 \n", + " 9 지석훈 NC 137 466 415 111 11 53 46 23 85 4 0.311 0.267 \n", + " 10 용덕한 NC 50 49 42 12 0 4 5 5 8 2 0.353 0.286 \n", + " 11 최재원 NC 114 102 85 21 2 31 13 10 29 14 0.352 0.247 \n", + " 12 박정준 NC 19 24 21 8 0 2 2 0 5 0 0.500 0.381 \n", + " 13 김태군 NC 144 474 421 107 6 45 52 25 77 1 0.293 0.254 \n", + " 14 조평호 NC 22 22 22 8 1 4 3 0 6 0 0.467 0.364 \n", + " 15 이창섭 NC 15 8 5 0 0 0 0 3 3 0 0.000 0.000 \n", + " 16 김준완 NC 30 54 44 10 0 12 2 10 10 2 0.294 0.227 \n", + " 17 강구성 NC 4 5 5 1 0 0 0 0 0 0 0.200 0.200 \n", + " 18 강민국 NC 1 2 2 0 0 0 0 0 1 0 0.000 0.000 \n", + " 19 김태진 NC 1 3 3 0 0 0 0 0 0 0 0.000 0.000 \n", + " \n", + " 출루율 장타율 OPS wOBA WAR \n", + " 0 0.497 0.790 1.287 0.520 11.73 \n", + " 1 0.373 0.553 0.926 0.390 4.46 \n", + " 2 0.399 0.404 0.803 0.364 3.52 \n", + " 3 0.381 0.510 0.891 0.381 2.19 \n", + " 4 0.364 0.394 0.758 0.340 1.03 \n", + " 5 0.372 0.540 0.912 0.389 1.00 \n", + " 6 0.319 0.398 0.717 0.316 0.85 \n", + " 7 0.351 0.368 0.719 0.322 0.84 \n", + " 8 0.340 0.439 0.779 0.340 0.76 \n", + " 9 0.328 0.383 0.711 0.317 0.51 \n", + " 10 0.375 0.310 0.685 0.326 0.44 \n", + " 11 0.366 0.412 0.778 0.350 0.30 \n", + " 12 0.458 0.476 0.934 0.417 0.25 \n", + " 13 0.307 0.354 0.661 0.294 0.25 \n", + " 14 0.364 0.591 0.955 0.401 0.18 \n", + " 15 0.375 0.000 0.375 0.286 -0.01 \n", + " 16 0.370 0.227 0.597 0.308 -0.04 \n", + " 17 0.200 0.400 0.600 0.242 -0.04 \n", + " 18 0.000 0.000 0.000 0.000 -0.06 \n", + " 19 0.000 0.000 0.000 0.000 -0.09 )])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "NC13, NC14, NC15 = data.values()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
선수명팀명경기타석타수안타홈런득점타점볼넷삼진도루BABIP타율출루율장타율OPSwOBAWAR
0모창민NC1084363951091257513768160.3070.2760.3390.4430.7820.3532.31
1이호준NC1265084421232046876010920.3240.2780.3620.4750.8370.3731.85
2김종호NC1285464651290722257100500.3520.2770.3760.3330.7090.3391.55
3나성범NC104458404981455643395120.2790.2430.3190.4160.7350.3291.50
4조영훈NC12042638010763839395640.3160.2820.3500.4130.7630.3480.83
5이현곤NC91161139380109161420.3040.2730.3610.3240.6850.3270.52
6이상호NC1021381253102613921240.2980.2480.2990.3200.6190.2890.16
7강진성NC33210101000.5000.5000.6671.0001.6670.6710.10
8조평호NC26867921212762410.3580.2660.3180.4180.7360.3290.09
9박민우NC3248421101065790.3060.2620.3330.2860.6190.2960.07
10박정준NC771951674142421234440.3030.2460.3350.3530.6880.3200.06
11이승호NC2100000101--1.000--0.7120.06
12마낙길NC24312990501520.3750.3100.3330.3450.6780.317-0.03
13김성욱NC44410010200.5000.2500.2500.2500.5000.234-0.03
14강구성NC22200000000.0000.0000.0000.0000.0000.000-0.06
15지석훈NC1043563096832535308220.2850.2200.3000.3300.6300.293-0.09
16김종찬NC57710000300.2500.1430.1430.1430.2860.134-0.11
17차화준NC58121106241187122940.2950.2260.3060.3110.6170.289-0.12
18김동건NC7171621111700.1250.1250.1760.3130.4890.216-0.14
19이창섭NC55500000200.0000.0000.0000.0000.0000.000-0.14
\n", + "
" + ], + "text/plain": [ + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 출루율 \\\n", + "0 모창민 NC 108 436 395 109 12 57 51 37 68 16 0.307 0.276 0.339 \n", + "1 이호준 NC 126 508 442 123 20 46 87 60 109 2 0.324 0.278 0.362 \n", + "2 김종호 NC 128 546 465 129 0 72 22 57 100 50 0.352 0.277 0.376 \n", + "3 나성범 NC 104 458 404 98 14 55 64 33 95 12 0.279 0.243 0.319 \n", + "4 조영훈 NC 120 426 380 107 6 38 39 39 56 4 0.316 0.282 0.350 \n", + "5 이현곤 NC 91 161 139 38 0 10 9 16 14 2 0.304 0.273 0.361 \n", + "6 이상호 NC 102 138 125 31 0 26 13 9 21 24 0.298 0.248 0.299 \n", + "7 강진성 NC 3 3 2 1 0 1 0 1 0 0 0.500 0.500 0.667 \n", + "8 조평호 NC 26 86 79 21 2 12 7 6 24 1 0.358 0.266 0.318 \n", + "9 박민우 NC 32 48 42 11 0 10 6 5 7 9 0.306 0.262 0.333 \n", + "10 박정준 NC 77 195 167 41 4 24 21 23 44 4 0.303 0.246 0.335 \n", + "11 이승호 NC 2 1 0 0 0 0 0 1 0 1 - - 1.000 \n", + "12 마낙길 NC 24 31 29 9 0 5 0 1 5 2 0.375 0.310 0.333 \n", + "13 김성욱 NC 4 4 4 1 0 0 1 0 2 0 0.500 0.250 0.250 \n", + "14 강구성 NC 2 2 2 0 0 0 0 0 0 0 0.000 0.000 0.000 \n", + "15 지석훈 NC 104 356 309 68 3 25 35 30 82 2 0.285 0.220 0.300 \n", + "16 김종찬 NC 5 7 7 1 0 0 0 0 3 0 0.250 0.143 0.143 \n", + "17 차화준 NC 58 121 106 24 1 18 7 12 29 4 0.295 0.226 0.306 \n", + "18 김동건 NC 7 17 16 2 1 1 1 1 7 0 0.125 0.125 0.176 \n", + "19 이창섭 NC 5 5 5 0 0 0 0 0 2 0 0.000 0.000 0.000 \n", + "\n", + " 장타율 OPS wOBA WAR \n", + "0 0.443 0.782 0.353 2.31 \n", + "1 0.475 0.837 0.373 1.85 \n", + "2 0.333 0.709 0.339 1.55 \n", + "3 0.416 0.735 0.329 1.50 \n", + "4 0.413 0.763 0.348 0.83 \n", + "5 0.324 0.685 0.327 0.52 \n", + "6 0.320 0.619 0.289 0.16 \n", + "7 1.000 1.667 0.671 0.10 \n", + "8 0.418 0.736 0.329 0.09 \n", + "9 0.286 0.619 0.296 0.07 \n", + "10 0.353 0.688 0.320 0.06 \n", + "11 - - 0.712 0.06 \n", + "12 0.345 0.678 0.317 -0.03 \n", + "13 0.250 0.500 0.234 -0.03 \n", + "14 0.000 0.000 0.000 -0.06 \n", + "15 0.330 0.630 0.293 -0.09 \n", + "16 0.143 0.286 0.134 -0.11 \n", + "17 0.311 0.617 0.289 -0.12 \n", + "18 0.313 0.489 0.216 -0.14 \n", + "19 0.000 0.000 0.000 -0.14 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "NC13" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "NC13['년도'] = 2013\n", + "NC14['년도'] = 2014\n", + "NC15['년도'] = 2015" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "NC = pd.concat([NC13,NC14,NC15],axis= 0 , ignore_index = True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. 2015년도 선수 기록을 '타율'로 내림차순 정렬" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": true + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
선수명팀명경기타석타수안타홈런득점타점볼넷삼진도루BABIP타율출루율장타율OPSwOBAWAR년도
0테임즈NC1425954721804713014010391400.3900.3810.4970.7901.2870.52011.732015
12박정준NC19242180220500.5000.3810.4580.4760.9340.4170.252015
14조평호NC22222281430600.4670.3640.3640.5910.9550.4010.182015
1나성범NC1446225641842811213533127230.3740.3260.3730.5530.9260.3904.462015
2박민우NC14161752015831114773108460.3730.3040.3990.4040.8030.3643.522015
4김종호NC133486424125490364465410.3380.2950.3640.3940.7580.3401.032015
3이호준NC13151844913224481106110200.3320.2940.3810.5100.8910.3812.192015
8모창민NC1032392146262335185250.3520.2900.3400.4390.7790.3400.762015
10용덕한NC504942120455820.3530.2860.3750.3100.6850.3260.442015
5조영훈NC1031461243582035193630.3290.2820.3720.5400.9120.3891.002015
7이종욱NC125504440118563525478170.3150.2680.3510.3680.7190.3220.842015
9지석훈NC137466415111115346238540.3110.2670.3280.3830.7110.3170.512015
13김태군NC14447442110764552257710.2930.2540.3070.3540.6610.2940.252015
11최재원NC1141028521231131029140.3520.2470.3660.4120.7780.3500.302015
6손시헌NC140508440108135658366630.2600.2450.3190.3980.7170.3160.852015
16김준완NC305444100122101020.2940.2270.3700.2270.5970.308-0.042015
17강구성NC45510000000.2000.2000.2000.4000.6000.242-0.042015
15이창섭NC158500003300.0000.0000.3750.0000.3750.286-0.012015
18강민국NC12200000100.0000.0000.0000.0000.0000.000-0.062015
19김태진NC13300000000.0000.0000.0000.0000.0000.000-0.092015
\n", + "
" + ], + "text/plain": [ + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 \\\n", + "0 테임즈 NC 142 595 472 180 47 130 140 103 91 40 0.390 0.381 \n", + "12 박정준 NC 19 24 21 8 0 2 2 0 5 0 0.500 0.381 \n", + "14 조평호 NC 22 22 22 8 1 4 3 0 6 0 0.467 0.364 \n", + "1 나성범 NC 144 622 564 184 28 112 135 33 127 23 0.374 0.326 \n", + "2 박민우 NC 141 617 520 158 3 111 47 73 108 46 0.373 0.304 \n", + "4 김종호 NC 133 486 424 125 4 90 36 44 65 41 0.338 0.295 \n", + "3 이호준 NC 131 518 449 132 24 48 110 61 102 0 0.332 0.294 \n", + "8 모창민 NC 103 239 214 62 6 23 35 18 52 5 0.352 0.290 \n", + "10 용덕한 NC 50 49 42 12 0 4 5 5 8 2 0.353 0.286 \n", + "5 조영훈 NC 103 146 124 35 8 20 35 19 36 3 0.329 0.282 \n", + "7 이종욱 NC 125 504 440 118 5 63 52 54 78 17 0.315 0.268 \n", + "9 지석훈 NC 137 466 415 111 11 53 46 23 85 4 0.311 0.267 \n", + "13 김태군 NC 144 474 421 107 6 45 52 25 77 1 0.293 0.254 \n", + "11 최재원 NC 114 102 85 21 2 31 13 10 29 14 0.352 0.247 \n", + "6 손시헌 NC 140 508 440 108 13 56 58 36 66 3 0.260 0.245 \n", + "16 김준완 NC 30 54 44 10 0 12 2 10 10 2 0.294 0.227 \n", + "17 강구성 NC 4 5 5 1 0 0 0 0 0 0 0.200 0.200 \n", + "15 이창섭 NC 15 8 5 0 0 0 0 3 3 0 0.000 0.000 \n", + "18 강민국 NC 1 2 2 0 0 0 0 0 1 0 0.000 0.000 \n", + "19 김태진 NC 1 3 3 0 0 0 0 0 0 0 0.000 0.000 \n", + "\n", + " 출루율 장타율 OPS wOBA WAR 년도 \n", + "0 0.497 0.790 1.287 0.520 11.73 2015 \n", + "12 0.458 0.476 0.934 0.417 0.25 2015 \n", + "14 0.364 0.591 0.955 0.401 0.18 2015 \n", + "1 0.373 0.553 0.926 0.390 4.46 2015 \n", + "2 0.399 0.404 0.803 0.364 3.52 2015 \n", + "4 0.364 0.394 0.758 0.340 1.03 2015 \n", + "3 0.381 0.510 0.891 0.381 2.19 2015 \n", + "8 0.340 0.439 0.779 0.340 0.76 2015 \n", + "10 0.375 0.310 0.685 0.326 0.44 2015 \n", + "5 0.372 0.540 0.912 0.389 1.00 2015 \n", + "7 0.351 0.368 0.719 0.322 0.84 2015 \n", + "9 0.328 0.383 0.711 0.317 0.51 2015 \n", + "13 0.307 0.354 0.661 0.294 0.25 2015 \n", + "11 0.366 0.412 0.778 0.350 0.30 2015 \n", + "6 0.319 0.398 0.717 0.316 0.85 2015 \n", + "16 0.370 0.227 0.597 0.308 -0.04 2015 \n", + "17 0.200 0.400 0.600 0.242 -0.04 2015 \n", + "15 0.375 0.000 0.375 0.286 -0.01 2015 \n", + "18 0.000 0.000 0.000 0.000 -0.06 2015 \n", + "19 0.000 0.000 0.000 0.000 -0.09 2015 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "NC15.sort_values(by = '타율', ascending = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
선수명팀명경기타석타수안타홈런득점타점볼넷삼진도루BABIP타율출루율장타율OPSwOBAWAR년도
0테임즈NC1425954721804713014010391400.3900.3810.4970.7901.2870.52011.732015
1나성범NC1446225641842811213533127230.3740.3260.3730.5530.9260.3904.462015
2박민우NC14161752015831114773108460.3730.3040.3990.4040.8030.3643.522015
4김종호NC133486424125490364465410.3380.2950.3640.3940.7580.3401.032015
3이호준NC13151844913224481106110200.3320.2940.3810.5100.8910.3812.192015
8모창민NC1032392146262335185250.3520.2900.3400.4390.7790.3400.762015
5조영훈NC1031461243582035193630.3290.2820.3720.5400.9120.3891.002015
7이종욱NC125504440118563525478170.3150.2680.3510.3680.7190.3220.842015
9지석훈NC137466415111115346238540.3110.2670.3280.3830.7110.3170.512015
13김태군NC14447442110764552257710.2930.2540.3070.3540.6610.2940.252015
11최재원NC1141028521231131029140.3520.2470.3660.4120.7780.3500.302015
6손시헌NC140508440108135658366630.2600.2450.3190.3980.7170.3160.852015
\n", + "
" + ], + "text/plain": [ + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 \\\n", + "0 테임즈 NC 142 595 472 180 47 130 140 103 91 40 0.390 0.381 \n", + "1 나성범 NC 144 622 564 184 28 112 135 33 127 23 0.374 0.326 \n", + "2 박민우 NC 141 617 520 158 3 111 47 73 108 46 0.373 0.304 \n", + "4 김종호 NC 133 486 424 125 4 90 36 44 65 41 0.338 0.295 \n", + "3 이호준 NC 131 518 449 132 24 48 110 61 102 0 0.332 0.294 \n", + "8 모창민 NC 103 239 214 62 6 23 35 18 52 5 0.352 0.290 \n", + "5 조영훈 NC 103 146 124 35 8 20 35 19 36 3 0.329 0.282 \n", + "7 이종욱 NC 125 504 440 118 5 63 52 54 78 17 0.315 0.268 \n", + "9 지석훈 NC 137 466 415 111 11 53 46 23 85 4 0.311 0.267 \n", + "13 김태군 NC 144 474 421 107 6 45 52 25 77 1 0.293 0.254 \n", + "11 최재원 NC 114 102 85 21 2 31 13 10 29 14 0.352 0.247 \n", + "6 손시헌 NC 140 508 440 108 13 56 58 36 66 3 0.260 0.245 \n", + "\n", + " 출루율 장타율 OPS wOBA WAR 년도 \n", + "0 0.497 0.790 1.287 0.520 11.73 2015 \n", + "1 0.373 0.553 0.926 0.390 4.46 2015 \n", + "2 0.399 0.404 0.803 0.364 3.52 2015 \n", + "4 0.364 0.394 0.758 0.340 1.03 2015 \n", + "3 0.381 0.510 0.891 0.381 2.19 2015 \n", + "8 0.340 0.439 0.779 0.340 0.76 2015 \n", + "5 0.372 0.540 0.912 0.389 1.00 2015 \n", + "7 0.351 0.368 0.719 0.322 0.84 2015 \n", + "9 0.328 0.383 0.711 0.317 0.51 2015 \n", + "13 0.307 0.354 0.661 0.294 0.25 2015 \n", + "11 0.366 0.412 0.778 0.350 0.30 2015 \n", + "6 0.319 0.398 0.717 0.316 0.85 2015 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#조건 추가, 타율이 100이상\n", + "#조건색인\n", + "NC15[NC15['타석']>=100].sort_values(by = '타율', ascending = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
선수명팀명경기타석타수안타홈런득점타점볼넷삼진도루BABIP타율출루율장타율OPSwOBAWAR년도
0테임즈NC1425954721804713014010391400.3900.3810.4970.7901.2870.52011.732015
1나성범NC1446225641842811213533127230.3740.3260.3730.5530.9260.3904.462015
2박민우NC14161752015831114773108460.3730.3040.3990.4040.8030.3643.522015
4김종호NC133486424125490364465410.3380.2950.3640.3940.7580.3401.032015
3이호준NC13151844913224481106110200.3320.2940.3810.5100.8910.3812.192015
8모창민NC1032392146262335185250.3520.2900.3400.4390.7790.3400.762015
5조영훈NC1031461243582035193630.3290.2820.3720.5400.9120.3891.002015
7이종욱NC125504440118563525478170.3150.2680.3510.3680.7190.3220.842015
9지석훈NC137466415111115346238540.3110.2670.3280.3830.7110.3170.512015
13김태군NC14447442110764552257710.2930.2540.3070.3540.6610.2940.252015
11최재원NC1141028521231131029140.3520.2470.3660.4120.7780.3500.302015
6손시헌NC140508440108135658366630.2600.2450.3190.3980.7170.3160.852015
\n", + "
" + ], + "text/plain": [ + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 \\\n", + "0 테임즈 NC 142 595 472 180 47 130 140 103 91 40 0.390 0.381 \n", + "1 나성범 NC 144 622 564 184 28 112 135 33 127 23 0.374 0.326 \n", + "2 박민우 NC 141 617 520 158 3 111 47 73 108 46 0.373 0.304 \n", + "4 김종호 NC 133 486 424 125 4 90 36 44 65 41 0.338 0.295 \n", + "3 이호준 NC 131 518 449 132 24 48 110 61 102 0 0.332 0.294 \n", + "8 모창민 NC 103 239 214 62 6 23 35 18 52 5 0.352 0.290 \n", + "5 조영훈 NC 103 146 124 35 8 20 35 19 36 3 0.329 0.282 \n", + "7 이종욱 NC 125 504 440 118 5 63 52 54 78 17 0.315 0.268 \n", + "9 지석훈 NC 137 466 415 111 11 53 46 23 85 4 0.311 0.267 \n", + "13 김태군 NC 144 474 421 107 6 45 52 25 77 1 0.293 0.254 \n", + "11 최재원 NC 114 102 85 21 2 31 13 10 29 14 0.352 0.247 \n", + "6 손시헌 NC 140 508 440 108 13 56 58 36 66 3 0.260 0.245 \n", + "\n", + " 출루율 장타율 OPS wOBA WAR 년도 \n", + "0 0.497 0.790 1.287 0.520 11.73 2015 \n", + "1 0.373 0.553 0.926 0.390 4.46 2015 \n", + "2 0.399 0.404 0.803 0.364 3.52 2015 \n", + "4 0.364 0.394 0.758 0.340 1.03 2015 \n", + "3 0.381 0.510 0.891 0.381 2.19 2015 \n", + "8 0.340 0.439 0.779 0.340 0.76 2015 \n", + "5 0.372 0.540 0.912 0.389 1.00 2015 \n", + "7 0.351 0.368 0.719 0.322 0.84 2015 \n", + "9 0.328 0.383 0.711 0.317 0.51 2015 \n", + "13 0.307 0.354 0.661 0.294 0.25 2015 \n", + "11 0.366 0.412 0.778 0.350 0.30 2015 \n", + "6 0.319 0.398 0.717 0.316 0.85 2015 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 조건 추가2, 타율이 같은 경우, 안타가 많은 순\n", + "NC15[NC15['타석']>=100].sort_values(by = ['타율','안타'], ascending = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
선수명팀명경기타석타수안타홈런득점타점볼넷삼진도루BABIP타율출루율장타율OPSwOBAWAR년도
0테임즈NC1425954721804713014010391400.3900.3810.4970.7901.2870.52011.732015
1나성범NC1446225641842811213533127230.3740.3260.3730.5530.9260.3904.462015
2박민우NC14161752015831114773108460.3730.3040.3990.4040.8030.3643.522015
4김종호NC133486424125490364465410.3380.2950.3640.3940.7580.3401.032015
3이호준NC13151844913224481106110200.3320.2940.3810.5100.8910.3812.192015
8모창민NC1032392146262335185250.3520.2900.3400.4390.7790.3400.762015
5조영훈NC1031461243582035193630.3290.2820.3720.5400.9120.3891.002015
7이종욱NC125504440118563525478170.3150.2680.3510.3680.7190.3220.842015
9지석훈NC137466415111115346238540.3110.2670.3280.3830.7110.3170.512015
13김태군NC14447442110764552257710.2930.2540.3070.3540.6610.2940.252015
11최재원NC1141028521231131029140.3520.2470.3660.4120.7780.3500.302015
6손시헌NC140508440108135658366630.2600.2450.3190.3980.7170.3160.852015
\n", + "
" + ], + "text/plain": [ + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 \\\n", + "0 테임즈 NC 142 595 472 180 47 130 140 103 91 40 0.390 0.381 \n", + "1 나성범 NC 144 622 564 184 28 112 135 33 127 23 0.374 0.326 \n", + "2 박민우 NC 141 617 520 158 3 111 47 73 108 46 0.373 0.304 \n", + "4 김종호 NC 133 486 424 125 4 90 36 44 65 41 0.338 0.295 \n", + "3 이호준 NC 131 518 449 132 24 48 110 61 102 0 0.332 0.294 \n", + "8 모창민 NC 103 239 214 62 6 23 35 18 52 5 0.352 0.290 \n", + "5 조영훈 NC 103 146 124 35 8 20 35 19 36 3 0.329 0.282 \n", + "7 이종욱 NC 125 504 440 118 5 63 52 54 78 17 0.315 0.268 \n", + "9 지석훈 NC 137 466 415 111 11 53 46 23 85 4 0.311 0.267 \n", + "13 김태군 NC 144 474 421 107 6 45 52 25 77 1 0.293 0.254 \n", + "11 최재원 NC 114 102 85 21 2 31 13 10 29 14 0.352 0.247 \n", + "6 손시헌 NC 140 508 440 108 13 56 58 36 66 3 0.260 0.245 \n", + "\n", + " 출루율 장타율 OPS wOBA WAR 년도 \n", + "0 0.497 0.790 1.287 0.520 11.73 2015 \n", + "1 0.373 0.553 0.926 0.390 4.46 2015 \n", + "2 0.399 0.404 0.803 0.364 3.52 2015 \n", + "4 0.364 0.394 0.758 0.340 1.03 2015 \n", + "3 0.381 0.510 0.891 0.381 2.19 2015 \n", + "8 0.340 0.439 0.779 0.340 0.76 2015 \n", + "5 0.372 0.540 0.912 0.389 1.00 2015 \n", + "7 0.351 0.368 0.719 0.322 0.84 2015 \n", + "9 0.328 0.383 0.711 0.317 0.51 2015 \n", + "13 0.307 0.354 0.661 0.294 0.25 2015 \n", + "11 0.366 0.412 0.778 0.350 0.30 2015 \n", + "6 0.319 0.398 0.717 0.316 0.85 2015 " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 타율이 내림 차순, 안타 오름차순\n", + "NC15[NC15['타석']>=100].sort_values(by = ['타율','안타'], ascending = [False,True])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 3. (실습) 2013~2015년 선수별로 3년 간 평균 안타수를 구한 후, 평균 안타수가 가장 많은 상위 10명의 선수를 출력" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
선수명팀명경기타석타수안타홈런득점타점볼넷삼진도루BABIP타율출루율장타율OPSwOBAWAR년도
0모창민NC1084363951091257513768160.3070.2760.3390.4430.7820.3532.312013
1이호준NC1265084421232046876010920.3240.2780.3620.4750.8370.3731.852013
2김종호NC1285464651290722257100500.3520.2770.3760.3330.7090.3391.552013
3나성범NC104458404981455643395120.2790.2430.3190.4160.7350.3291.502013
4조영훈NC12042638010763839395640.3160.2820.3500.4130.7630.3480.832013
5이현곤NC91161139380109161420.3040.2730.3610.3240.6850.3270.522013
6이상호NC1021381253102613921240.2980.2480.2990.3200.6190.2890.162013
7강진성NC33210101000.5000.5000.6671.0001.6670.6710.102013
8조평호NC26867921212762410.3580.2660.3180.4180.7360.3290.092013
9박민우NC3248421101065790.3060.2620.3330.2860.6190.2960.072013
10박정준NC771951674142421234440.3030.2460.3350.3530.6880.3200.062013
11이승호NC2100000101--1.000--0.7120.062013
12마낙길NC24312990501520.3750.3100.3330.3450.6780.317-0.032013
13김성욱NC44410010200.5000.2500.2500.2500.5000.234-0.032013
14강구성NC22200000000.0000.0000.0000.0000.0000.000-0.062013
15지석훈NC1043563096832535308220.2850.2200.3000.3300.6300.293-0.092013
16김종찬NC57710000300.2500.1430.1430.1430.2860.134-0.112013
17차화준NC58121106241187122940.2950.2260.3060.3110.6170.289-0.122013
18김동건NC7171621111700.1250.1250.1760.3130.4890.216-0.142013
19이창섭NC55500000200.0000.0000.0000.0000.0000.000-0.142013
20테임즈NC12551444315237951215899110.3670.3430.4220.6881.110.4566.362014
21나성범NC123536477157308810143128140.3970.3290.4000.5970.9970.4245.942014
22박민우NC118491416124187405689500.3730.2980.3920.3990.7910.3652.732014
23손시헌NC973613079053939345320.3310.2930.3680.4140.7820.3491.522014
24지석훈NC1142382125862634164610.3230.2740.3400.4620.8020.3520.972014
25이호준NC1225004241152359786710420.3050.2710.3710.4810.8520.3690.882014
26권희동NC1012522216373936254360.3240.2850.3630.4430.8060.3530.622014
27모창민NC1224684191101662723782140.2890.2630.3200.4130.7330.3190.172014
28이종욱NC124495438126673794060150.3130.2880.3430.4110.7540.3320.132014
29김준완NC65420101110.6670.50.6000.51.10.5090.112014
30최재원NC2210010110-00.50000.50.3630.012014
31마낙길NC22100101000.00000.50000.50.3630.012014
32조영훈NC921241112961522102610.2880.2610.3250.4590.7840.337-0.022014
33김태우NC45510000300.5000.20.2000.40.60.244-0.032014
34박명환*NC2110000010-00.000000.000-0.032014
35조평호NC22200000000.00000.000000.000-0.072014
36강민국NC63300000000.00000.000000.000-0.102014
37허준NC283629502151000.2630.1720.2940.2760.570.268-0.112014
38김성욱NC26262341613910.2310.1740.2690.3480.6170.272-0.152014
39노진혁NC25161631320700.2500.1880.1880.3750.5630.231-0.182014
40테임즈NC1425954721804713014010391400.390.3810.4970.791.2870.52011.732015
41나성범NC1446225641842811213533127230.3740.3260.3730.5530.9260.3904.462015
42박민우NC14161752015831114773108460.3730.3040.3990.4040.8030.3643.522015
43이호준NC13151844913224481106110200.3320.2940.3810.510.8910.3812.192015
44김종호NC133486424125490364465410.3380.2950.3640.3940.7580.3401.032015
45조영훈NC1031461243582035193630.3290.2820.3720.540.9120.3891.002015
46손시헌NC140508440108135658366630.260.2450.3190.3980.7170.3160.852015
47이종욱NC125504440118563525478170.3150.2680.3510.3680.7190.3220.842015
48모창민NC1032392146262335185250.3520.290.3400.4390.7790.3400.762015
49지석훈NC137466415111115346238540.3110.2670.3280.3830.7110.3170.512015
50용덕한NC504942120455820.3530.2860.3750.310.6850.3260.442015
51최재원NC1141028521231131029140.3520.2470.3660.4120.7780.3500.302015
52박정준NC19242180220500.50.3810.4580.4760.9340.4170.252015
53김태군NC14447442110764552257710.2930.2540.3070.3540.6610.2940.252015
54조평호NC22222281430600.4670.3640.3640.5910.9550.4010.182015
55이창섭NC15850000330000.37500.3750.286-0.012015
56김준완NC305444100122101020.2940.2270.3700.2270.5970.308-0.042015
57강구성NC45510000000.20.20.2000.40.60.242-0.042015
58강민국NC1220000010000.000000.000-0.062015
59김태진NC1330000000000.000000.000-0.092015
\n", + "
" + ], + "text/plain": [ + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 \\\n", + "0 모창민 NC 108 436 395 109 12 57 51 37 68 16 0.307 0.276 \n", + "1 이호준 NC 126 508 442 123 20 46 87 60 109 2 0.324 0.278 \n", + "2 김종호 NC 128 546 465 129 0 72 22 57 100 50 0.352 0.277 \n", + "3 나성범 NC 104 458 404 98 14 55 64 33 95 12 0.279 0.243 \n", + "4 조영훈 NC 120 426 380 107 6 38 39 39 56 4 0.316 0.282 \n", + "5 이현곤 NC 91 161 139 38 0 10 9 16 14 2 0.304 0.273 \n", + "6 이상호 NC 102 138 125 31 0 26 13 9 21 24 0.298 0.248 \n", + "7 강진성 NC 3 3 2 1 0 1 0 1 0 0 0.500 0.500 \n", + "8 조평호 NC 26 86 79 21 2 12 7 6 24 1 0.358 0.266 \n", + "9 박민우 NC 32 48 42 11 0 10 6 5 7 9 0.306 0.262 \n", + "10 박정준 NC 77 195 167 41 4 24 21 23 44 4 0.303 0.246 \n", + "11 이승호 NC 2 1 0 0 0 0 0 1 0 1 - - \n", + "12 마낙길 NC 24 31 29 9 0 5 0 1 5 2 0.375 0.310 \n", + "13 김성욱 NC 4 4 4 1 0 0 1 0 2 0 0.500 0.250 \n", + "14 강구성 NC 2 2 2 0 0 0 0 0 0 0 0.000 0.000 \n", + "15 지석훈 NC 104 356 309 68 3 25 35 30 82 2 0.285 0.220 \n", + "16 김종찬 NC 5 7 7 1 0 0 0 0 3 0 0.250 0.143 \n", + "17 차화준 NC 58 121 106 24 1 18 7 12 29 4 0.295 0.226 \n", + "18 김동건 NC 7 17 16 2 1 1 1 1 7 0 0.125 0.125 \n", + "19 이창섭 NC 5 5 5 0 0 0 0 0 2 0 0.000 0.000 \n", + "20 테임즈 NC 125 514 443 152 37 95 121 58 99 11 0.367 0.343 \n", + "21 나성범 NC 123 536 477 157 30 88 101 43 128 14 0.397 0.329 \n", + "22 박민우 NC 118 491 416 124 1 87 40 56 89 50 0.373 0.298 \n", + "23 손시헌 NC 97 361 307 90 5 39 39 34 53 2 0.331 0.293 \n", + "24 지석훈 NC 114 238 212 58 6 26 34 16 46 1 0.323 0.274 \n", + "25 이호준 NC 122 500 424 115 23 59 78 67 104 2 0.305 0.271 \n", + "26 권희동 NC 101 252 221 63 7 39 36 25 43 6 0.324 0.285 \n", + "27 모창민 NC 122 468 419 110 16 62 72 37 82 14 0.289 0.263 \n", + "28 이종욱 NC 124 495 438 126 6 73 79 40 60 15 0.313 0.288 \n", + "29 김준완 NC 6 5 4 2 0 1 0 1 1 1 0.667 0.5 \n", + "30 최재원 NC 2 2 1 0 0 1 0 1 1 0 - 0 \n", + "31 마낙길 NC 2 2 1 0 0 1 0 1 0 0 0.000 0 \n", + "32 조영훈 NC 92 124 111 29 6 15 22 10 26 1 0.288 0.261 \n", + "33 김태우 NC 4 5 5 1 0 0 0 0 3 0 0.500 0.2 \n", + "34 박명환* NC 2 1 1 0 0 0 0 0 1 0 - 0 \n", + "35 조평호 NC 2 2 2 0 0 0 0 0 0 0 0.000 0 \n", + "36 강민국 NC 6 3 3 0 0 0 0 0 0 0 0.000 0 \n", + "37 허준 NC 28 36 29 5 0 2 1 5 10 0 0.263 0.172 \n", + "38 김성욱 NC 26 26 23 4 1 6 1 3 9 1 0.231 0.174 \n", + "39 노진혁 NC 25 16 16 3 1 3 2 0 7 0 0.250 0.188 \n", + "40 테임즈 NC 142 595 472 180 47 130 140 103 91 40 0.39 0.381 \n", + "41 나성범 NC 144 622 564 184 28 112 135 33 127 23 0.374 0.326 \n", + "42 박민우 NC 141 617 520 158 3 111 47 73 108 46 0.373 0.304 \n", + "43 이호준 NC 131 518 449 132 24 48 110 61 102 0 0.332 0.294 \n", + "44 김종호 NC 133 486 424 125 4 90 36 44 65 41 0.338 0.295 \n", + "45 조영훈 NC 103 146 124 35 8 20 35 19 36 3 0.329 0.282 \n", + "46 손시헌 NC 140 508 440 108 13 56 58 36 66 3 0.26 0.245 \n", + "47 이종욱 NC 125 504 440 118 5 63 52 54 78 17 0.315 0.268 \n", + "48 모창민 NC 103 239 214 62 6 23 35 18 52 5 0.352 0.29 \n", + "49 지석훈 NC 137 466 415 111 11 53 46 23 85 4 0.311 0.267 \n", + "50 용덕한 NC 50 49 42 12 0 4 5 5 8 2 0.353 0.286 \n", + "51 최재원 NC 114 102 85 21 2 31 13 10 29 14 0.352 0.247 \n", + "52 박정준 NC 19 24 21 8 0 2 2 0 5 0 0.5 0.381 \n", + "53 김태군 NC 144 474 421 107 6 45 52 25 77 1 0.293 0.254 \n", + "54 조평호 NC 22 22 22 8 1 4 3 0 6 0 0.467 0.364 \n", + "55 이창섭 NC 15 8 5 0 0 0 0 3 3 0 0 0 \n", + "56 김준완 NC 30 54 44 10 0 12 2 10 10 2 0.294 0.227 \n", + "57 강구성 NC 4 5 5 1 0 0 0 0 0 0 0.2 0.2 \n", + "58 강민국 NC 1 2 2 0 0 0 0 0 1 0 0 0 \n", + "59 김태진 NC 1 3 3 0 0 0 0 0 0 0 0 0 \n", + "\n", + " 출루율 장타율 OPS wOBA WAR 년도 \n", + "0 0.339 0.443 0.782 0.353 2.31 2013 \n", + "1 0.362 0.475 0.837 0.373 1.85 2013 \n", + "2 0.376 0.333 0.709 0.339 1.55 2013 \n", + "3 0.319 0.416 0.735 0.329 1.50 2013 \n", + "4 0.350 0.413 0.763 0.348 0.83 2013 \n", + "5 0.361 0.324 0.685 0.327 0.52 2013 \n", + "6 0.299 0.320 0.619 0.289 0.16 2013 \n", + "7 0.667 1.000 1.667 0.671 0.10 2013 \n", + "8 0.318 0.418 0.736 0.329 0.09 2013 \n", + "9 0.333 0.286 0.619 0.296 0.07 2013 \n", + "10 0.335 0.353 0.688 0.320 0.06 2013 \n", + "11 1.000 - - 0.712 0.06 2013 \n", + "12 0.333 0.345 0.678 0.317 -0.03 2013 \n", + "13 0.250 0.250 0.500 0.234 -0.03 2013 \n", + "14 0.000 0.000 0.000 0.000 -0.06 2013 \n", + "15 0.300 0.330 0.630 0.293 -0.09 2013 \n", + "16 0.143 0.143 0.286 0.134 -0.11 2013 \n", + "17 0.306 0.311 0.617 0.289 -0.12 2013 \n", + "18 0.176 0.313 0.489 0.216 -0.14 2013 \n", + "19 0.000 0.000 0.000 0.000 -0.14 2013 \n", + "20 0.422 0.688 1.11 0.456 6.36 2014 \n", + "21 0.400 0.597 0.997 0.424 5.94 2014 \n", + "22 0.392 0.399 0.791 0.365 2.73 2014 \n", + "23 0.368 0.414 0.782 0.349 1.52 2014 \n", + "24 0.340 0.462 0.802 0.352 0.97 2014 \n", + "25 0.371 0.481 0.852 0.369 0.88 2014 \n", + "26 0.363 0.443 0.806 0.353 0.62 2014 \n", + "27 0.320 0.413 0.733 0.319 0.17 2014 \n", + "28 0.343 0.411 0.754 0.332 0.13 2014 \n", + "29 0.600 0.5 1.1 0.509 0.11 2014 \n", + "30 0.500 0 0.5 0.363 0.01 2014 \n", + "31 0.500 0 0.5 0.363 0.01 2014 \n", + "32 0.325 0.459 0.784 0.337 -0.02 2014 \n", + "33 0.200 0.4 0.6 0.244 -0.03 2014 \n", + "34 0.000 0 0 0.000 -0.03 2014 \n", + "35 0.000 0 0 0.000 -0.07 2014 \n", + "36 0.000 0 0 0.000 -0.10 2014 \n", + "37 0.294 0.276 0.57 0.268 -0.11 2014 \n", + "38 0.269 0.348 0.617 0.272 -0.15 2014 \n", + "39 0.188 0.375 0.563 0.231 -0.18 2014 \n", + "40 0.497 0.79 1.287 0.520 11.73 2015 \n", + "41 0.373 0.553 0.926 0.390 4.46 2015 \n", + "42 0.399 0.404 0.803 0.364 3.52 2015 \n", + "43 0.381 0.51 0.891 0.381 2.19 2015 \n", + "44 0.364 0.394 0.758 0.340 1.03 2015 \n", + "45 0.372 0.54 0.912 0.389 1.00 2015 \n", + "46 0.319 0.398 0.717 0.316 0.85 2015 \n", + "47 0.351 0.368 0.719 0.322 0.84 2015 \n", + "48 0.340 0.439 0.779 0.340 0.76 2015 \n", + "49 0.328 0.383 0.711 0.317 0.51 2015 \n", + "50 0.375 0.31 0.685 0.326 0.44 2015 \n", + "51 0.366 0.412 0.778 0.350 0.30 2015 \n", + "52 0.458 0.476 0.934 0.417 0.25 2015 \n", + "53 0.307 0.354 0.661 0.294 0.25 2015 \n", + "54 0.364 0.591 0.955 0.401 0.18 2015 \n", + "55 0.375 0 0.375 0.286 -0.01 2015 \n", + "56 0.370 0.227 0.597 0.308 -0.04 2015 \n", + "57 0.200 0.4 0.6 0.242 -0.04 2015 \n", + "58 0.000 0 0 0.000 -0.06 2015 \n", + "59 0.000 0 0 0.000 -0.09 2015 " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "NC" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "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", + "
안타
선수명
테임즈166.000000
나성범146.333333
김종호127.000000
이호준123.333333
이종욱122.000000
김태군107.000000
손시헌99.000000
박민우97.666667
모창민93.666667
지석훈79.000000
\n", + "
" + ], + "text/plain": [ + " 안타\n", + "선수명 \n", + "테임즈 166.000000\n", + "나성범 146.333333\n", + "김종호 127.000000\n", + "이호준 123.333333\n", + "이종욱 122.000000\n", + "김태군 107.000000\n", + "손시헌 99.000000\n", + "박민우 97.666667\n", + "모창민 93.666667\n", + "지석훈 79.000000" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 연도별 평균 안타수 상위 10명\n", + "상위10명 = NC.pivot_table(index='선수명', values= '안타', aggfunc = 'mean')\\\n", + ".sort_values(by='안타', ascending = False).head(10)\n", + "상위10명" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "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", + "
선수명팀명경기타석타수안타홈런득점타점볼넷삼진도루BABIP타율출루율장타율OPSwOBAWAR년도
20테임즈NC12551444315237951215899110.3670.3430.4220.6881.110.4566.362014
40테임즈NC1425954721804713014010391400.390.3810.4970.791.2870.52011.732015
\n", + "
" + ], + "text/plain": [ + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 \\\n", + "20 테임즈 NC 125 514 443 152 37 95 121 58 99 11 0.367 0.343 \n", + "40 테임즈 NC 142 595 472 180 47 130 140 103 91 40 0.39 0.381 \n", + "\n", + " 출루율 장타율 OPS wOBA WAR 년도 \n", + "20 0.422 0.688 1.11 0.456 6.36 2014 \n", + "40 0.497 0.79 1.287 0.520 11.73 2015 " + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "NC[NC.선수명 =='테임즈']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. (실습) 3에서 구한 상위 10명의 타자들의 3년간 안타, 홈런, 타율을 출력하기" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "#1. 출력하고자 하는 모양대로 데이터프레임 변경\n", + "#1-2) 상위 10명 조건 추가" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
홈런안타타율
년도201320142015201320142015201320142015
선수명
강구성0-00-10.000-0.2
강민국-00-00-00
강진성0--1--0.500--
권희동-7--63--0.285-
김동건1--2--0.125--
김성욱01-14-0.2500.174-
김종찬0--1--0.143--
김종호0-4129-1250.277-0.295
김준완-00-210-0.50.227
김태군--6--107--0.254
김태우-0--1--0.2-
김태진--0--0--0
나성범143028981571840.2430.3290.326
노진혁-1--3--0.188-
마낙길00-90-0.3100-
모창민12166109110620.2760.2630.29
박명환*-0--0--0-
박민우013111241580.2620.2980.304
박정준4-041-80.246-0.381
손시헌-513-90108-0.2930.245
용덕한--0--12--0.286
이상호0--31--0.248--
이승호0--0-----
이종욱-65-126118-0.2880.268
이창섭0-00-00.000-0
이현곤0--38--0.273--
이호준2023241231151320.2780.2710.294
조영훈66810729350.2820.2610.282
조평호20121080.26600.364
지석훈361168581110.2200.2740.267
차화준1--24--0.226--
최재원-02-021-00.247
테임즈-3747-152180-0.3430.381
허준-0--5--0.172-
\n", + "
" + ], + "text/plain": [ + " 홈런 안타 타율 \n", + "년도 2013 2014 2015 2013 2014 2015 2013 2014 2015\n", + "선수명 \n", + "강구성 0 - 0 0 - 1 0.000 - 0.2\n", + "강민국 - 0 0 - 0 0 - 0 0\n", + "강진성 0 - - 1 - - 0.500 - -\n", + "권희동 - 7 - - 63 - - 0.285 -\n", + "김동건 1 - - 2 - - 0.125 - -\n", + "김성욱 0 1 - 1 4 - 0.250 0.174 -\n", + "김종찬 0 - - 1 - - 0.143 - -\n", + "김종호 0 - 4 129 - 125 0.277 - 0.295\n", + "김준완 - 0 0 - 2 10 - 0.5 0.227\n", + "김태군 - - 6 - - 107 - - 0.254\n", + "김태우 - 0 - - 1 - - 0.2 -\n", + "김태진 - - 0 - - 0 - - 0\n", + "나성범 14 30 28 98 157 184 0.243 0.329 0.326\n", + "노진혁 - 1 - - 3 - - 0.188 -\n", + "마낙길 0 0 - 9 0 - 0.310 0 -\n", + "모창민 12 16 6 109 110 62 0.276 0.263 0.29\n", + "박명환* - 0 - - 0 - - 0 -\n", + "박민우 0 1 3 11 124 158 0.262 0.298 0.304\n", + "박정준 4 - 0 41 - 8 0.246 - 0.381\n", + "손시헌 - 5 13 - 90 108 - 0.293 0.245\n", + "용덕한 - - 0 - - 12 - - 0.286\n", + "이상호 0 - - 31 - - 0.248 - -\n", + "이승호 0 - - 0 - - - - -\n", + "이종욱 - 6 5 - 126 118 - 0.288 0.268\n", + "이창섭 0 - 0 0 - 0 0.000 - 0\n", + "이현곤 0 - - 38 - - 0.273 - -\n", + "이호준 20 23 24 123 115 132 0.278 0.271 0.294\n", + "조영훈 6 6 8 107 29 35 0.282 0.261 0.282\n", + "조평호 2 0 1 21 0 8 0.266 0 0.364\n", + "지석훈 3 6 11 68 58 111 0.220 0.274 0.267\n", + "차화준 1 - - 24 - - 0.226 - -\n", + "최재원 - 0 2 - 0 21 - 0 0.247\n", + "테임즈 - 37 47 - 152 180 - 0.343 0.381\n", + "허준 - 0 - - 5 - - 0.172 -" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1-1.\n", + "data4 = NC[['선수명','년도','홈런','안타','타율']]\n", + "data4 = data4.set_index(['선수명','년도'])\n", + "data4 = data4.unstack(1)\n", + "data4 = data4.fillna('-')\n", + "data4" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
홈런안타타율
년도201320142015201320142015201320142015
선수명
테임즈-3747-152180-0.3430.381
나성범143028981571840.2430.3290.326
김종호0-4129-1250.277-0.295
이호준2023241231151320.2780.2710.294
이종욱-65-126118-0.2880.268
김태군--6--107--0.254
손시헌-513-90108-0.2930.245
박민우013111241580.2620.2980.304
모창민12166109110620.2760.2630.29
지석훈361168581110.2200.2740.267
\n", + "
" + ], + "text/plain": [ + " 홈런 안타 타율 \n", + "년도 2013 2014 2015 2013 2014 2015 2013 2014 2015\n", + "선수명 \n", + "테임즈 - 37 47 - 152 180 - 0.343 0.381\n", + "나성범 14 30 28 98 157 184 0.243 0.329 0.326\n", + "김종호 0 - 4 129 - 125 0.277 - 0.295\n", + "이호준 20 23 24 123 115 132 0.278 0.271 0.294\n", + "이종욱 - 6 5 - 126 118 - 0.288 0.268\n", + "김태군 - - 6 - - 107 - - 0.254\n", + "손시헌 - 5 13 - 90 108 - 0.293 0.245\n", + "박민우 0 1 3 11 124 158 0.262 0.298 0.304\n", + "모창민 12 16 6 109 110 62 0.276 0.263 0.29\n", + "지석훈 3 6 11 68 58 111 0.220 0.274 0.267" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1-2\n", + "data4.loc[상위10명.index]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# 2. NC에서 상위10명 정보만 추출한 후에 원하는 형태로 가공" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
홈런안타타율
년도201320142015201320142015201320142015
선수명
김종호0-4.0129-125.00.277-0.295
김태군--6.0--107.0--0.254
나성범143028.098157184.00.2430.3290.326
모창민12166.010911062.00.2760.2630.290
박민우013.011124158.00.2620.2980.304
손시헌-513.0-90108.0-0.2930.245
이종욱-65.0-126118.0-0.2880.268
이호준202324.0123115132.00.2780.2710.294
지석훈3611.06858111.00.2200.2740.267
테임즈-3747.0-152180.0-0.3430.381
\n", + "
" + ], + "text/plain": [ + " 홈런 안타 타율 \n", + "년도 2013 2014 2015 2013 2014 2015 2013 2014 2015\n", + "선수명 \n", + "김종호 0 - 4.0 129 - 125.0 0.277 - 0.295\n", + "김태군 - - 6.0 - - 107.0 - - 0.254\n", + "나성범 14 30 28.0 98 157 184.0 0.243 0.329 0.326\n", + "모창민 12 16 6.0 109 110 62.0 0.276 0.263 0.290\n", + "박민우 0 1 3.0 11 124 158.0 0.262 0.298 0.304\n", + "손시헌 - 5 13.0 - 90 108.0 - 0.293 0.245\n", + "이종욱 - 6 5.0 - 126 118.0 - 0.288 0.268\n", + "이호준 20 23 24.0 123 115 132.0 0.278 0.271 0.294\n", + "지석훈 3 6 11.0 68 58 111.0 0.220 0.274 0.267\n", + "테임즈 - 37 47.0 - 152 180.0 - 0.343 0.381" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "상위10명기록 = NC[NC.선수명.isin(상위10명.index)]\n", + "상위10명기록 = 상위10명기록[['선수명','년도','홈런','안타','타율']]\n", + "상위10명기록.set_index(['선수명','년도']).unstack(1).fillna('-')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "상위data = pd.merge(상위10명, NC, left_on = '선수명', right_on = '선수명')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "상위data = 상위data[['선수명','안타_y','홈런','타율']]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.DataFrame(상위data, \n", + " columns=[['안타','안타','안타','홈런','홈런','홈런','타율','타율','타율'],[2013,2014,2015,2013,2014,2015,2013,2014,2015]], index = 상위data['선수명'])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
안타홈런타율
201320142015201320142015201320142015
선수명
테임즈NaNNaNNaNNaNNaNNaNNaNNaNNaN
테임즈NaNNaNNaNNaNNaNNaNNaNNaNNaN
나성범NaNNaNNaNNaNNaNNaNNaNNaNNaN
나성범NaNNaNNaNNaNNaNNaNNaNNaNNaN
나성범NaNNaNNaNNaNNaNNaNNaNNaNNaN
김종호NaNNaNNaNNaNNaNNaNNaNNaNNaN
김종호NaNNaNNaNNaNNaNNaNNaNNaNNaN
이호준NaNNaNNaNNaNNaNNaNNaNNaNNaN
이호준NaNNaNNaNNaNNaNNaNNaNNaNNaN
이호준NaNNaNNaNNaNNaNNaNNaNNaNNaN
이종욱NaNNaNNaNNaNNaNNaNNaNNaNNaN
이종욱NaNNaNNaNNaNNaNNaNNaNNaNNaN
김태군NaNNaNNaNNaNNaNNaNNaNNaNNaN
손시헌NaNNaNNaNNaNNaNNaNNaNNaNNaN
손시헌NaNNaNNaNNaNNaNNaNNaNNaNNaN
박민우NaNNaNNaNNaNNaNNaNNaNNaNNaN
박민우NaNNaNNaNNaNNaNNaNNaNNaNNaN
박민우NaNNaNNaNNaNNaNNaNNaNNaNNaN
모창민NaNNaNNaNNaNNaNNaNNaNNaNNaN
모창민NaNNaNNaNNaNNaNNaNNaNNaNNaN
모창민NaNNaNNaNNaNNaNNaNNaNNaNNaN
지석훈NaNNaNNaNNaNNaNNaNNaNNaNNaN
지석훈NaNNaNNaNNaNNaNNaNNaNNaNNaN
지석훈NaNNaNNaNNaNNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " 안타 홈런 타율 \n", + " 2013 2014 2015 2013 2014 2015 2013 2014 2015\n", + "선수명 \n", + "테임즈 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "테임즈 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "나성범 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "나성범 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "나성범 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "김종호 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "김종호 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "이호준 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "이호준 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "이호준 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "이종욱 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "이종욱 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "김태군 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "손시헌 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "손시헌 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "박민우 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "박민우 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "박민우 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "모창민 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "모창민 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "모창민 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "지석훈 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "지석훈 NaN NaN NaN NaN NaN NaN NaN NaN NaN\n", + "지석훈 NaN NaN NaN NaN NaN NaN NaN NaN NaN" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 5. (실습) 년도별 팀의 기록 (총 안타수, 총 홈런수, 총 도루수)을 출력" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "scrolled": true + }, + "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", + "
도루안타홈런
년도
201313381463
20141181039139
20152011380158
\n", + "
" + ], + "text/plain": [ + " 도루 안타 홈런\n", + "년도 \n", + "2013 133 814 63\n", + "2014 118 1039 139\n", + "2015 201 1380 158" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#총 합계\n", + "NC.pivot_table(index = '년도', values = ['도루','안타','홈런'], aggfunc = 'sum')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## (심화) 조건 추가. 팀 타율도 함께 출력 \n", + "### 팀 타율은 선수 타율의 평균으로 가정" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "scrolled": true + }, + "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", + "
선수명팀명경기타석타수안타홈런득점타점볼넷삼진도루BABIP타율출루율장타율OPSwOBAWAR년도
11이승호NC2100000101--1.0--0.7120.062013
\n", + "
" + ], + "text/plain": [ + " 선수명 팀명 경기 타석 타수 안타 홈런 득점 타점 볼넷 삼진 도루 BABIP 타율 출루율 장타율 OPS \\\n", + "11 이승호 NC 2 1 0 0 0 0 0 1 0 1 - - 1.0 - - \n", + "\n", + " wOBA WAR 년도 \n", + "11 0.712 0.06 2013 " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "NC[NC.타율 =='-']\n", + "# 1. 타율이 없는 선수는 기록이 없다고 보고, 통계에서 제외하는 건 다른 기록이 유실되므로 이 방법은 안된다\n", + "# 2. '-'를 NaN으로 변경한 후에 '타율'을 실수형[float]로 변환 ->OK" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "NC.타율 = NC.타율.replace('-',np.nan)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(NC.타율[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "NC.타율 = NC.타율.astype(float)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "scrolled": false + }, + "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", + "
도루안타타율홈런
년도
20131338140.23289563
201411810390.206950139
201520113800.245550158
\n", + "
" + ], + "text/plain": [ + " 도루 안타 타율 홈런\n", + "년도 \n", + "2013 133 814 0.232895 63\n", + "2014 118 1039 0.206950 139\n", + "2015 201 1380 0.245550 158" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "NC.pivot_table(index='년도', \n", + " values = ['안타','홈런','도루', '타율'], \n", + " aggfunc={'안타':'sum','홈런':'sum','도루':'sum','타율':'mean'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 3. \354\231\225\354\242\214\354\235\230 \352\262\214\354\236\204 \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 (+ \354\213\234\352\260\201\355\231\224).ipynb" "b/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 3. \354\231\225\354\242\214\354\235\230 \352\262\214\354\236\204 \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 (+ \354\213\234\352\260\201\355\231\224).ipynb" new file mode 100644 index 0000000..6348b5b --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 3. \354\231\225\354\242\214\354\235\230 \352\262\214\354\236\204 \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 (+ \354\213\234\352\260\201\355\231\224).ipynb" @@ -0,0 +1,1177 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from pandas import Series, DataFrame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 왕좌의 게임 데이터 분석 (+ 시각화)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1. Matplotlib 소개\n", + "### - 파이썬에서 자료를 차트(chart)나 플롯(plot)으로 시각화(visulaization)하는 패키지\n", + "### - Matplotlib는 다음과 같은 정형화된 차트나 플롯 이외에도 저수준 api를 사용한 다양한 시각화 기능 제공\n", + "#### * 라인 플롯(line plot)\n", + "#### * 스캐터 플롯(scatter plot)\n", + "#### * 컨투어 플롯(contour plot)\n", + "#### * 서피스 플롯(surface plot)\n", + "#### * 바 차트(bar chart)\n", + "#### * 히스토그램(histogram)\n", + "#### * 박스 플롯(box plot)\n", + "\n", + "## [Matplotlib 갤러리 웹사이트]\n", + "http://matplotlib.org/gallery.html" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "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", + "
서울경기충청경상전라
20151053.51023512897451
20161023.01067489872421
2017987.01123487811399
\n", + "
" + ], + "text/plain": [ + " 서울 경기 충청 경상 전라\n", + "2015 1053.5 1023 512 897 451\n", + "2016 1023.0 1067 489 872 421\n", + "2017 987.0 1123 487 811 399" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "인구통계 = {'서울': [1053.5, 1023, 987],\n", + " '경기':[1023, 1067, 1123],\n", + " '충청':[512,489,487],\n", + " '경상':[897, 872, 811],\n", + " '전라':[451, 421, 399]\n", + " }\n", + "df = DataFrame(인구통계)\n", + "df.index = [2015, 2016, 2017]\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# 기본 그리기\n", + "# https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html\n", + "df.plot(kind='bar')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'plt' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mlw\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 8\u001b[0m ms = 10)\n\u001b[1;32m----> 9\u001b[1;33m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mxlabel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'년도'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 10\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mylabel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'인구수'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 'plt' is not defined" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmAAAAE/CAYAAADhW39vAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xl8VOW9P/DPd7bsC1vYIhAQAatYJCi4/2pVsLbeWlSogFqRWuxFrN5qW3uNP35a21uv2OtKUYtipYj2qm1tpbZqXbAGUFCoC0ggEpAtCdlmfX5/nJlkzpwz++TMJPN5v17zmsxznrNMSMhnnu2IUgpEREREZB1bti+AiIiIKN8wgBERERFZjAGMiIiIyGIMYEREREQWYwAjIiIishgDGBEREZHFGMCIiIiILObI9gUQEaVDRC4G8B8mm14GcL5JeZNS6lIReR7AIJPtswFcB+CrJtvuVEq9lPLFEhEFMYARUV83HECdUuqvoQIRKQWwEsCrSqnbwiuLyLrgl16l1BkR234JoBDARADnKKV8YdsuAjC0d94CEeUbdkESERERWYwBjIiIiMhiDGBEREREFmMAIyIiIrIYAxgRERGRxRjAiIiIiCzGAEZERERkMQYwIiIiIotxIVYi6g/uEZEjYa/tAD4HMF9EzoioG1r9/kQReTVi2zgA9we/fkVEVMR+92Toeokoz4lSKn4tIiIiIsoYdkESERERWYwBjIiIiMhiDGBEREREFsvpQfiDBw9WY8aMyfZlEBEREcW1cePGg0qpIYnUzekANmbMGNTX12f7MoiIiIjiEpGGROuyC5KIiIjIYgxgRERERBZjACMiIiKyGAMYERERkcUYwIiIiIgsxgBGREREZDEGMCIiIiKLMYARERERWYwBjIiIiMhiDGBEREREFmMAIyIiIrIYAxgRERGRxRjAiIiIiCzGAEZERERkMQYwIiIiIosxgBERERFZjAGMiIiIyGIMYEREREQWYwAjIiIisljcACYij4nIFyLyQVjZf4nIv0Rki4j8XkQqw7b9SEQ+FZGPROSCsPKZwbJPReTWzL8VIiIior4hkRaw3wCYGVG2HsAJSqnJAD4G8CMAEJHjAcwB8KXgPg+KiF1E7AAeADALwPEA5gbrEhEREeWduAFMKfU6gMMRZS8rpXzBlxsAVAe/vhjAGqWUWyn1GYBPAZwSfHyqlNqplPIAWBOsS0RERJR3MjEG7DsAXgp+PRLAnrBtjcGyaOVEREREeSetACYiPwHgA/BUqMikmopRbnbMRSJSLyL1Bw4cSOfyiIiIiHJSygFMRK4EcBGAK5RSoTDVCOCYsGrVAPbGKDdQSq1QStUqpWqHDBmS6uURERER5ayUApiIzARwC4BvKKU6wja9AGCOiBSISA2A8QD+CeBdAONFpEZEXNAG6r+Q3qUTERER9U2OeBVE5GkA5wAYLCKNAG6HNuuxAMB6EQGADUqp65RSH4rIWgDboHVNXq+U8geP830AfwFgB/CYUurDXng/RERERDlPenoPc09tba2qr6/P9mUQERERxSUiG5VStYnU5Ur4RERERBZjACMiIiKyGAMYERERkcUYwIiIiIgsxgBGREREZDEGMCIiIiKLMYARERERWYwBjIiIiPq13buB6dO151zBAEZERET92pIlwLvvas+5ggGMiIiI+q233gLWrwcCAeDll7XXuYABjIiIiPqlQABYuBDo6NBed3YC116rlWcbAxgRERH1S6tXG8d9NTQATz2VnesJ58j2BRARERElyu0GWlvjPw4eBH7zG8Dj0e/f3g4sXQpccglQUpKVtwCAAYyIiIh6mVJa8IkMSUePJhamwh+RgSoVnZ3AnXcCd92V/rFSxQBGREREpvz+1EKSWdDKhXFXIZ2dwEMPMYARERFRBiXaTRevJaq9PdvvxMjhACoqgPJy46OsrOfr114D/vEP8xaz4mLge9+z/trDMYARERHlAKW02XrptjZlqpsu04qKzENTso+CAkAk/vluvBEYNcr8e1FYCPzkJ5l/j8lgACMiIkpDf+2mA7SgE96qlMwjfL+yMsDptPbaS0uB5cuBxYv1LXklJVp5NgfgAwxgRESUpxLppkskWPWVbrpUglRJCWDrwwtWzZsH3H03sH17T9no0cAVV2TvmkIYwIiIqM9gN11mu+n6O5sNWLkSOO887eemqEh7nQuhkgGMiIh6XbrddOH79pduush9stFNlw9OO00LYC++CJx/PjBjRravSMMARkR5Zfdu4LLLgLVrtQG6FFu0brpkw1Rf6KZLdaxTX++mywe/+hWwb5/2nCsYwIgoryxZArz7rvb8v/+b7avpHeymYzcd6Y0aBWzYkO2r0GMAI6K88dZbwPr1WhfW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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df.plot(\n", + " kind = 'line', title = '인구추이',\n", + " figsize=(10, 5),\n", + " xticks = df.index,\n", + " ylim = [200,1300],\n", + " style = ['g--o', 'b-d','m-.^','r--<'],\n", + " lw = 3,\n", + " ms = 10)\n", + "plt.xlabel('년도')\n", + "plt.ylabel('인구수')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"\n", + "\n", + "#### 색상: https://matplotlib.org/examples/color/named_colors.html\n", + "#### 기타 스타일: https://matplotlib.org/api/_as_gen/matplotlib.lines.Line2D.html#matplotlib.lines.Line2D" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 실습. 아래 그림처럼 연도별 지역별 인구수 그래프 그리기\n", + "df.T.plot(kind='bar', subplots = True, figsize=(8,10))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\"그림의구조\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# matplotlib 기반 최신 시각화 라이브러리 소개\n", + "1. seaborn\n", + " - matplotlib을 기반으로 만들어진 시각화 라이브러리\n", + " - 디자인적으로 훨씬 세련됨. \n", + " - matplotlib와 사용방식이 유사하므로 쉽고 빠르게 습득할 수 있음.\n", + " - https://seaborn.pydata.org/\n", + "\n", + "2. bokeh\n", + " - 웹브라우저 상에서의 시각화에 효과적인 파이썬 인터랙티브 시각화 라이브러리\n", + " - 플롯을 html 파일로 export하여 이를 웹브라우저를 통해 확인할 수 있음.\n", + " - matplotlib와 비슷, jupyter와 호환이 잘 됨. \n", + " - https://bokeh.pydata.org/en/latest/\n", + "\n", + "3. Folium \n", + " - 지리적 데이터 시각화에 특화된 라이브러리 (leaflet.js 기반)\n", + " - 웹브라우저에서 확인 가능\n", + " - 지도 데이터 사용을 위해 선행되어야 하는 작업이 원래 매우 많은데, 이러한 선행작업을 간단화함.\n", + " - https://github.com/python-visualization/folium\n", + " - http://python-visualization.github.io/folium/docs-v0.5.0/\n", + " - http://pinkwink.kr/971" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2. 왕좌의 게임 데이터 분석 및 시각화 실습\n", + "### 1) 데이터 적재" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "battles = pd.read_csv('data/data-society-game-of-thrones/battles.csv')\n", + "death = pd.read_csv('data/data-society-game-of-thrones/character-deaths.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2) 책의 권별로 사망자 수 추이 시각화" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "death_count_book_chapter = death.pivot_table(index = 'Book of Death', values = 'Name', aggfunc='count')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "graph1 = death_count_book_chapter.plot(style = 'k--o')\n", + "# ==(color= 'k', linestyle= '--', marker = 'o')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "graph1.set_title('권별 사망자수')\n", + "graph1.set_xticks([1,2,3,4,5])\n", + "graph1.set_xlabel('book chapter')\n", + "graph1.set_ylabel('# of Death')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "graph1.figure" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# figure : 도화지\n", + "graph1.figure.savefig('book_chapter.jpg')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3) 대규모 전쟁의 공격진영과 수비 진영의 숫자 시각화\n", + "#### 대규모 전쟁 = 공격과 수비 모두 합쳐서 10,000명 이상 참가한 전쟁" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "big_battles = battles[battles['attacker_size']+battles['defender_size']>=10000]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "big_battles = big_battles[['name','attacker_size','defender_size']]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "big_battles.plot(kind = 'barh', stacked = True, figsize = (8,8))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "big_battles = big_battles.set_index('name')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "big_battles.T.plot(kind= 'pie', subplots = True, layout = (5,2), figsize = (8,15))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4) (실습) 가문 별로 전쟁을 벌인 횟수 시각화" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#컬럼별 이름 출력\n", + "battles.columns\n", + "# house_col = attacker_1~defender4\n", + "house_col = battles.columns[5:13]" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "가문별전쟁참가횟수= Series()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Series([], dtype: object)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "for col in house_col: # ['attacker_1', 'attacker_2', ... 'defender_4']\n", + " 가문별전쟁참가횟수 = 가문별전쟁참가횟수.add(battles[col].value_counts, fill_value = 0)\n", + "가문별전쟁참가횟수" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "Empty 'DataFrame': no numeric data to plot", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# sorting 시 한개의 열을 갖고 잇는 시리즈라서 by 인자 필요없음\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0m가문별전쟁참가횟수\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msort_values\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mascending\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkind\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'bar'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\plotting\\_core.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, kind, ax, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, label, secondary_y, **kwds)\u001b[0m\n\u001b[0;32m 2739\u001b[0m \u001b[0mcolormap\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcolormap\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtable\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtable\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0myerr\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0myerr\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2740\u001b[0m \u001b[0mxerr\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mxerr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mlabel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msecondary_y\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msecondary_y\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2741\u001b[1;33m **kwds)\n\u001b[0m\u001b[0;32m 2742\u001b[0m \u001b[0m__call__\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__doc__\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mplot_series\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__doc__\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2743\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\plotting\\_core.py\u001b[0m in \u001b[0;36mplot_series\u001b[1;34m(data, kind, ax, figsize, use_index, title, grid, legend, style, logx, logy, loglog, xticks, yticks, xlim, ylim, rot, fontsize, colormap, table, yerr, xerr, label, secondary_y, **kwds)\u001b[0m\n\u001b[0;32m 2000\u001b[0m \u001b[0myerr\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0myerr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mxerr\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mxerr\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2001\u001b[0m \u001b[0mlabel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mlabel\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msecondary_y\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msecondary_y\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2002\u001b[1;33m **kwds)\n\u001b[0m\u001b[0;32m 2003\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2004\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\plotting\\_core.py\u001b[0m in \u001b[0;36m_plot\u001b[1;34m(data, x, y, subplots, ax, kind, **kwds)\u001b[0m\n\u001b[0;32m 1802\u001b[0m \u001b[0mplot_obj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mklass\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msubplots\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msubplots\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0max\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkind\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mkind\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1803\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1804\u001b[1;33m \u001b[0mplot_obj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgenerate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1805\u001b[0m \u001b[0mplot_obj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdraw\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1806\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mplot_obj\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\plotting\\_core.py\u001b[0m in \u001b[0;36mgenerate\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 256\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mgenerate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 257\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_args_adjust\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 258\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_compute_plot_data\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 259\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_setup_subplots\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 260\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_make_plot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\pandas\\plotting\\_core.py\u001b[0m in \u001b[0;36m_compute_plot_data\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 371\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mis_empty\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 372\u001b[0m raise TypeError('Empty {0!r}: no numeric data to '\n\u001b[1;32m--> 373\u001b[1;33m 'plot'.format(numeric_data.__class__.__name__))\n\u001b[0m\u001b[0;32m 374\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 375\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdata\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnumeric_data\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: Empty 'DataFrame': no numeric data to plot" + ] + } + ], + "source": [ + "# sorting 시 한개의 열을 갖고 잇는 시리즈라서 by 인자 필요없음\n", + "가문별전쟁참가횟수.sort_values(ascending = False).head(5).plot(kind='bar')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Stark 8\n", + "Lannister 8\n", + "Greyjoy 7\n", + "Baratheon 6\n", + "Frey 2\n", + "Bolton 2\n", + "Brave Companions 1\n", + "Darry 1\n", + "Brotherhood without Banners 1\n", + "Bracken 1\n", + "Free folk 1\n", + "Name: attacker_1, dtype: int64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "battles.attacker_1.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Tully 3\n", + "Karstark 2\n", + "Frey 1\n", + "Lannister 1\n", + "Thenns 1\n", + "Greyjoy 1\n", + "Bolton 1\n", + "Name: attacker_2, dtype: int64" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "battles.attacker_2.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Mormont 2\n", + "Giants 1\n", + "Name: attacker_3, dtype: int64" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "battles.attacker_3.value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "scrolled": true + }, + "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", + "
nameyearbattle_numberattacker_kingdefender_kingattacker_1attacker_2attacker_3attacker_4defender_1...major_deathmajor_captureattacker_sizedefender_sizeattacker_commanderdefender_commandersummerlocationregionnote
0Battle of the Golden Tooth2981Joffrey/Tommen BaratheonRobb StarkLannisterNaNNaNNaNTully...1.00.015000.04000.0Jaime LannisterClement Piper, Vance1.0Golden ToothThe WesterlandsNaN
1Battle at the Mummer's Ford2982Joffrey/Tommen BaratheonRobb StarkLannisterNaNNaNNaNBaratheon...1.00.0NaN120.0Gregor CleganeBeric Dondarrion1.0Mummer's FordThe RiverlandsNaN
2Battle of Riverrun2983Joffrey/Tommen BaratheonRobb StarkLannisterNaNNaNNaNTully...0.01.015000.010000.0Jaime Lannister, Andros BraxEdmure Tully, Tytos Blackwood1.0RiverrunThe RiverlandsNaN
3Battle of the Green Fork2984Robb StarkJoffrey/Tommen BaratheonStarkNaNNaNNaNLannister...1.01.018000.020000.0Roose Bolton, Wylis Manderly, Medger Cerwyn, H...Tywin Lannister, Gregor Clegane, Kevan Lannist...1.0Green ForkThe RiverlandsNaN
4Battle of the Whispering Wood2985Robb StarkJoffrey/Tommen BaratheonStarkTullyNaNNaNLannister...1.01.01875.06000.0Robb Stark, Brynden TullyJaime Lannister1.0Whispering WoodThe RiverlandsNaN
\n", + "

5 rows × 25 columns

\n", + "
" + ], + "text/plain": [ + " name year battle_number \\\n", + "0 Battle of the Golden Tooth 298 1 \n", + "1 Battle at the Mummer's Ford 298 2 \n", + "2 Battle of Riverrun 298 3 \n", + "3 Battle of the Green Fork 298 4 \n", + "4 Battle of the Whispering Wood 298 5 \n", + "\n", + " attacker_king defender_king attacker_1 attacker_2 \\\n", + "0 Joffrey/Tommen Baratheon Robb Stark Lannister NaN \n", + "1 Joffrey/Tommen Baratheon Robb Stark Lannister NaN \n", + "2 Joffrey/Tommen Baratheon Robb Stark Lannister NaN \n", + "3 Robb Stark Joffrey/Tommen Baratheon Stark NaN \n", + "4 Robb Stark Joffrey/Tommen Baratheon Stark Tully \n", + "\n", + " attacker_3 attacker_4 defender_1 ... major_death major_capture \\\n", + "0 NaN NaN Tully ... 1.0 0.0 \n", + "1 NaN NaN Baratheon ... 1.0 0.0 \n", + "2 NaN NaN Tully ... 0.0 1.0 \n", + "3 NaN NaN Lannister ... 1.0 1.0 \n", + "4 NaN NaN Lannister ... 1.0 1.0 \n", + "\n", + " attacker_size defender_size \\\n", + "0 15000.0 4000.0 \n", + "1 NaN 120.0 \n", + "2 15000.0 10000.0 \n", + "3 18000.0 20000.0 \n", + "4 1875.0 6000.0 \n", + "\n", + " attacker_commander \\\n", + "0 Jaime Lannister \n", + "1 Gregor Clegane \n", + "2 Jaime Lannister, Andros Brax \n", + "3 Roose Bolton, Wylis Manderly, Medger Cerwyn, H... \n", + "4 Robb Stark, Brynden Tully \n", + "\n", + " defender_commander summer location \\\n", + "0 Clement Piper, Vance 1.0 Golden Tooth \n", + "1 Beric Dondarrion 1.0 Mummer's Ford \n", + "2 Edmure Tully, Tytos Blackwood 1.0 Riverrun \n", + "3 Tywin Lannister, Gregor Clegane, Kevan Lannist... 1.0 Green Fork \n", + "4 Jaime Lannister 1.0 Whispering Wood \n", + "\n", + " region note \n", + "0 The Westerlands NaN \n", + "1 The Riverlands NaN \n", + "2 The Riverlands NaN \n", + "3 The Riverlands NaN \n", + "4 The Riverlands NaN \n", + "\n", + "[5 rows x 25 columns]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# attacker_1~4, defender_1~4의 가문들 뽑기\n", + "battles.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 Lannister\n", + "1 Lannister\n", + "2 Lannister\n", + "3 Stark\n", + "4 Stark\n", + "5 Stark\n", + "6 Lannister\n", + "7 Greyjoy\n", + "8 Greyjoy\n", + "9 Greyjoy\n", + "10 Stark\n", + "11 Greyjoy\n", + "12 Greyjoy\n", + "13 Bolton\n", + "14 Stark\n", + "15 Baratheon\n", + "16 Lannister\n", + "17 Stark\n", + "18 Stark\n", + "19 Baratheon\n", + "20 Darry\n", + "21 Stark\n", + "22 Brotherhood without Banners\n", + "23 Lannister\n", + "24 Lannister\n", + "25 Frey\n", + "26 Frey\n", + "27 Free folk\n", + "28 Bolton\n", + "29 Brave Companions\n", + "30 Baratheon\n", + "31 Greyjoy\n", + "32 Greyjoy\n", + "33 Baratheon\n", + "34 Baratheon\n", + "35 Lannister\n", + "36 Bracken\n", + "37 Baratheon\n", + "Name: attacker_1, dtype: object" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "battles['attacker_1'].dropna()\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 NaN\n", + "1 NaN\n", + "2 NaN\n", + "3 NaN\n", + "4 NaN\n", + "5 NaN\n", + "6 NaN\n", + "7 NaN\n", + "8 NaN\n", + "9 NaN\n", + "10 NaN\n", + "11 NaN\n", + "12 NaN\n", + "13 NaN\n", + "14 NaN\n", + "15 NaN\n", + "16 NaN\n", + "17 NaN\n", + "18 NaN\n", + "19 NaN\n", + "20 NaN\n", + "21 NaN\n", + "22 NaN\n", + "23 NaN\n", + "24 NaN\n", + "25 NaN\n", + "26 NaN\n", + "27 NaN\n", + "28 NaN\n", + "29 NaN\n", + "30 NaN\n", + "31 NaN\n", + "32 NaN\n", + "33 NaN\n", + "34 NaN\n", + "35 NaN\n", + "36 NaN\n", + "37 NaN\n", + "dtype: object" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "battles['attacker_1']+battles['attacker_2']+battles['attacker_3']+battles['attacker_4']+battles['defender_1']+battles['defender_2']+battles['defender_3']+battles['defender_4']" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 Lannister,nan,nan,nan,Tully,nan,nan,nan\n", + "1 Lannister,nan,nan,nan,Baratheon,nan,nan,nan\n", + "2 Lannister,nan,nan,nan,Tully,nan,nan,nan\n", + "3 Stark,nan,nan,nan,Lannister,nan,nan,nan\n", + "4 Stark,Tully,nan,nan,Lannister,nan,nan,nan\n", + "5 Stark,Tully,nan,nan,Lannister,nan,nan,nan\n", + "6 Lannister,nan,nan,nan,Darry,nan,nan,nan\n", + "7 Greyjoy,nan,nan,nan,Stark,nan,nan,nan\n", + "8 Greyjoy,nan,nan,nan,Stark,nan,nan,nan\n", + "9 Greyjoy,nan,nan,nan,Stark,nan,nan,nan\n", + "10 Stark,nan,nan,nan,Greyjoy,nan,nan,nan\n", + "11 Greyjoy,nan,nan,nan,Stark,nan,nan,nan\n", + "12 Greyjoy,nan,nan,nan,Stark,nan,nan,nan\n", + "13 Bolton,Greyjoy,nan,nan,Stark,nan,nan,nan\n", + "14 Stark,Tully,nan,nan,Lannister,nan,nan,nan\n", + "15 Baratheon,nan,nan,nan,Baratheon,nan,nan,nan\n", + "16 Lannister,nan,nan,nan,Tully,nan,nan,nan\n", + "17 Stark,nan,nan,nan,Lannister,nan,nan,nan\n", + "18 Stark,nan,nan,nan,Lannister,nan,nan,nan\n", + "19 Baratheon,nan,nan,nan,Lannister,nan,nan,nan\n", + "20 Darry,nan,nan,nan,Lannister,nan,nan,nan\n", + "21 Stark,nan,nan,nan,Lannister,nan,nan,nan\n", + "22 Brotherhood without Banners,nan,nan,nan,Brave ...\n", + "23 Lannister,nan,nan,nan,Stark,nan,nan,nan\n", + "24 Lannister,nan,nan,nan,Brave Companions,nan,nan...\n", + "25 Frey,Bolton,nan,nan,Stark,nan,nan,nan\n", + "26 Frey,nan,nan,nan,Mallister,nan,nan,nan\n", + "27 Free folk,Thenns,Giants,nan,Night's Watch,Bara...\n", + "28 Bolton,nan,nan,nan,Greyjoy,nan,nan,nan\n", + "29 Brave Companions,nan,nan,nan,nan,nan,nan,nan\n", + "30 Baratheon,Karstark,Mormont,Glover,Greyjoy,nan,...\n", + "31 Greyjoy,nan,nan,nan,Tyrell,nan,nan,nan\n", + "32 Greyjoy,nan,nan,nan,Tyrell,nan,nan,nan\n", + "33 Baratheon,nan,nan,nan,Baratheon,nan,nan,nan\n", + "34 Baratheon,nan,nan,nan,Baratheon,nan,nan,nan\n", + "35 Lannister,Frey,nan,nan,Tully,nan,nan,nan\n", + "36 Bracken,Lannister,nan,nan,Blackwood,nan,nan,nan\n", + "37 Baratheon,Karstark,Mormont,Glover,Bolton,Frey,...\n", + "Name: 가문, dtype: object" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + " battles['가문'] = battles.attacker_1.astype(str).str.cat([battles.attacker_2.astype(str),battles.attacker_3.astype(str),battles.attacker_4.astype(str),battles.defender_1.astype(str),battles.defender_2.astype(str),battles.defender_3.astype(str),battles.defender_4.astype(str)], sep=',')\n", + "battles.가문" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 Lannister,nan,nan,nan,Tully,nan,nan,nan\n", + "1 Lannister,nan,nan,nan,Baratheon,nan,nan,nan\n", + "2 Lannister,nan,nan,nan,Tully,nan,nan,nan\n", + "3 Stark,nan,nan,nan,Lannister,nan,nan,nan\n", + "4 Stark,Tully,nan,nan,Lannister,nan,nan,nan\n", + "5 Stark,Tully,nan,nan,Lannister,nan,nan,nan\n", + "6 Lannister,nan,nan,nan,Darry,nan,nan,nan\n", + "7 Greyjoy,nan,nan,nan,Stark,nan,nan,nan\n", + "8 Greyjoy,nan,nan,nan,Stark,nan,nan,nan\n", + "9 Greyjoy,nan,nan,nan,Stark,nan,nan,nan\n", + "10 Stark,nan,nan,nan,Greyjoy,nan,nan,nan\n", + "11 Greyjoy,nan,nan,nan,Stark,nan,nan,nan\n", + "12 Greyjoy,nan,nan,nan,Stark,nan,nan,nan\n", + "13 Bolton,Greyjoy,nan,nan,Stark,nan,nan,nan\n", + "14 Stark,Tully,nan,nan,Lannister,nan,nan,nan\n", + "15 Baratheon,nan,nan,nan,Baratheon,nan,nan,nan\n", + "16 Lannister,nan,nan,nan,Tully,nan,nan,nan\n", + "17 Stark,nan,nan,nan,Lannister,nan,nan,nan\n", + "18 Stark,nan,nan,nan,Lannister,nan,nan,nan\n", + "19 Baratheon,nan,nan,nan,Lannister,nan,nan,nan\n", + "20 Darry,nan,nan,nan,Lannister,nan,nan,nan\n", + "21 Stark,nan,nan,nan,Lannister,nan,nan,nan\n", + "22 Brotherhood without Banners,nan,nan,nan,Brave ...\n", + "23 Lannister,nan,nan,nan,Stark,nan,nan,nan\n", + "24 Lannister,nan,nan,nan,Brave Companions,nan,nan...\n", + "25 Frey,Bolton,nan,nan,Stark,nan,nan,nan\n", + "26 Frey,nan,nan,nan,Mallister,nan,nan,nan\n", + "27 Free folk,Thenns,Giants,nan,Night's Watch,Bara...\n", + "28 Bolton,nan,nan,nan,Greyjoy,nan,nan,nan\n", + "29 Brave Companions,nan,nan,nan,nan,nan,nan,nan\n", + "30 Baratheon,Karstark,Mormont,Glover,Greyjoy,nan,...\n", + "31 Greyjoy,nan,nan,nan,Tyrell,nan,nan,nan\n", + "32 Greyjoy,nan,nan,nan,Tyrell,nan,nan,nan\n", + "33 Baratheon,nan,nan,nan,Baratheon,nan,nan,nan\n", + "34 Baratheon,nan,nan,nan,Baratheon,nan,nan,nan\n", + "35 Lannister,Frey,nan,nan,Tully,nan,nan,nan\n", + "36 Bracken,Lannister,nan,nan,Blackwood,nan,nan,nan\n", + "37 Baratheon,Karstark,Mormont,Glover,Bolton,Frey,...\n", + "Name: 가문, dtype: object" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "가문별전쟁 = battles.가문.replace(\",nan\", \"\")\n", + "가문별전쟁" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5) (실습) 년도별로 사망자의 숫자와 전쟁이 벌어진 횟수 시각화" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "battle_count = battles.pivot_table(index='year', values='name', aggfunc = 'count')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "death_count = death.pivot_table(index = 'Death Year', values = 'Name', aggfunc = 'count')" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "battle_death_count = pd.concat([battle_count, death_count], axis = 1)\n", + "battle_death_count.columns = ['# of Battles','']" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "battle_death_count.plot(xticks = battle_death_count.index)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 5. openAPI\354\202\254\354\232\251, \354\247\200\353\217\204\354\213\234\352\260\201\355\231\224 \353\260\217 \354\204\234\354\232\270\354\213\234 \354\234\240\353\217\231\354\235\270\352\265\254 \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 \353\260\217 \354\213\234\352\260\201\355\231\224.ipynb" "b/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 5. openAPI\354\202\254\354\232\251, \354\247\200\353\217\204\354\213\234\352\260\201\355\231\224 \353\260\217 \354\204\234\354\232\270\354\213\234 \354\234\240\353\217\231\354\235\270\352\265\254 \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 \353\260\217 \354\213\234\352\260\201\355\231\224.ipynb" new file mode 100644 index 0000000..0920174 --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 5. openAPI\354\202\254\354\232\251, \354\247\200\353\217\204\354\213\234\352\260\201\355\231\224 \353\260\217 \354\204\234\354\232\270\354\213\234 \354\234\240\353\217\231\354\235\270\352\265\254 \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 \353\260\217 \354\213\234\352\260\201\355\231\224.ipynb" @@ -0,0 +1,5412 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pandas import Series, DataFrame\n", + "import numpy as np\n", + "import matplotlib\n", + "matplotlib.rcParams['font.family'].insert(0, 'Malgun Gothic') \n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1. openAPI 활용 및 json 데이터 읽기\n", + "## API : Application Programming Interface\n", + "## 서울시 데이터 포털에서 공공 API 활용하기\n", + "### 서울시 동별 인구통계\n", + "### http://data.seoul.go.kr/dataList/datasetView.do?infId=10043&srvType=S&serviceKind=2¤tPageNo=1" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import requests # api 사용시 필요" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "http://openapi.seoul.go.kr:8088/sample/json/octastatapi10043/1/5\n" + ] + } + ], + "source": [ + "url = 'http://openapi.seoul.go.kr:8088'\n", + "api_key = 'sample' #개인인증키 발급받은 후, 입력\n", + "return_format = 'json'\n", + "service_id = 'octastatapi10043'\n", + "start_idx = 1\n", + "end_idx = 5\n", + "\n", + "request_url = '/'.join([url, api_key, return_format, service_id, str(start_idx), str(end_idx)])\n", + "print(request_url)\n", + "# 'http://openapi.seoul.go.kr:8088/sample/json/octastatapi10043/1/500/' \n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "response = requests.get(request_url)\n", + "# 주소창에 주소를 치고 엔터치는 격" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ERROR-335'" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "response.text\n", + "#JSON 형태" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### json (Java Script Object Notation)\n", + "\n", + "### 1) json 설명: https://ko.wikipedia.org/wiki/JSON\n", + "### 2) json online editor: https://jsoneditoronline.org/" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "sample = ' { \\\n", + " \"이름\": \"김지아\", \\\n", + " \"나이\": 25, \\\n", + " \"성별\": \"여\", \\\n", + " \"주소\": \"서울특별시 양천구 목동\",\\\n", + " \"특기\": [\"농구\", \"도술\"],\\\n", + " \"가족관계\": {\"#\": 2, \"아버지\": \"홍판서\", \"어머니\": \"춘섬\"},\\\n", + " \"회사\": \"경기 수원시 팔달구 우만동\"\\\n", + " }'" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import json # 사전타입으로 바꿔줌" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "jsonsample = json.loads(sample)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(jsonsample)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'홍판서'" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# json의 특정 항목에 접근\n", + "jsonsample['가족관계']['아버지']" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#API 결과를 json 포맷으로 변환\n", + "jsondata =response.json()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DONGGIGANGYE_1GYE_2GYE_3JACHIGUNAMJA_1NAMJA_2NAMJA_3N_65SEISANGGORYEONGJASEDAESEDAEDANGINGUYEOJA_1YEOJA_2YEOJA_3
0합계2016102040579930616273441합계50073794876789130590130087741898392.3751966785053827142851
1소계20161619221527379185종로구7932275201412125091721182.1282600775365064
2사직동2016100139695318종로구46054429176170743992.2054085266142
3삼청동201631182903215종로구1491137711462414032.0716271526101
4부암동20161104410616428종로구53495160189172343712.4356955456239
\n", + "
" + ], + "text/plain": [ + " DONG GIGAN GYE_1 GYE_2 GYE_3 JACHIGU NAMJA_1 NAMJA_2 NAMJA_3 \\\n", + "0 합계 2016 10204057 9930616 273441 합계 5007379 4876789 130590 \n", + "1 소계 2016 161922 152737 9185 종로구 79322 75201 4121 \n", + "2 사직동 2016 10013 9695 318 종로구 4605 4429 176 \n", + "3 삼청동 2016 3118 2903 215 종로구 1491 1377 114 \n", + "4 부암동 2016 11044 10616 428 종로구 5349 5160 189 \n", + "\n", + " N_65SEISANGGORYEONGJA SEDAE SEDAEDANGINGU YEOJA_1 YEOJA_2 YEOJA_3 \n", + "0 1300877 4189839 2.37 5196678 5053827 142851 \n", + "1 25091 72118 2.12 82600 77536 5064 \n", + "2 1707 4399 2.20 5408 5266 142 \n", + "3 624 1403 2.07 1627 1526 101 \n", + "4 1723 4371 2.43 5695 5456 239 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "jsondata = jsondata['octastatapi10043']['row']\n", + "동별인구통계 = DataFrame(jsondata)\n", + "동별인구통계" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2. folium 을 활용한 지도 시각화" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [], + "source": [ + "#folium 라이브러리 설치\n", + "# anaconda prompt에서 'pip install folium' 실행\n", + "import folium" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "map1 = folium.Map(location = [37.5, 126.9], zoom_start = 10)\n", + "map1\n", + "# 서울시청을 지도의 중심으로, 지도를 그려줌. \n", + "# zoom_start는 지도를 그릴 때 얼마나 zoom 해서 보여줄 지를 결정. 값이 클수록, zoom in" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Marker 추가하기 (지도에 지점 추가하기)\n", + "folium.Marker([37.3, 126], popup = '테스트지점').add_to(map1)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "map1" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
조사지점코드조사지점명구코드동코드주번지부번지도로명보도너비차선수버스차로유무...지구중심상세내용도심부도심지역명용도구분거주유형구분입지유형명X좌표Y좌표집계구코드년도조사구분
001-003신흥모피명품전문크리닝.11010.01101055.012711NaN3.08.0...NaNNaN2종주거NaNNaN196423.97707455511.529681.101055e+122015본조사
101-004GS2511010.01101055.0942세검정로 2303.07.0...NaNNaN2종주거NaNNaN196315.80243455621.382621.101055e+122015본조사
201-005세검정정류장11010.01101055.0920세검정길4.05.0...NaNNaN1종주거NaNNaN196357.17125455680.825801.101055e+122015본조사
301-008안성타워內 굿모닝파워공인중개사.11010.01101056.07272NaN4.04.0...NaNNaN2종주거NaNNaN197904.19277456718.349961.101056e+122015본조사
401-009복실 손뜨기.11010.01101056.08846NaN2.07.0...NaNNaN2종주거NaNNaN196360.44943456405.892961.101056e+122015본조사
\n", + "

5 rows × 37 columns

\n", + "
" + ], + "text/plain": [ + " 조사지점코드 조사지점명 구코드 동코드 주번지 부번지 도로명 보도너비 \\\n", + "0 01-003 신흥모피명품전문크리닝. 11010.0 1101055.0 127 11 NaN 3.0 \n", + "1 01-004 GS25 11010.0 1101055.0 94 2 세검정로 230 3.0 \n", + "2 01-005 세검정정류장 11010.0 1101055.0 92 0 세검정길 4.0 \n", + "3 01-008 안성타워內 굿모닝파워공인중개사. 11010.0 1101056.0 72 72 NaN 4.0 \n", + "4 01-009 복실 손뜨기. 11010.0 1101056.0 88 46 NaN 2.0 \n", + "\n", + " 차선수 버스차로유무 ... 지구중심상세내용 도심부도심지역명 용도구분 거주유형구분 입지유형명 X좌표 \\\n", + "0 8.0 유 ... NaN NaN 2종주거 NaN NaN 196423.97707 \n", + "1 7.0 유 ... NaN NaN 2종주거 NaN NaN 196315.80243 \n", + "2 5.0 유 ... NaN NaN 1종주거 NaN NaN 196357.17125 \n", + "3 4.0 유 ... NaN NaN 2종주거 NaN NaN 197904.19277 \n", + "4 7.0 유 ... NaN NaN 2종주거 NaN NaN 196360.44943 \n", + "\n", + " Y좌표 집계구코드 년도 조사구분 \n", + "0 455511.52968 1.101055e+12 2015 본조사 \n", + "1 455621.38262 1.101055e+12 2015 본조사 \n", + "2 455680.82580 1.101055e+12 2015 본조사 \n", + "3 456718.34996 1.101056e+12 2015 본조사 \n", + "4 456405.89296 1.101056e+12 2015 본조사 \n", + "\n", + "[5 rows x 37 columns]" + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 조사지점 위치 읽어오기\n", + "조사지점 = pd.read_excel('data/서울시유동인구/4_유동인구_조사지점정보_2015.xlsx', \n", + " skiprows = [0,1,3])\n", + "측정위치.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
조사지점명X좌표Y좌표
0신흥모피명품전문크리닝.196423.97707455511.52968
1GS25196315.80243455621.38262
2세검정정류장196357.17125455680.82580
3안성타워內 굿모닝파워공인중개사.197904.19277456718.34996
4복실 손뜨기.196360.44943456405.89296
524시 동대문 설렁탕.200966.43423452483.73642
6서울전문학교.201686.66781452747.41594
7서울 종묘농약200231.75517452355.91115
8서울 종묘농약200231.75517452355.91115
9삼성카드빌딩199935.57893452934.78947
10TIFS(성우빌딩)199800.95512453650.39376
11TIFS(성우빌딩)199800.95512453650.39376
12KFC200202.62257453589.66617
13영안빌딩(미샤)198688.03274452134.47214
14영안빌딩(미샤)198688.03274452134.47214
15우리은행198735.59303452269.98495
16종묘공원199613.61204452366.33351
17U+199171.23557452305.62273
18U+199171.23557452305.62273
19성종사198489.34152452574.37932
20금호미술관198191.61215453299.24582
21남원추어탕 맞은편.197468.53801453960.58038
22대영빌딩197440.64238452917.23467
23픽스딕스.198188.23447452301.16163
24세실치과의원196630.61453452352.58803
25금호아시아나 1관.197617.63370452261.08752
26lg광화문 빌딩197472.52625452270.54377
27안경마을 콘텍트198082.11244452594.04638
28세란병원.196239.36250452844.44602
29에이스조명199797.32477452206.28026
30매헌빌딩199870.61751452367.06857
31경복궁 돌담길 경복궁동문 정류장에서 춘추관앞 방향으로 60M198167.84898453088.98273
32버스정류장에서 도로 바라보고 좌측20미터 일성툴199417.15706452126.23062
33우리은행198720.17896452308.82284
34Tworld 대리점199080.59246452271.65642
35준코 뮤직타운198721.18954452307.83355
36준코 뮤직타운198721.18954452307.83355
37광화문 빌딩197893.71130452255.02517
38서울보증보험 조형물200053.53059452658.03034
39효제초교 지하주차장입구200248.77419452636.10706
40대일빌딩200525.50255452569.04854
41운촌빌딩200456.34661452677.31833
42국일관199089.97499452235.75446
43성제종합휘장타운199087.99675452139.72858
44안국역 6번 출구 건너편198593.37554452947.50485
45농협중앙회 앞198572.80445452531.26545
46SINDO 앞197602.32079453323.97458
47감사원뒷길198670.87338454122.38772
48서울 닭 문화관198675.39755453697.41488
49애지중지198826.12373453442.00663
\n", + "
" + ], + "text/plain": [ + " 조사지점명 X좌표 Y좌표\n", + "0 신흥모피명품전문크리닝. 196423.97707 455511.52968\n", + "1 GS25 196315.80243 455621.38262\n", + "2 세검정정류장 196357.17125 455680.82580\n", + "3 안성타워內 굿모닝파워공인중개사. 197904.19277 456718.34996\n", + "4 복실 손뜨기. 196360.44943 456405.89296\n", + "5 24시 동대문 설렁탕. 200966.43423 452483.73642\n", + "6 서울전문학교. 201686.66781 452747.41594\n", + "7 서울 종묘농약 200231.75517 452355.91115\n", + "8 서울 종묘농약 200231.75517 452355.91115\n", + "9 삼성카드빌딩 199935.57893 452934.78947\n", + "10 TIFS(성우빌딩) 199800.95512 453650.39376\n", + "11 TIFS(성우빌딩) 199800.95512 453650.39376\n", + "12 KFC 200202.62257 453589.66617\n", + "13 영안빌딩(미샤) 198688.03274 452134.47214\n", + "14 영안빌딩(미샤) 198688.03274 452134.47214\n", + "15 우리은행 198735.59303 452269.98495\n", + "16 종묘공원 199613.61204 452366.33351\n", + "17 U+ 199171.23557 452305.62273\n", + "18 U+ 199171.23557 452305.62273\n", + "19 성종사 198489.34152 452574.37932\n", + "20 금호미술관 198191.61215 453299.24582\n", + "21 남원추어탕 맞은편. 197468.53801 453960.58038\n", + "22 대영빌딩 197440.64238 452917.23467\n", + "23 픽스딕스. 198188.23447 452301.16163\n", + "24 세실치과의원 196630.61453 452352.58803\n", + "25 금호아시아나 1관. 197617.63370 452261.08752\n", + "26 lg광화문 빌딩 197472.52625 452270.54377\n", + "27 안경마을 콘텍트 198082.11244 452594.04638\n", + "28 세란병원. 196239.36250 452844.44602\n", + "29 에이스조명 199797.32477 452206.28026\n", + "30 매헌빌딩 199870.61751 452367.06857\n", + "31 경복궁 돌담길 경복궁동문 정류장에서 춘추관앞 방향으로 60M 198167.84898 453088.98273\n", + "32 버스정류장에서 도로 바라보고 좌측20미터 일성툴 199417.15706 452126.23062\n", + "33 우리은행 198720.17896 452308.82284\n", + "34 Tworld 대리점 199080.59246 452271.65642\n", + "35 준코 뮤직타운 198721.18954 452307.83355\n", + "36 준코 뮤직타운 198721.18954 452307.83355\n", + "37 광화문 빌딩 197893.71130 452255.02517\n", + "38 서울보증보험 조형물 200053.53059 452658.03034\n", + "39 효제초교 지하주차장입구 200248.77419 452636.10706\n", + "40 대일빌딩 200525.50255 452569.04854\n", + "41 운촌빌딩 200456.34661 452677.31833\n", + "42 국일관 199089.97499 452235.75446\n", + "43 성제종합휘장타운 199087.99675 452139.72858\n", + "44 안국역 6번 출구 건너편 198593.37554 452947.50485\n", + "45 농협중앙회 앞 198572.80445 452531.26545\n", + "46 SINDO 앞 197602.32079 453323.97458\n", + "47 감사원뒷길 198670.87338 454122.38772\n", + "48 서울 닭 문화관 198675.39755 453697.41488\n", + "49 애지중지 198826.12373 453442.00663" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "측정위치50 = 측정위치[['조사지점명', 'X좌표', 'Y좌표']].iloc[:50]\n", + "측정위치50\n", + "# 50개의 측정 위치에 대해 필요한 정보만 저장" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# 위치 정보 변환을 위한 라이브러리 설치\n", + "# pip install pyproj\n", + "#conda install pyproj\n", + "from pyproj import Proj, transform" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [], + "source": [ + "# X좌표, Y좌표를 위도와 경도로 변환하는 함수 선언\n", + "def convert(x,y):\n", + " inProj = Proj(init = 'epsg:5181')\n", + " outProj = Proj(init = 'epsg:4326')\n", + " x2,y2 = transform(inProj, outProj, x, y)\n", + " return [y2, x2]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 25, + "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", + "
조사지점명X좌표Y좌표위경도
0신흥모피명품전문크리닝.196423.97707455511.52968[37.5991696223151, 126.95950527754184]
1GS25196315.80243455621.38262[37.60015896037769, 126.95827976042075]
2세검정정류장196357.17125455680.82580[37.60069470246659, 126.95874792945385]
\n", + "
" + ], + "text/plain": [ + " 조사지점명 X좌표 Y좌표 \\\n", + "0 신흥모피명품전문크리닝. 196423.97707 455511.52968 \n", + "1 GS25 196315.80243 455621.38262 \n", + "2 세검정정류장 196357.17125 455680.82580 \n", + "\n", + " 위경도 \n", + "0 [37.5991696223151, 126.95950527754184] \n", + "1 [37.60015896037769, 126.95827976042075] \n", + "2 [37.60069470246659, 126.95874792945385] " + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#측정위치50에 위도와 경도 정보를 추가 # row 단위 # lambda : row의 갯수만큼 반복하게 도와줌\n", + "측정위치50['위경도'] = 측정위치50.apply(lambda 지점: convert(지점['X좌표'], 지점['Y좌표']), axis = 1)\n", + "측정위치50.head(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "#측정위치 50개를 지도에 표시\n", + "for row in 측정위치50.iterrows():\n", + " folium.Marker(row[1]['위경도'], popup = row[1]['조사지점명']).add_to(map1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "map1" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "map1.save('map_img1.html')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3. 서울시 유동인구 분석" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 데이터 적재" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "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", + "
ID유동인구조사조사지점코드조사구분조사요일시간대유동인구수년도
0130-001지하철07시-08시129.02015
1230-001지하철08시-09시112.52015
2330-001지하철09시-10시108.02015
3430-001지하철10시-11시94.52015
4530-001지하철11시-12시87.02015
\n", + "
" + ], + "text/plain": [ + " ID유동인구조사 조사지점코드 조사구분 조사요일 시간대 유동인구수 년도\n", + "0 1 30-001 지하철 금 07시-08시 129.0 2015\n", + "1 2 30-001 지하철 금 08시-09시 112.5 2015\n", + "2 3 30-001 지하철 금 09시-10시 108.0 2015\n", + "3 4 30-001 지하철 금 10시-11시 94.5 2015\n", + "4 5 30-001 지하철 금 11시-12시 87.0 2015" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 데이터 적재\n", + "유동인구 = pd.read_excel('data/서울시유동인구/0_유동인구_유동인구기본_2015.xlsx', \n", + " skiprows = [0,1,3])\n", + "유동인구.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "data = pd.read_excel('data/서울시유동인구/4_유동인구_조사지점정보_2015.xlsx', \n", + " sheet_name = None, skiprows = [0,1,3])\n", + "# 구코드, 동코드, 구명, 동명 " + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "odict_keys(['유동인구_조사지점정보_2015', 'FTPTH_STLE_CN', 'GU_CD', 'DONG_CD', 'SM_GU_CD'])" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.keys()\n", + "# 5개의 시트정보" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "조사지점 = data.get('유동인구_조사지점정보_2015')\n", + "구코드 = data.get('GU_CD')\n", + "동코드 = data.get('DONG_CD')\n", + "집계구코드 = data.get('SM_GU_CD')" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "scrolled": true + }, + "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", + "
ID유동인구조사조사지점코드조사구분조사요일시간대유동인구수년도
0130-001지하철07시-08시129.02015
\n", + "
" + ], + "text/plain": [ + " ID유동인구조사 조사지점코드 조사구분 조사요일 시간대 유동인구수 년도\n", + "0 1 30-001 지하철 금 07시-08시 129.0 2015" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "유동인구.head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "scrolled": true + }, + "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", + "
집계구코드구코드동코드구명동명연도집계구명칭
0110407001000511041104070성동구용답동2013영해약국
\n", + "
" + ], + "text/plain": [ + " 집계구코드 구코드 동코드 구명 동명 연도 집계구명칭\n", + "0 1104070010005 1104 1104070 성동구 용답동 2013 영해약국" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "집계구코드.head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "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", + "
조사지점코드조사지점명구코드동코드주번지부번지도로명보도너비차선수버스차로유무...지구중심상세내용도심부도심지역명용도구분거주유형구분입지유형명X좌표Y좌표집계구코드년도조사구분
001-003신흥모피명품전문크리닝.11010.01101055.012711NaN3.08.0...NaNNaN2종주거NaNNaN196423.97707455511.529681.101055e+122015본조사
\n", + "

1 rows × 37 columns

\n", + "
" + ], + "text/plain": [ + " 조사지점코드 조사지점명 구코드 동코드 주번지 부번지 도로명 보도너비 차선수 버스차로유무 \\\n", + "0 01-003 신흥모피명품전문크리닝. 11010.0 1101055.0 127 11 NaN 3.0 8.0 유 \n", + "\n", + " ... 지구중심상세내용 도심부도심지역명 용도구분 거주유형구분 입지유형명 X좌표 Y좌표 \\\n", + "0 ... NaN NaN 2종주거 NaN NaN 196423.97707 455511.52968 \n", + "\n", + " 집계구코드 년도 조사구분 \n", + "0 1.101055e+12 2015 본조사 \n", + "\n", + "[1 rows x 37 columns]" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "조사지점.head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구 = pd.merge(유동인구, 조사지점[['조사지점코드', '조사지점명', '구코드', '동코드', 'X좌표', 'Y좌표', '집계구코드']])" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구 = pd.merge(유동인구, 구코드[['구코드', '구명']])" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구 = pd.merge(유동인구, 동코드[['동코드', '동명']])" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "scrolled": true + }, + "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", + "
ID유동인구조사조사지점코드조사구분조사요일시간대유동인구수년도조사지점명구코드동코드X좌표Y좌표집계구코드구명동명
0306701-003본조사07시-08시21.02015신흥모피명품전문크리닝.11010.01101055.0196423.97707455511.529681.101055e+12종로구부암동
1306801-003본조사08시-09시36.02015신흥모피명품전문크리닝.11010.01101055.0196423.97707455511.529681.101055e+12종로구부암동
\n", + "
" + ], + "text/plain": [ + " ID유동인구조사 조사지점코드 조사구분 조사요일 시간대 유동인구수 년도 조사지점명 구코드 \\\n", + "0 3067 01-003 본조사 금 07시-08시 21.0 2015 신흥모피명품전문크리닝. 11010.0 \n", + "1 3068 01-003 본조사 금 08시-09시 36.0 2015 신흥모피명품전문크리닝. 11010.0 \n", + "\n", + " 동코드 X좌표 Y좌표 집계구코드 구명 동명 \n", + "0 1101055.0 196423.97707 455511.52968 1.101055e+12 종로구 부암동 \n", + "1 1101055.0 196423.97707 455511.52968 1.101055e+12 종로구 부암동 " + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "유동인구.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구 = 유동인구[유동인구.조사구분=='본조사']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 미션 1. 유동인구를 요일과 시간대 별로 분석하여, 유동인구가 가장 많은 상위 10개의 요일과 시간대를 출력. (e.g., 금요일 18시-19시가 유동인구가 가장 많음.)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구.pivot_table(index = ['조사요일', '시간대'], values = '유동인구수', aggfunc = 'sum') \\\n", + " .sort_values(by = '유동인구수', ascending = False).head(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 미션 2\t. 서울시 각 구별 전체 유동인구 분석" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "유동인구.head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "구별유동인구 = 유동인구.pivot_table(index = '구명', values = '유동인구수', aggfunc = 'sum')" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
유동인구수
구명
중구7783989.0
종로구5587683.0
서초구4392018.0
강남구3831897.0
구로구2333352.0
관악구2295348.0
영등포구2200728.0
노원구2119686.0
동작구2104242.0
강동구2007342.0
용산구1964184.0
송파구1786455.0
마포구1724937.0
양천구1633581.0
광진구1472685.0
서대문구1452975.0
은평구1348008.0
강북구1228965.0
동대문구1185888.0
성동구1180284.0
성북구1176366.0
강서구1075908.0
중랑구957777.0
금천구862296.0
도봉구742461.0
\n", + "
" + ], + "text/plain": [ + " 유동인구수\n", + "구명 \n", + "중구 7783989.0\n", + "종로구 5587683.0\n", + "서초구 4392018.0\n", + "강남구 3831897.0\n", + "구로구 2333352.0\n", + "관악구 2295348.0\n", + "영등포구 2200728.0\n", + "노원구 2119686.0\n", + "동작구 2104242.0\n", + "강동구 2007342.0\n", + "용산구 1964184.0\n", + "송파구 1786455.0\n", + "마포구 1724937.0\n", + "양천구 1633581.0\n", + "광진구 1472685.0\n", + "서대문구 1452975.0\n", + "은평구 1348008.0\n", + "강북구 1228965.0\n", + "동대문구 1185888.0\n", + "성동구 1180284.0\n", + "성북구 1176366.0\n", + "강서구 1075908.0\n", + "중랑구 957777.0\n", + "금천구 862296.0\n", + "도봉구 742461.0" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "구별유동인구.sort_values(by = '유동인구수', ascending = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "구별유동인구.plot(kind = 'barh',figsize = (10,8))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 미션 3. 서울시 각 구별로 출퇴근 시간의 유동인구 분석 (출퇴근 시간은 6시-10시, 18시-21시로 가정함)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구.head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "구별시간대별유동인구 = 유동인구.pivot_table(index = ['구명', '시간대'], values = '유동인구수', aggfunc = 'sum')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "출퇴근시간대 = list(np.unique(유동인구['시간대'])[0:3]) + list(np.unique(유동인구['시간대'])[-3:])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "출퇴근시간대구별유동인구 = 구별시간대별유동인구[구별시간대별유동인구.index.get_level_values('시간대').isin(출퇴근시간대)]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "출퇴근시간대구별유동인구 = 출퇴근시간대구별유동인구.unstack()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "출퇴근시간대구별유동인구" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "출퇴근시간대구별유동인구.plot(kind = 'barh', stacked = True, figsize = (10,10))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 미션 4. 평일 유동인구와 주말 유동인구를 분석하여, 그 차이가 가장 많이 나는 상위 5개 구 정보를 출력\n" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "scrolled": true + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
조사요일
구명
강남구831537.0NaN786945.0763788.0678015.0771612.0
강동구415683.0NaN400101.0387411.0422109.0382038.0
강북구248163.0NaN246363.0241245.0252609.0240585.0
강서구216459.0NaN219156.0217440.0204612.0218241.0
관악구483966.0NaN473145.0462741.0414660.0460836.0
광진구296775.0NaN288054.0281484.0311508.0294864.0
구로구480456.0NaN474879.0469695.0441702.0466620.0
금천구179799.0NaN182733.0180936.0131775.0187053.0
노원구436677.0NaN426096.0416238.0421353.0419322.0
도봉구158115.0NaN153099.0150927.0134208.0146112.0
동대문구246735.0717.0240081.0238452.0222105.0237798.0
동작구435240.05889.0421491.0418782.0411021.0411819.0
마포구364620.015873.0337584.0329019.0360222.0317619.0
서대문구295785.0NaN300354.0294792.0250437.0311607.0
서초구924369.03150.0872241.0854952.0864129.0873177.0
성동구241830.0NaN240942.0237183.0217677.0242652.0
성북구249603.0NaN238350.0234726.0224070.0229617.0
송파구360699.0NaN350838.0338676.0389028.0347214.0
양천구339801.0NaN335472.0324081.0304281.0329946.0
영등포구463551.03552.0441756.0431580.0422748.0437541.0
용산구408657.0NaN384765.0366411.0431826.0372525.0
은평구274662.0NaN272100.0266055.0272460.0262731.0
종로구1179027.0NaN1094118.01039425.01221630.01053483.0
중구1563354.0NaN1496586.01426587.01783842.01513620.0
중랑구191439.0NaN188961.0187746.0203190.0186441.0
\n", + "
" + ], + "text/plain": [ + "조사요일 금 목 수 월 토 화\n", + "구명 \n", + "강남구 831537.0 NaN 786945.0 763788.0 678015.0 771612.0\n", + "강동구 415683.0 NaN 400101.0 387411.0 422109.0 382038.0\n", + "강북구 248163.0 NaN 246363.0 241245.0 252609.0 240585.0\n", + "강서구 216459.0 NaN 219156.0 217440.0 204612.0 218241.0\n", + "관악구 483966.0 NaN 473145.0 462741.0 414660.0 460836.0\n", + "광진구 296775.0 NaN 288054.0 281484.0 311508.0 294864.0\n", + "구로구 480456.0 NaN 474879.0 469695.0 441702.0 466620.0\n", + "금천구 179799.0 NaN 182733.0 180936.0 131775.0 187053.0\n", + "노원구 436677.0 NaN 426096.0 416238.0 421353.0 419322.0\n", + "도봉구 158115.0 NaN 153099.0 150927.0 134208.0 146112.0\n", + "동대문구 246735.0 717.0 240081.0 238452.0 222105.0 237798.0\n", + "동작구 435240.0 5889.0 421491.0 418782.0 411021.0 411819.0\n", + "마포구 364620.0 15873.0 337584.0 329019.0 360222.0 317619.0\n", + "서대문구 295785.0 NaN 300354.0 294792.0 250437.0 311607.0\n", + "서초구 924369.0 3150.0 872241.0 854952.0 864129.0 873177.0\n", + "성동구 241830.0 NaN 240942.0 237183.0 217677.0 242652.0\n", + "성북구 249603.0 NaN 238350.0 234726.0 224070.0 229617.0\n", + "송파구 360699.0 NaN 350838.0 338676.0 389028.0 347214.0\n", + "양천구 339801.0 NaN 335472.0 324081.0 304281.0 329946.0\n", + "영등포구 463551.0 3552.0 441756.0 431580.0 422748.0 437541.0\n", + "용산구 408657.0 NaN 384765.0 366411.0 431826.0 372525.0\n", + "은평구 274662.0 NaN 272100.0 266055.0 272460.0 262731.0\n", + "종로구 1179027.0 NaN 1094118.0 1039425.0 1221630.0 1053483.0\n", + "중구 1563354.0 NaN 1496586.0 1426587.0 1783842.0 1513620.0\n", + "중랑구 191439.0 NaN 188961.0 187746.0 203190.0 186441.0" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "요일별구별유동인구 = 유동인구.pivot_table(index = '구명', columns = '조사요일', values = '유동인구수', aggfunc = 'sum')\n", + "요일별구별유동인구" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "요일별구별유동인구['주중'] = (요일별구별유동인구['월'] + 요일별구별유동인구['화'] + \n", + " 요일별구별유동인구['수']+요일별구별유동인구['목']+요일별구별유동인구['금'])/5" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "요일별구별유동인구['주말'] = 요일별구별유동인구['토']" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [], + "source": [ + "요일별구별유동인구['주중주말편차'] = (요일별구별유동인구['주중']-요일별구별유동인구['주말']).abs()" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "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", + "
조사요일주중주말주중주말편차
구명
강남구831537.0NaN786945.0763788.0678015.0771612.0NaN678015.0NaN
강동구415683.0NaN400101.0387411.0422109.0382038.0NaN422109.0NaN
\n", + "
" + ], + "text/plain": [ + "조사요일 금 목 수 월 토 화 주중 주말 \\\n", + "구명 \n", + "강남구 831537.0 NaN 786945.0 763788.0 678015.0 771612.0 NaN 678015.0 \n", + "강동구 415683.0 NaN 400101.0 387411.0 422109.0 382038.0 NaN 422109.0 \n", + "\n", + "조사요일 주중주말편차 \n", + "구명 \n", + "강남구 NaN \n", + "강동구 NaN " + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "요일별구별유동인구.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "요일별구별유동인구 = 요일별구별유동인구[['주중','주말', '주중주말편차']]" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
조사요일주중주말주중주말편차
구명
서초구705577.8864129.0158551.2
마포구272943.0360222.087279.0
동작구338644.2411021.072376.8
영등포구355596.0422748.067152.0
동대문구192756.6222105.029348.4
강남구NaN678015.0NaN
강동구NaN422109.0NaN
강북구NaN252609.0NaN
강서구NaN204612.0NaN
관악구NaN414660.0NaN
광진구NaN311508.0NaN
구로구NaN441702.0NaN
금천구NaN131775.0NaN
노원구NaN421353.0NaN
도봉구NaN134208.0NaN
서대문구NaN250437.0NaN
성동구NaN217677.0NaN
성북구NaN224070.0NaN
송파구NaN389028.0NaN
양천구NaN304281.0NaN
용산구NaN431826.0NaN
은평구NaN272460.0NaN
종로구NaN1221630.0NaN
중구NaN1783842.0NaN
중랑구NaN203190.0NaN
\n", + "
" + ], + "text/plain": [ + "조사요일 주중 주말 주중주말편차\n", + "구명 \n", + "서초구 705577.8 864129.0 158551.2\n", + "마포구 272943.0 360222.0 87279.0\n", + "동작구 338644.2 411021.0 72376.8\n", + "영등포구 355596.0 422748.0 67152.0\n", + "동대문구 192756.6 222105.0 29348.4\n", + "강남구 NaN 678015.0 NaN\n", + "강동구 NaN 422109.0 NaN\n", + "강북구 NaN 252609.0 NaN\n", + "강서구 NaN 204612.0 NaN\n", + "관악구 NaN 414660.0 NaN\n", + "광진구 NaN 311508.0 NaN\n", + "구로구 NaN 441702.0 NaN\n", + "금천구 NaN 131775.0 NaN\n", + "노원구 NaN 421353.0 NaN\n", + "도봉구 NaN 134208.0 NaN\n", + "서대문구 NaN 250437.0 NaN\n", + "성동구 NaN 217677.0 NaN\n", + "성북구 NaN 224070.0 NaN\n", + "송파구 NaN 389028.0 NaN\n", + "양천구 NaN 304281.0 NaN\n", + "용산구 NaN 431826.0 NaN\n", + "은평구 NaN 272460.0 NaN\n", + "종로구 NaN 1221630.0 NaN\n", + "중구 NaN 1783842.0 NaN\n", + "중랑구 NaN 203190.0 NaN" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "요일별구별유동인구.sort_values(by = '주중주말편차', ascending= False)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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ADSe45AkSdJ4qhL4LgI+1fSuvD7gg5n50xJ7kiRJqoVKBL7M/C5w9j4ctxZYu5fdy4Gd+96VJElSPVQi8HVDZm4tuwdJkqQqKP2n1SRJktRdBj5JkqSaq+0lXUmSNLV27tzJfffdxyOPPFJ2Kwedww8/nFmzZnHIIYdMXNyGgU+SJHXkvvvu48gjj2TOnDm+Gu0Aykweeugh7rvvPp7+9Kfv0xxe0pUkSR155JFHePKTn2zYO8Aigic/+cn7tbJq4JMkSR0z7JVjf//fDXySJKmWbr755imd79vf/jZ/8Rd/MaVzHigGPkmSVFm33nor8+bNY968eTz3uc/luc997p7tL3/5y4+pnTdv3mO2P/rRjz5uvu9973uce+65nH766Zx++umce+65fO9733tMzU9/+lPOO+885s+fz4tf/GL+6q/+CoDt27ezefPmKf6GB4YPbUiSpMo666yzOOusswC49NJLGR0d5fLLL29bu2PHjnHnGh0d5fWvfz1f/OIXmT17NgAbN27kvPPO41vf+hbTpzdi0ZVXXsnrXvc6zjnnHHbv3s2pp57KeeedN4Xf6sBzhU+SJFXePffcwx133MH69eu55557Hrd/dHSUdevWMTo6utc5Nm7cyHHHHbcn7AHMnj2b4447jo0bN+4ZO+aYY/Y8ILFr1y6OOuooDj/88Cn8NgdeZQNfRLyx7B4kSVL5RkZGuOCCC/j0pz/NZz7zGV73utfxD//wD4+pueWWWzj22GP50pe+tGds9+7dvOpVr2LZsmUAHHvssdx9992POfYb3/gGd999N8cee+yesQsvvJD777+f97znPbzvfe/j8ssv37P616tK7z4iPgScVGw+Dbg8M5cDLwc+2VR3e2bOazl2VWae2TK2ApjRcpq5wEBm7pzq/iVJUvdcdNFFRAQ33XQTDz74ILt37+bmm2/m0ksv5eqrr2bZsmXs3LmTq666iq985SssWrSI008/nRkzZjBt2jSuu+66PXP19fXxqU99irPOOovnPOc5ZCb/8i//wi233EJfX9+eumnTpvHSl76U2267DYA1a9awZs0aAF760pce2P+AKVJ64MvMS8c+R8R1wG17KZ0TEbe3jB3bWpSZC1rHImIlsPc1XkmSVEkf//jHmTatcUHyS1/6EqOjoyxatIiPf/zjZCajo6O84Q1v4C1veQuzZs3isssu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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "요일별구별유동인구.plot(kind = 'barh', figsize = (10,10))" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "요일별구별유동인구.주중주말편차.plot(kind = 'bar')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 미션 5. 유동인구의 수와 보행환경 정보를 분석하여, 보행 환경 개선이 시급한 곳 10군데를 선정. (보행환경 정보는 유동인구상세로그_2015.xlsx의 보행환경 컬럼 참고. 매우불만족(1), 약간불만족(2), 보통(3), 약간만족(4), 매우만족(5) )\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 보행평균점수 - [1,5]\n", + "#불만족비율 - 전체 응답 중에 매우불만족과 약간불만족의 비율 [0,1]\n", + "#유동인구등급(유동인구수 많은 곳을 더 시급하게 개선이 필요하다고 생각) - 유동인구수를 10등급으로 나눔, [0,9]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#1" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구_속성조사 = pd.read_excel('data/서울시유동인구/2_유동인구_속성조사_2015.xlsx', \n", + " skiprows = [0,1,3])" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [], + "source": [ + "def 보행환경(만족도):\n", + " if 만족도 == '매우만족':\n", + " return 5\n", + " elif 만족도 == '약간만족':\n", + " return 4\n", + " elif 만족도 == '보통':\n", + " return 3\n", + " elif 만족도 == '약간불만족':\n", + " return 2\n", + " elif 만족도 == '매우불만족':\n", + " return 1\n", + " else:\n", + " return 0\n", + " \n", + "지점별보행점수 = 유동인구_속성조사.pivot_table(index = '조사지점코드', values = '보행점수',aggfunc = 'mean')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#2\n", + "보행환경매트릭스=유동인구_속성조사.pivot_table(index = '조사지점코드', columns = '보행환경', values = 'ID속성조사', aggfunc = 'count',fill_value= 0 )\n", + "보행환경매트릭스['불만족비율'] = (보행환경매트릭스.매우불만족+보행환경매트릭스.약간불만족)/보행환경매트릭스.sum(axis = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": { + "scrolled": true + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
유동인구수불만족비율보행점수유동인구등급개선시급도
조사지점코드
23-0761928.1428571.002.63333399.00
23-0341389.7285711.001.92777899.00
23-2851178.7428571.002.38333399.00
23-0751236.0000001.002.00555699.00
23-2361166.2285710.951.98333398.55
01-20952193.8571430.951.75555698.55
13-50021972.4142860.902.11111198.10
04-2026980.5285711.002.14444488.00
21-0391130.0571430.852.45000097.65
17-20553242.8285710.851.73888997.65
02-2601810.3285710.851.94444497.65
14-0471043.9571430.851.80555697.65
17-0821572.3428570.852.18888997.65
23-276706.1142860.902.38333387.20
15-096822.3428570.902.68333387.20
22-139723.1714290.852.55000086.80
17-2521584.8142860.752.13888996.75
01-2133368.9142860.752.15000096.75
01-0841831.9285710.751.87222296.75
25-4301371.9857140.752.70000096.75
01-0821502.5285710.752.01111196.75
20-1103555.8142860.952.62222276.65
15-1197743.3142860.802.53888986.40
15-093587.1428570.802.46666786.40
16-065961.5428570.802.52222286.40
12-2024662.6142860.802.27222286.40
02-0741834.5428570.701.62222296.30
20-8251215.3000000.702.42777896.30
06-019499.3285710.902.27222276.30
19-013463.5857140.902.33888976.30
09-3146740.9142860.752.80000086.00
01-066877.5428570.752.17222286.00
01-2104880.8000000.751.94444486.00
20-022487.2428570.852.39444475.95
19-066542.8285710.852.45000075.95
22-362413.8714290.852.31111175.95
09-2191029.8571430.652.26111195.85
11-20441083.4714290.652.32222295.85
04-0051054.7142860.652.52222295.85
01-21271873.2000000.652.24444495.85
01-248336.7285710.952.18333365.70
17-027372.0428570.952.57222265.70
19-052503.6571430.802.41666775.60
21-012745.0285710.702.47777885.60
19-030897.7714290.702.60000085.60
19-016729.6000000.702.45000085.60
18-2005853.0714290.702.37222285.60
23-859296.1428570.902.46666765.40
01-233320.3142860.902.42777865.40
19-0041194.8142860.602.21666795.40
\n", + "
" + ], + "text/plain": [ + " 유동인구수 불만족비율 보행점수 유동인구등급 개선시급도\n", + "조사지점코드 \n", + "23-076 1928.142857 1.00 2.633333 9 9.00\n", + "23-034 1389.728571 1.00 1.927778 9 9.00\n", + "23-285 1178.742857 1.00 2.383333 9 9.00\n", + "23-075 1236.000000 1.00 2.005556 9 9.00\n", + "23-236 1166.228571 0.95 1.983333 9 8.55\n", + "01-2095 2193.857143 0.95 1.755556 9 8.55\n", + "13-5002 1972.414286 0.90 2.111111 9 8.10\n", + "04-2026 980.528571 1.00 2.144444 8 8.00\n", + "21-039 1130.057143 0.85 2.450000 9 7.65\n", + "17-2055 3242.828571 0.85 1.738889 9 7.65\n", + "02-260 1810.328571 0.85 1.944444 9 7.65\n", + "14-047 1043.957143 0.85 1.805556 9 7.65\n", + "17-082 1572.342857 0.85 2.188889 9 7.65\n", + "23-276 706.114286 0.90 2.383333 8 7.20\n", + "15-096 822.342857 0.90 2.683333 8 7.20\n", + "22-139 723.171429 0.85 2.550000 8 6.80\n", + "17-252 1584.814286 0.75 2.138889 9 6.75\n", + "01-213 3368.914286 0.75 2.150000 9 6.75\n", + "01-084 1831.928571 0.75 1.872222 9 6.75\n", + "25-430 1371.985714 0.75 2.700000 9 6.75\n", + "01-082 1502.528571 0.75 2.011111 9 6.75\n", + "20-1103 555.814286 0.95 2.622222 7 6.65\n", + "15-1197 743.314286 0.80 2.538889 8 6.40\n", + "15-093 587.142857 0.80 2.466667 8 6.40\n", + "16-065 961.542857 0.80 2.522222 8 6.40\n", + "12-2024 662.614286 0.80 2.272222 8 6.40\n", + "02-074 1834.542857 0.70 1.622222 9 6.30\n", + "20-825 1215.300000 0.70 2.427778 9 6.30\n", + "06-019 499.328571 0.90 2.272222 7 6.30\n", + "19-013 463.585714 0.90 2.338889 7 6.30\n", + "09-3146 740.914286 0.75 2.800000 8 6.00\n", + "01-066 877.542857 0.75 2.172222 8 6.00\n", + "01-2104 880.800000 0.75 1.944444 8 6.00\n", + "20-022 487.242857 0.85 2.394444 7 5.95\n", + "19-066 542.828571 0.85 2.450000 7 5.95\n", + "22-362 413.871429 0.85 2.311111 7 5.95\n", + "09-219 1029.857143 0.65 2.261111 9 5.85\n", + "11-2044 1083.471429 0.65 2.322222 9 5.85\n", + "04-005 1054.714286 0.65 2.522222 9 5.85\n", + "01-2127 1873.200000 0.65 2.244444 9 5.85\n", + "01-248 336.728571 0.95 2.183333 6 5.70\n", + "17-027 372.042857 0.95 2.572222 6 5.70\n", + "19-052 503.657143 0.80 2.416667 7 5.60\n", + "21-012 745.028571 0.70 2.477778 8 5.60\n", + "19-030 897.771429 0.70 2.600000 8 5.60\n", + "19-016 729.600000 0.70 2.450000 8 5.60\n", + "18-2005 853.071429 0.70 2.372222 8 5.60\n", + "23-859 296.142857 0.90 2.466667 6 5.40\n", + "01-233 320.314286 0.90 2.427778 6 5.40\n", + "19-004 1194.814286 0.60 2.216667 9 5.40" + ] + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#3. 유동인구수\n", + "지점별유동인구 = 유동인구[유동인구.조사구분 =='본조사'].pivot_table(index = '조사지점코드', values= '유동인구수', aggfunc = 'mean')\n", + "지점별유동인구.head()\n", + "#1~3에서 구한 항목을 하나의 데이터프레임으로 합치기\n", + "지점별통계 = pd.concat([지점별유동인구, 보행환경매트릭스.불만족비율, 지점별보행점수], axis =1, sort = True, join = 'inner')\n", + "지점별유동인구.유동인구수.min()\n", + "지점별유동인구.유동인구수.max()\n", + "경계점 =[]\n", + "for i in range(1,10):\n", + " 경계점.append(지점별통계.유동인구수.quantile(i/10))\n", + "경계점\n", + "# 등급 나누기\n", + "지점별통계['유동인구등급']=np.digitize(지점별통계.유동인구수,경계점)\n", + "지점별통계.head()\n", + "#개선시급도\n", + "지점별통계['개선시급도'] = 지점별통계.불만족비율*지점별통계.유동인구등급\n", + "지점별통계.head(10)\n", + "환경개선지점50 = 지점별통계.sort_values(by = '개선시급도', ascending = False).head(50)\n", + "환경개선지점50" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# 지도에 환경개선지점 시각화\n", + "np.unique(조사지점.조사구분)\n", + "# index 값이 유일해야 concat 가능\n", + "조사지점2 = 조사지점[조사지점.조사구분 =='본조사'].set_index('조사지점코드')[['조사지점명','X좌표','Y좌표']]\n", + "환경개선50 =pd.concat([환경개선지점50, 조사지점2], axis = 1, join = 'inner')" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (, line 1)", + "output_type": "error", + "traceback": [ + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m1\u001b[0m\n\u001b[1;33m 환경개선지점50['위경도'] = 환경개선지점50.apply(lamda 지점 : convert_locatin(지점.X좌표, 지점.Y좌표), axis=1)\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "환경개선지점50['위경도'] = 환경개선지점50.apply(lamda 지점 : convert_locatin(지점.X좌표, 지점.Y좌표), axis=1)\n", + "# X좌표, Y좌표를 위도와 경도로 변환하는 함수 선언\n", + "def convert(x,y):\n", + " inProj = Proj(init = 'epsg:5181')\n", + " outProj = Proj(init = 'epsg:4326')\n", + " x2,y2 = transform(inProj, outProj, x, y)\n", + " return [y2, x2]\n", + "map2 = foluim.Map(location = [37.56535,126.977], zoom_start = 15)\n", + "for row in 환경개선지점50.interrows():\n", + " folium.Marker(row[1]['위경도'], popup =row[1]['조사지점명'])add_to(map2)" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [], + "source": [ + "def generate_msg(x):\n", + " string = '조사지점명: {0.조사지점명}\\n개선시급도:{0.개선시급도:.2f}'.format()\n", + " return string" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'map2' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmap2\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'map2' is not defined" + ] + } + ], + "source": [ + "map2" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [], + "source": [ + "#ClusterMarker 실습\n", + "map3 = folium.Map(location = [37.56535,126.977], zoom_start = 15)\n", + "from folium.plugins import MarkerCluster\n", + "mc = MarkerCluster().add_to(map3)" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (, line 3)", + "output_type": "error", + "traceback": [ + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m3\u001b[0m\n\u001b[1;33m folium.Marker(row[1]['위경도'], popup =row[1]['조사지점명'])add_to(mc)\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "# 각각의 마커를 클러스터 마커에 추가\n", + "for row in 환경개선지점50.interrows():\n", + " folium.Marker(row[1]['위경도'], popup =row[1]['조사지점명'])add_to(mc)" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'map3' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mmap3\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'map3' is not defined" + ] + } + ], + "source": [ + "map3" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "def 연령대(나이):\n", + " if 나이 == '65세이상':\n", + " return 3\n", + " else : \n", + " return 0\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "def 방문횟수(횟수):\n", + " if 횟수 =='매일':\n", + " return 6\n", + " elif 횟수 == '주3~5회':\n", + " return 5\n", + " elif 횟수 == '주1~2회':\n", + " return 4\n", + " elif 횟수 == '월1~2회':\n", + " return 3\n", + " elif 횟수 == '6개월1~3회':\n", + " return 2\n", + " elif 횟수 =='오늘처음':\n", + " return 1\n", + " else:\n", + " return 0" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구_속성조사['보행점수'] = 유동인구_속성조사.보행환경.apply(보행환경)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구_속성조사['연령대점수'] = 유동인구_속성조사.연령대.apply(연령대)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "scrolled": true + }, + "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", + "
ID속성조사조사지점코드조사일자조사요일남여구분조사시간대조사시간대_텍스트연령대거주지통행주목적방문횟수동행자명교통수단보행환경직업명년도보행점수연령대점수방문횟수점수
0101-0031016여자NaN오전11시~오후2시50-54세종로구업무관련주1~2회NaNNaN약간만족전문/자유직2015404
1201-0031016남자NaN오전11시~오후2시60-64세성북구업무관련주3~5회NaNNaN매우만족일용/작업직2015505
2301-0031016남자NaN오전11시~오후2시65세이상종로구업무관련주3~5회NaNNaN약간만족일용/작업직2015435
3401-0031016남자NaN오전7시30분~11시45-49세서대문구출근매일NaNNaN약간만족사무/기술직2015406
4501-0031016남자NaN오전7시30분~11시35-39세도봉구출근매일NaNNaN매우만족사무/기술직2015506
\n", + "
" + ], + "text/plain": [ + " ID속성조사 조사지점코드 조사일자 조사요일 남여구분 조사시간대 조사시간대_텍스트 연령대 거주지 통행주목적 \\\n", + "0 1 01-003 1016 금 여자 NaN 오전11시~오후2시 50-54세 종로구 업무관련 \n", + "1 2 01-003 1016 금 남자 NaN 오전11시~오후2시 60-64세 성북구 업무관련 \n", + "2 3 01-003 1016 금 남자 NaN 오전11시~오후2시 65세이상 종로구 업무관련 \n", + "3 4 01-003 1016 금 남자 NaN 오전7시30분~11시 45-49세 서대문구 출근 \n", + "4 5 01-003 1016 금 남자 NaN 오전7시30분~11시 35-39세 도봉구 출근 \n", + "\n", + " 방문횟수 동행자명 교통수단 보행환경 직업명 년도 보행점수 연령대점수 방문횟수점수 \n", + "0 주1~2회 NaN NaN 약간만족 전문/자유직 2015 4 0 4 \n", + "1 주3~5회 NaN NaN 매우만족 일용/작업직 2015 5 0 5 \n", + "2 주3~5회 NaN NaN 약간만족 일용/작업직 2015 4 3 5 \n", + "3 매일 NaN NaN 약간만족 사무/기술직 2015 4 0 6 \n", + "4 매일 NaN NaN 매우만족 사무/기술직 2015 5 0 6 " + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "유동인구_속성조사['방문횟수점수'] = 유동인구_속성조사.방문횟수.apply(방문횟수)\n", + "유동인구_속성조사.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "scrolled": true + }, + "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", + "
보행점수연령대점수방문횟수점수
0404
1505
2435
3406
4506
\n", + "
" + ], + "text/plain": [ + " 보행점수 연령대점수 방문횟수점수\n", + "0 4 0 4\n", + "1 5 0 5\n", + "2 4 3 5\n", + "3 4 0 6\n", + "4 5 0 6" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 67, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ID속성조사조사지점코드조사일자조사요일남여구분조사시간대조사시간대_텍스트연령대거주지통행주목적방문횟수동행자명교통수단보행환경직업명년도보행점수연령대점수방문횟수점수
0101-0031016여자NaN오전11시~오후2시50-54세종로구업무관련주1~2회NaNNaN약간만족전문/자유직2015404
1201-0031016남자NaN오전11시~오후2시60-64세성북구업무관련주3~5회NaNNaN매우만족일용/작업직2015505
2301-0031016남자NaN오전11시~오후2시65세이상종로구업무관련주3~5회NaNNaN약간만족일용/작업직2015435
3401-0031016남자NaN오전7시30분~11시45-49세서대문구출근매일NaNNaN약간만족사무/기술직2015406
4501-0031016남자NaN오전7시30분~11시35-39세도봉구출근매일NaNNaN매우만족사무/기술직2015506
\n", + "
" + ], + "text/plain": [ + " ID속성조사 조사지점코드 조사일자 조사요일 남여구분 조사시간대 조사시간대_텍스트 연령대 거주지 통행주목적 \\\n", + "0 1 01-003 1016 금 여자 NaN 오전11시~오후2시 50-54세 종로구 업무관련 \n", + "1 2 01-003 1016 금 남자 NaN 오전11시~오후2시 60-64세 성북구 업무관련 \n", + "2 3 01-003 1016 금 남자 NaN 오전11시~오후2시 65세이상 종로구 업무관련 \n", + "3 4 01-003 1016 금 남자 NaN 오전7시30분~11시 45-49세 서대문구 출근 \n", + "4 5 01-003 1016 금 남자 NaN 오전7시30분~11시 35-39세 도봉구 출근 \n", + "\n", + " 방문횟수 동행자명 교통수단 보행환경 직업명 년도 보행점수 연령대점수 방문횟수점수 \n", + "0 주1~2회 NaN NaN 약간만족 전문/자유직 2015 4 0 4 \n", + "1 주3~5회 NaN NaN 매우만족 일용/작업직 2015 5 0 5 \n", + "2 주3~5회 NaN NaN 약간만족 일용/작업직 2015 4 3 5 \n", + "3 매일 NaN NaN 약간만족 사무/기술직 2015 4 0 6 \n", + "4 매일 NaN NaN 매우만족 사무/기술직 2015 5 0 6 " + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "유동인구_속성조사.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ID속성조사조사지점코드조사일자조사요일남여구분조사시간대조사시간대_텍스트연령대거주지통행주목적방문횟수동행자명교통수단보행환경직업명년도보행점수연령대점수방문횟수점수지점별보행점수
0101-0031016여자NaN오전11시~오후2시50-54세종로구업무관련주1~2회NaNNaN약간만족전문/자유직20152.222222042.666667
1201-0031016남자NaN오전11시~오후2시60-64세성북구업무관련주3~5회NaNNaN매우만족일용/작업직20152.777778053.333333
2301-0031016남자NaN오전11시~오후2시65세이상종로구업무관련주3~5회NaNNaN약간만족일용/작업직20154.000000354.000000
3401-0031016남자NaN오전7시30분~11시45-49세서대문구출근매일NaNNaN약간만족사무/기술직20153.111111063.333333
4501-0031016남자NaN오전7시30분~11시35-39세도봉구출근매일NaNNaN매우만족사무/기술직20153.222222063.666667
\n", + "
" + ], + "text/plain": [ + " ID속성조사 조사지점코드 조사일자 조사요일 남여구분 조사시간대 조사시간대_텍스트 연령대 거주지 통행주목적 \\\n", + "0 1 01-003 1016 금 여자 NaN 오전11시~오후2시 50-54세 종로구 업무관련 \n", + "1 2 01-003 1016 금 남자 NaN 오전11시~오후2시 60-64세 성북구 업무관련 \n", + "2 3 01-003 1016 금 남자 NaN 오전11시~오후2시 65세이상 종로구 업무관련 \n", + "3 4 01-003 1016 금 남자 NaN 오전7시30분~11시 45-49세 서대문구 출근 \n", + "4 5 01-003 1016 금 남자 NaN 오전7시30분~11시 35-39세 도봉구 출근 \n", + "\n", + " 방문횟수 동행자명 교통수단 보행환경 직업명 년도 보행점수 연령대점수 방문횟수점수 지점별보행점수 \n", + "0 주1~2회 NaN NaN 약간만족 전문/자유직 2015 2.222222 0 4 2.666667 \n", + "1 주3~5회 NaN NaN 매우만족 일용/작업직 2015 2.777778 0 5 3.333333 \n", + "2 주3~5회 NaN NaN 약간만족 일용/작업직 2015 4.000000 3 5 4.000000 \n", + "3 매일 NaN NaN 약간만족 사무/기술직 2015 3.111111 0 6 3.333333 \n", + "4 매일 NaN NaN 매우만족 사무/기술직 2015 3.222222 0 6 3.666667 " + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "보행점수 =유동인구_속성조사.iloc[:,16:19].mean(axis=1)\n", + "유동인구_속성조사['보행점수']=보행점수\n", + "유동인구_속성조사.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "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", + "
유동인구수
조사지점코드
01-0032895.0
01-00413872.0
01-00510509.0
01-0085316.0
01-0095637.0
\n", + "
" + ], + "text/plain": [ + " 유동인구수\n", + "조사지점코드 \n", + "01-003 2895.0\n", + "01-004 13872.0\n", + "01-005 10509.0\n", + "01-008 5316.0\n", + "01-009 5637.0" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "지점별유동인구 = 유동인구.pivot_table(index = '조사지점코드', values = '유동인구수', aggfunc = 'sum')\n", + "지점별유동인구.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 48, + "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", + "
ID유동인구조사조사지점코드조사구분조사요일시간대유동인구수년도
0130-001지하철07시-08시129.02015
\n", + "
" + ], + "text/plain": [ + " ID유동인구조사 조사지점코드 조사구분 조사요일 시간대 유동인구수 년도\n", + "0 1 30-001 지하철 금 07시-08시 129.0 2015" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "유동인구.head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
유동인구수0
01-0032895.0NaN
01-00413872.0NaN
01-00510509.0NaN
01-0085316.0NaN
01-0095637.0NaN
01-01662268.0NaN
01-01969288.0NaN
01-020166989.0NaN
01-02133354.0NaN
01-02849569.0NaN
01-029137385.0NaN
01-035271998.0NaN
01-03787855.0NaN
01-03871025.0NaN
01-039280410.0NaN
01-04357864.0NaN
01-04732868.0NaN
01-05041502.0NaN
01-05223067.0NaN
01-054162441.0NaN
01-05532307.0NaN
01-05768061.0NaN
01-05873605.0NaN
01-05973200.0NaN
01-06028650.0NaN
01-06325677.0NaN
01-06451126.0NaN
01-06661428.0NaN
01-07518204.0NaN
01-07794959.0NaN
.........
19970NaN2.111111
19971NaN0.777778
19972NaN0.888889
19973NaN1.777778
19974NaN1.444444
19975NaN1.888889
19976NaN1.888889
19977NaN1.777778
19978NaN2.666667
19979NaN2.666667
19980NaN3.000000
19981NaN3.000000
19982NaN2.111111
19983NaN2.888889
19984NaN2.555556
19985NaN1.666667
19986NaN3.000000
19987NaN2.555556
19988NaN3.000000
19989NaN3.000000
19990NaN2.555556
19991NaN2.555556
19992NaN2.555556
19993NaN1.888889
19994NaN1.888889
19995NaN0.777778
19996NaN1.222222
19997NaN1.222222
19998NaN2.000000
19999NaN1.444444
\n", + "

21300 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " 유동인구수 0\n", + "01-003 2895.0 NaN\n", + "01-004 13872.0 NaN\n", + "01-005 10509.0 NaN\n", + "01-008 5316.0 NaN\n", + "01-009 5637.0 NaN\n", + "01-016 62268.0 NaN\n", + "01-019 69288.0 NaN\n", + "01-020 166989.0 NaN\n", + "01-021 33354.0 NaN\n", + "01-028 49569.0 NaN\n", + "01-029 137385.0 NaN\n", + "01-035 271998.0 NaN\n", + "01-037 87855.0 NaN\n", + "01-038 71025.0 NaN\n", + "01-039 280410.0 NaN\n", + "01-043 57864.0 NaN\n", + "01-047 32868.0 NaN\n", + "01-050 41502.0 NaN\n", + "01-052 23067.0 NaN\n", + "01-054 162441.0 NaN\n", + "01-055 32307.0 NaN\n", + "01-057 68061.0 NaN\n", + "01-058 73605.0 NaN\n", + "01-059 73200.0 NaN\n", + "01-060 28650.0 NaN\n", + "01-063 25677.0 NaN\n", + "01-064 51126.0 NaN\n", + "01-066 61428.0 NaN\n", + "01-075 18204.0 NaN\n", + "01-077 94959.0 NaN\n", + "... ... ...\n", + "19970 NaN 2.111111\n", + "19971 NaN 0.777778\n", + "19972 NaN 0.888889\n", + "19973 NaN 1.777778\n", + "19974 NaN 1.444444\n", + "19975 NaN 1.888889\n", + "19976 NaN 1.888889\n", + "19977 NaN 1.777778\n", + "19978 NaN 2.666667\n", + "19979 NaN 2.666667\n", + "19980 NaN 3.000000\n", + "19981 NaN 3.000000\n", + "19982 NaN 2.111111\n", + "19983 NaN 2.888889\n", + "19984 NaN 2.555556\n", + "19985 NaN 1.666667\n", + "19986 NaN 3.000000\n", + "19987 NaN 2.555556\n", + "19988 NaN 3.000000\n", + "19989 NaN 3.000000\n", + "19990 NaN 2.555556\n", + "19991 NaN 2.555556\n", + "19992 NaN 2.555556\n", + "19993 NaN 1.888889\n", + "19994 NaN 1.888889\n", + "19995 NaN 0.777778\n", + "19996 NaN 1.222222\n", + "19997 NaN 1.222222\n", + "19998 NaN 2.000000\n", + "19999 NaN 1.444444\n", + "\n", + "[21300 rows x 2 columns]" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "지점별 = pd.concat([지점별유동인구, 지점별보행점수], axis = 1)\n", + "지점별" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "지점별 = 지점별.join(측정위치.set_index('조사지점코드')['조사지점명'])" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
유동인구수0조사지점명
17024NaN0.666667NaN
1575NaN0.666667NaN
3225NaN0.666667NaN
19744NaN0.666667NaN
1529NaN0.666667NaN
1515NaN0.666667NaN
1502NaN0.666667NaN
15783NaN0.666667NaN
2050NaN0.666667NaN
1475NaN0.666667NaN
12485NaN0.666667NaN
17486NaN0.666667NaN
5520NaN0.666667NaN
12650NaN0.666667NaN
13355NaN0.666667NaN
12369NaN0.666667NaN
738NaN0.666667NaN
12365NaN0.666667NaN
12360NaN0.666667NaN
10132NaN0.666667NaN
1409NaN0.666667NaN
19831NaN0.666667NaN
13394NaN0.666667NaN
3122NaN0.666667NaN
13458NaN0.666667NaN
736NaN0.666667NaN
10199NaN0.666667NaN
3138NaN0.666667NaN
19047NaN0.666667NaN
14365NaN0.666667NaN
............
37-01113501.5NaN종로3가역 11번출구앞
37-01213045.5NaN종로3가역 12번출구앞
37-0133670.5NaN종로3가역 13번출구앞
37-01415352.5NaN종로3가역 14번출구
37-01526946.0NaN종로3가역 15번출구앞
37-0165877.0NaN종로3가역 2-1번출구앞
40-00126871.0NaN이화마트
40-00242636.0NaN에뛰드 하우스
40-00330255.0NaN빌리프 삼청동 플래그샾
40-0048046.0NaN로마네 꽁띠
40-00516860.0NaN스타벅스 삼청동점 앞
40-00621996.0NaN어린이 도서관 꿈과 쉼
40-00714265.0NaN베이커리&다이닝
40-00851087.0NaN57th caf?
40-00920139.0NaN헌법재판소 담벼락
40-01023262.0NaN도장열쇠 (대영사)
40-0118664.0NaN신영빌딩
40-0127896.0NaN크라제버거 가회동점
40-01329697.0NaN한옥앞
40-0142175.0NaN미디어피아
40-0152787.0NaN경남빌라옆
40-0161440.0NaNMOON
40-0179156.0NaN가회민화 박물관
40-0182667.0NaN지형공방홍벽헌
40-0195667.0NaN비원비 버리하우스
40-02021615.0NaN원서공원 입구
40-02110809.0NaN커피 Biwon
40-0224227.0NaN용수산 비원점
40-02340074.0NaN한정식 장원
40-02418801.0NaN믿음 미용실
\n", + "

21500 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " 유동인구수 0 조사지점명\n", + "17024 NaN 0.666667 NaN\n", + "1575 NaN 0.666667 NaN\n", + "3225 NaN 0.666667 NaN\n", + "19744 NaN 0.666667 NaN\n", + "1529 NaN 0.666667 NaN\n", + "1515 NaN 0.666667 NaN\n", + "1502 NaN 0.666667 NaN\n", + "15783 NaN 0.666667 NaN\n", + "2050 NaN 0.666667 NaN\n", + "1475 NaN 0.666667 NaN\n", + "12485 NaN 0.666667 NaN\n", + "17486 NaN 0.666667 NaN\n", + "5520 NaN 0.666667 NaN\n", + "12650 NaN 0.666667 NaN\n", + "13355 NaN 0.666667 NaN\n", + "12369 NaN 0.666667 NaN\n", + "738 NaN 0.666667 NaN\n", + "12365 NaN 0.666667 NaN\n", + "12360 NaN 0.666667 NaN\n", + "10132 NaN 0.666667 NaN\n", + "1409 NaN 0.666667 NaN\n", + "19831 NaN 0.666667 NaN\n", + "13394 NaN 0.666667 NaN\n", + "3122 NaN 0.666667 NaN\n", + "13458 NaN 0.666667 NaN\n", + "736 NaN 0.666667 NaN\n", + "10199 NaN 0.666667 NaN\n", + "3138 NaN 0.666667 NaN\n", + "19047 NaN 0.666667 NaN\n", + "14365 NaN 0.666667 NaN\n", + "... ... ... ...\n", + "37-011 13501.5 NaN 종로3가역 11번출구앞\n", + "37-012 13045.5 NaN 종로3가역 12번출구앞\n", + "37-013 3670.5 NaN 종로3가역 13번출구앞\n", + "37-014 15352.5 NaN 종로3가역 14번출구\n", + "37-015 26946.0 NaN 종로3가역 15번출구앞\n", + "37-016 5877.0 NaN 종로3가역 2-1번출구앞\n", + "40-001 26871.0 NaN 이화마트\n", + "40-002 42636.0 NaN 에뛰드 하우스\n", + "40-003 30255.0 NaN 빌리프 삼청동 플래그샾\n", + "40-004 8046.0 NaN 로마네 꽁띠\n", + "40-005 16860.0 NaN 스타벅스 삼청동점 앞\n", + "40-006 21996.0 NaN 어린이 도서관 꿈과 쉼\n", + "40-007 14265.0 NaN 베이커리&다이닝\n", + "40-008 51087.0 NaN 57th caf?\n", + "40-009 20139.0 NaN 헌법재판소 담벼락\n", + "40-010 23262.0 NaN 도장열쇠 (대영사)\n", + "40-011 8664.0 NaN 신영빌딩\n", + "40-012 7896.0 NaN 크라제버거 가회동점\n", + "40-013 29697.0 NaN 한옥앞\n", + "40-014 2175.0 NaN 미디어피아\n", + "40-015 2787.0 NaN 경남빌라옆\n", + "40-016 1440.0 NaN MOON\n", + "40-017 9156.0 NaN 가회민화 박물관\n", + "40-018 2667.0 NaN 지형공방홍벽헌\n", + "40-019 5667.0 NaN 비원비 버리하우스\n", + "40-020 21615.0 NaN 원서공원 입구\n", + "40-021 10809.0 NaN 커피 Biwon\n", + "40-022 4227.0 NaN 용수산 비원점\n", + "40-023 40074.0 NaN 한정식 장원\n", + "40-024 18801.0 NaN 믿음 미용실\n", + "\n", + "[21500 rows x 3 columns]" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "지점별.sort_values(by = 0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git "a/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 5. openAPI\354\202\254\354\232\251, \354\247\200\353\217\204\354\213\234\352\260\201\355\231\224 \353\260\217 \354\204\234\354\232\270\354\213\234 \354\234\240\353\217\231\354\235\270\352\265\254 \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 \353\260\217 \354\213\234\352\260\201\355\231\224.\354\231\204\354\204\261\353\263\270.ipynb" "b/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 5. openAPI\354\202\254\354\232\251, \354\247\200\353\217\204\354\213\234\352\260\201\355\231\224 \353\260\217 \354\204\234\354\232\270\354\213\234 \354\234\240\353\217\231\354\235\270\352\265\254 \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 \353\260\217 \354\213\234\352\260\201\355\231\224.\354\231\204\354\204\261\353\263\270.ipynb" new file mode 100644 index 0000000..d5ee56a --- /dev/null +++ "b/\353\260\260\355\217\254\354\232\251_\354\213\244\354\212\265 5. openAPI\354\202\254\354\232\251, \354\247\200\353\217\204\354\213\234\352\260\201\355\231\224 \353\260\217 \354\204\234\354\232\270\354\213\234 \354\234\240\353\217\231\354\235\270\352\265\254 \353\215\260\354\235\264\355\204\260 \353\266\204\354\204\235 \353\260\217 \354\213\234\352\260\201\355\231\224.\354\231\204\354\204\261\353\263\270.ipynb" @@ -0,0 +1,912 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from pandas import Series, DataFrame\n", + "import numpy as np\n", + "import matplotlib\n", + "matplotlib.rcParams['font.family'].insert(0, 'Malgun Gothic') \n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1. openAPI 활용 및 json 데이터 읽기\n", + "## API : Application Programming Interface\n", + "## 서울시 데이터 포털에서 공공 API 활용하기\n", + "### 서울시 동별 인구통계\n", + "### http://data.seoul.go.kr/dataList/datasetView.do?infId=10043&srvType=S&serviceKind=2¤tPageNo=1" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import requests" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "http://openapi.seoul.go.kr:8088/sample/json/octastatapi10043/1/5\n" + ] + } + ], + "source": [ + "url = 'http://openapi.seoul.go.kr:8088'\n", + "api_key = 'sample' #개인인증키 발급받은 후, 입력\n", + "return_format = 'json'\n", + "service_id = 'octastatapi10043'\n", + "start_idx = 1\n", + "end_idx = 5\n", + "\n", + "request_url = '/'.join([url, api_key, return_format, service_id, str(start_idx), str(end_idx)])\n", + "print(request_url)\n", + "# 'http://openapi.seoul.go.kr:8088/sample/json/octastatapi10043/1/500/' \n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "response = requests.get(request_url)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'{\"octastatapi10043\":{\"list_total_count\":450,\"RESULT\":{\"CODE\":\"INFO-000\",\"MESSAGE\":\"정상 처리되었습니다\"},\"row\":[{\"GIGAN\":\"2016\",\"JACHIGU\":\"합계\",\"DONG\":\"합계\",\"SEDAE\":\"4189839\",\"GYE_1\":\"10204057\",\"NAMJA_1\":\"5007379\",\"YEOJA_1\":\"5196678\",\"GYE_2\":\"9930616\",\"NAMJA_2\":\"4876789\",\"YEOJA_2\":\"5053827\",\"GYE_3\":\"273441\",\"NAMJA_3\":\"130590\",\"YEOJA_3\":\"142851\",\"SEDAEDANGINGU\":\"2.37\",\"N_65SEISANGGORYEONGJA\":\"1300877\"},{\"GIGAN\":\"2016\",\"JACHIGU\":\"종로구\",\"DONG\":\"소계\",\"SEDAE\":\"72118\",\"GYE_1\":\"161922\",\"NAMJA_1\":\"79322\",\"YEOJA_1\":\"82600\",\"GYE_2\":\"152737\",\"NAMJA_2\":\"75201\",\"YEOJA_2\":\"77536\",\"GYE_3\":\"9185\",\"NAMJA_3\":\"4121\",\"YEOJA_3\":\"5064\",\"SEDAEDANGINGU\":\"2.12\",\"N_65SEISANGGORYEONGJA\":\"25091\"},{\"GIGAN\":\"2016\",\"JACHIGU\":\"종로구\",\"DONG\":\"사직동\",\"SEDAE\":\"4399\",\"GYE_1\":\"10013\",\"NAMJA_1\":\"4605\",\"YEOJA_1\":\"5408\",\"GYE_2\":\"9695\",\"NAMJA_2\":\"4429\",\"YEOJA_2\":\"5266\",\"GYE_3\":\"318\",\"NAMJA_3\":\"176\",\"YEOJA_3\":\"142\",\"SEDAEDANGINGU\":\"2.20\",\"N_65SEISANGGORYEONGJA\":\"1707\"},{\"GIGAN\":\"2016\",\"JACHIGU\":\"종로구\",\"DONG\":\"삼청동\",\"SEDAE\":\"1403\",\"GYE_1\":\"3118\",\"NAMJA_1\":\"1491\",\"YEOJA_1\":\"1627\",\"GYE_2\":\"2903\",\"NAMJA_2\":\"1377\",\"YEOJA_2\":\"1526\",\"GYE_3\":\"215\",\"NAMJA_3\":\"114\",\"YEOJA_3\":\"101\",\"SEDAEDANGINGU\":\"2.07\",\"N_65SEISANGGORYEONGJA\":\"624\"},{\"GIGAN\":\"2016\",\"JACHIGU\":\"종로구\",\"DONG\":\"부암동\",\"SEDAE\":\"4371\",\"GYE_1\":\"11044\",\"NAMJA_1\":\"5349\",\"YEOJA_1\":\"5695\",\"GYE_2\":\"10616\",\"NAMJA_2\":\"5160\",\"YEOJA_2\":\"5456\",\"GYE_3\":\"428\",\"NAMJA_3\":\"189\",\"YEOJA_3\":\"239\",\"SEDAEDANGINGU\":\"2.43\",\"N_65SEISANGGORYEONGJA\":\"1723\"}]}}'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "response.text\n", + "#JSON 형태" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### json (Java Script Object Notation)\n", + "\n", + "### 1) json 설명: https://ko.wikipedia.org/wiki/JSON\n", + "### 2) json online editor: https://jsoneditoronline.org/" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "sample = ' { \\\n", + " \"이름\": \"김지아\", \\\n", + " \"나이\": 25, \\\n", + " \"성별\": \"여\", \\\n", + " \"주소\": \"서울특별시 양천구 목동\",\\\n", + " \"특기\": [\"농구\", \"도술\"],\\\n", + " \"가족관계\": {\"#\": 2, \"아버지\": \"홍판서\", \"어머니\": \"춘섬\"},\\\n", + " \"회사\": \"경기 수원시 팔달구 우만동\"\\\n", + " }'" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import json" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "jsonsample = json.loads(sample)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'홍판서'" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# json의 특정 항목에 접근\n", + "jsonsample['가족관계']['아버지']" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "#API 결과를 json 포맷으로 변환\n", + "jsondata = response.json()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DONGGIGANGYE_1GYE_2GYE_3JACHIGUNAMJA_1NAMJA_2NAMJA_3N_65SEISANGGORYEONGJASEDAESEDAEDANGINGUYEOJA_1YEOJA_2YEOJA_3
0합계2016102040579930616273441합계50073794876789130590130087741898392.3751966785053827142851
1소계20161619221527379185종로구7932275201412125091721182.1282600775365064
2사직동2016100139695318종로구46054429176170743992.2054085266142
3삼청동201631182903215종로구1491137711462414032.0716271526101
4부암동20161104410616428종로구53495160189172343712.4356955456239
\n", + "
" + ], + "text/plain": [ + " DONG GIGAN GYE_1 GYE_2 GYE_3 JACHIGU NAMJA_1 NAMJA_2 NAMJA_3 \\\n", + "0 합계 2016 10204057 9930616 273441 합계 5007379 4876789 130590 \n", + "1 소계 2016 161922 152737 9185 종로구 79322 75201 4121 \n", + "2 사직동 2016 10013 9695 318 종로구 4605 4429 176 \n", + "3 삼청동 2016 3118 2903 215 종로구 1491 1377 114 \n", + "4 부암동 2016 11044 10616 428 종로구 5349 5160 189 \n", + "\n", + " N_65SEISANGGORYEONGJA SEDAE SEDAEDANGINGU YEOJA_1 YEOJA_2 YEOJA_3 \n", + "0 1300877 4189839 2.37 5196678 5053827 142851 \n", + "1 25091 72118 2.12 82600 77536 5064 \n", + "2 1707 4399 2.20 5408 5266 142 \n", + "3 624 1403 2.07 1627 1526 101 \n", + "4 1723 4371 2.43 5695 5456 239 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "jsondata = jsondata['octastatapi10043']['row']\n", + "동별인구통계 = DataFrame(jsondata)\n", + "동별인구통계" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2. folium 을 활용한 지도 시각화" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'folium'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m#folium 라이브러리 설치\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;31m# anaconda prompt에서 'pip install folium' 실행\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mimport\u001b[0m \u001b[0mfolium\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'folium'" + ] + } + ], + "source": [ + "#folium 라이브러리 설치\n", + "# anaconda prompt에서 'pip install folium' 실행\n", + "import folium" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "map1 = folium.Map(location = [37.566535, 126.97796919999996], zoom_start = 15)\n", + "map1\n", + "# 서울시청을 지도의 중심으로, 지도를 그려줌. \n", + "# zoom_start는 지도를 그릴 때 얼마나 zoom 해서 보여줄 지를 결정. 값이 클수록, zoom in" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Marker 추가하기 (지도에 지점 추가하기)\n", + "folium.Marker([37, 126], popup = '테스트지점').add_to(map1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "map1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "측정위치 = pd.read_excel('data/서울시유동인구/4_유동인구_조사지점정보_2015.xlsx', \n", + " skiprows = [0,1,3])\n", + "측정위치.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "측정위치50 = 측정위치[['조사지점명', 'X좌표', 'Y좌표']].iloc[:50]\n", + "측정위치50\n", + "# 50개의 측정 위치에 대해 필요한 정보만 저장" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# 위치 정보 변환을 위한 라이브러리 설치\n", + "# pip install pyproj\n", + "#conda install pyproj\n", + "from pyproj import Proj, transform" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# X좌표, Y좌표를 위도와 경도로 변환하는 함수 선언\n", + "def convert(x,y):\n", + " inProj = Proj(init = 'epsg:5181')\n", + " outProj = Proj(init = 'epsg:4326')\n", + " x2,y2 = transform(inProj, outProj, x, y)\n", + " return [y2, x2]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#측정위치50에 위도와 경도 정보를 추가\n", + "측정위치50['위경도'] = 측정위치50.apply(lambda 지점: convert(지점['X좌표'], 지점['Y좌표']), axis = 1)\n", + "측정위치50.head(3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#측정위치 50개를 지도에 표시\n", + "for row in 측정위치50.iterrows():\n", + " folium.Marker(row[1]['위경도'], popup = row[1]['조사지점명']).add_to(map1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "map1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3. 서울시 유동인구 분석" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 데이터 적재" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구 = pd.read_excel('data/서울시유동인구/0_유동인구_유동인구기본_2015.xlsx', \n", + " skiprows = [0,1,3])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = pd.read_excel('data/서울시유동인구/4_유동인구_조사지점정보_2015.xlsx', \n", + " sheetname = None, skiprows = [0,1,3])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "조사지점 = data.get('유동인구_조사지점정보_2015')\n", + "구코드 = data.get('GU_CD')\n", + "동코드 = data.get('DONG_CD')\n", + "집계구코드 = data.get('SM_GU_CD')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "유동인구.head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "집계구코드.head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구 = pd.merge(유동인구, 조사지점[['조사지점코드', '조사지점명', '구코드', '동코드', 'X좌표', 'Y좌표', '집계구코드']])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구 = pd.merge(유동인구, 구코드[['구코드', '구명']])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구 = pd.merge(유동인구, 동코드[['동코드', '동명']])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 미션 1. 유동인구를 요일과 시간대 별로 분석하여, 유동인구가 가장 많은 상위 10개의 요일과 시간대를 출력. (e.g., 금요일 18시-19시가 유동인구가 가장 많음.)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구.pivot_table(index = ['조사요일', '시간대'], values = '유동인구수', aggfunc = 'sum') \\\n", + " .sort_values(by = '유동인구수', ascending = False).head(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 미션 2\t. 서울시 각 구별 전체 유동인구 분석" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "유동인구.head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "구별유동인구 = 유동인구.pivot_table(index = '구명', values = '유동인구수', aggfunc = 'sum')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "구별유동인구.plot(kind = 'barh')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 미션 3. 서울시 각 구별로 출퇴근 시간의 유동인구 분석 (출퇴근 시간은 6시-10시, 18시-21시로 가정함)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구.head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "구별시간대별유동인구 = 유동인구.pivot_table(index = ['구명', '시간대'], values = '유동인구수', aggfunc = 'sum')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "출퇴근시간대 = list(np.unique(유동인구['시간대'])[0:3]) + list(np.unique(유동인구['시간대'])[-3:])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "출퇴근시간대구별유동인구 = 구별시간대별유동인구[구별시간대별유동인구.index.get_level_values('시간대').isin(출퇴근시간대)]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "출퇴근시간대구별유동인구 = 출퇴근시간대구별유동인구.unstack()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "출퇴근시간대구별유동인구" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "출퇴근시간대구별유동인구.plot(kind = 'barh', stacked = True, figsize = (10,10))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 미션 4. 평일 유동인구와 주말 유동인구를 분석하여, 그 차이가 가장 많이 나는 상위 5개 구 정보를 출력\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "요일별구별유동인구 = 유동인구.pivot_table(index = '구명', columns = '조사요일', values = '유동인구수', aggfunc = 'sum')\n", + "요일별구별유동인구" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "요일별구별유동인구['주중'] = (요일별구별유동인구['월'] + 요일별구별유동인구['화'] + \n", + " 요일별구별유동인구['수']+요일별구별유동인구['목']+요일별구별유동인구['금'])/5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "요일별구별유동인구['주말'] = 요일별구별유동인구['토']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "요일별구별유동인구['주중주말편차'] = (요일별구별유동인구['주중']-요일별구별유동인구['주말']).abs()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "요일별구별유동인구 = 요일별구별유동인구[['주중','주말', '주중주말편차']]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "요일별구별유동인구.sort_values(by = '주중주말편차', ascending= False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "요일별구별유동인구.plot(kind = 'barh', figsize = (10,10))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 미션 5. 유동인구의 수와 보행환경 정보를 분석하여, 보행 환경 개선이 시급한 곳 10군데를 선정. (보행환경 정보는 유동인구상세로그_2015.xlsx의 보행환경 컬럼 참고. 매우불만족(1), 약간불만족(2), 보통(3), 약간만족(4), 매우만족(5) )\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구_속성조사 = pd.read_excel('data/서울시유동인구/2_유동인구_속성조사_2015.xlsx', \n", + " skiprows = [0,1,3])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def 보행환경(만족도):\n", + " if 만족도 == '매우만족':\n", + " return 5\n", + " elif 만족도 == '약간만족':\n", + " return 4\n", + " elif 만족도 == '보통':\n", + " return 3\n", + " elif 만족도 == '약간불만족':\n", + " return 2\n", + " elif 만족도 == '매우불만족':\n", + " return 1\n", + " else:\n", + " return 0" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구_속성조사['보행점수'] = 유동인구_속성조사.보행환경.apply(보행환경)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "지점별유동인구 = 유동인구.pivot_table(index = '조사지점코드', values = '유동인구수', aggfunc = 'sum')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "지점별보행점수 = 유동인구_속성조사.pivot_table(index = '조사지점코드', values = '보행점수', aggfunc = 'mean')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "유동인구.head(1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "지점별 = pd.concat([지점별유동인구, 지점별보행점수], axis = 1)\n", + "지점별" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "지점별 = 지점별.join(조사지점.set_index('조사지점코드')['조사지점명'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "지점별.sort_values(by = '보행점수')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}