#초기화
import pandas as pd
from pandas import Series, DataFrame
import numpy as np
%matplotlib inline
# 데이터를 읽을 파일 목록 만들기
경로목록 = [
'data/NC Dinos 2013.xlsx',
'data/NC Dinos 2014.xlsx',
'data/NC Dinos 2015.xlsx'
]
# 지정된 경로로부터 데이터를 읽어서 DataFrame에 넣고 이를 리스트로 만든다.
# 이때 선수명을 색인으로 사용 한다.
frame_list = []
for 경로 in 경로목록:
frame = pd.read_excel(경로)
frame = frame.set_index('선수명')
frame_list.append(frame)
# 풀기 - 리스트의 항목을 차례로 각각의 변수에 대입
nc13, nc14, nc15 = frame_list
# DataFrame의 산술연산은 색인을 기반으로 된다.
# DataFrame의 산술연산이 되려면 모양(타입)이 일치해야 한다.
# 14년도와 15년도의 홈런 합계 (두 DataFrame은 색인이 일치하지 않기 때문에 NaN 이 발생 한다. )
nc14['홈런'] + nc15['홈런']
선수명 강구성 NaN 강민국 0.0 권희동 NaN 김성욱 NaN 김종호 NaN 김준완 0.0 김태군 NaN 김태우 NaN 김태진 NaN 나성범 58.0 노진혁 NaN 마낙길 NaN 모창민 22.0 박명환* NaN 박민우 4.0 박정준 NaN 손시헌 18.0 용덕한 NaN 이종욱 11.0 이창섭 NaN 이호준 47.0 조영훈 14.0 조평호 1.0 지석훈 17.0 최재원 2.0 테임즈 84.0 허준 NaN Name: 홈런, dtype: float64
# 연산결과가 NaN이 나오는 이유
# +연산시 중간단계의 데이터 모양
# nc14 nc15
#강구성 0 NaN --> NAN
#강민국 0 0 --> 0
#권희동 NaN 7 --> NaN
### 권희동은 우리가 원하는 결과가 아니다.
# 원칙 : 색인끼리 연산, 없는 색인은 자동으로 채워진다.(NaN), NaN과 연산은 무조건 NaN이다.
# NaN 처리를 위해서 add 함수를 사용 한다.
# add 함수 사용, 인자 사용 가능 --> + 연산을 수행, 옵션을 수행할수 없기 때문에 add 함수를 사용한다.
nc14['홈런'].add(nc15['홈런'], fill_value=0)
선수명 강구성 0.0 강민국 0.0 권희동 7.0 김성욱 1.0 김종호 4.0 김준완 0.0 김태군 6.0 김태우 0.0 김태진 0.0 나성범 58.0 노진혁 1.0 마낙길 0.0 모창민 22.0 박명환* 0.0 박민우 4.0 박정준 0.0 손시헌 18.0 용덕한 0.0 이종욱 11.0 이창섭 0.0 이호준 47.0 조영훈 14.0 조평호 1.0 지석훈 17.0 최재원 2.0 테임즈 84.0 허준 0.0 Name: 홈런, dtype: float64
# add 연산시 중간단계의 데이터 모양
# nc14 nc15
#강구성 0 0 --> 0
#강민국 0 0 --> 0
#권희동 0 7 --> 7
열선택 = ['안타', '홈런']
# 13년도와 14년도와 15년도의 안타와 홈런의 합계를 구한다.
안타홈런합계 = nc13[열선택].add(nc14[열선택], fill_value=0)
안타홈런합계 = 안타홈런합계[열선택].add(nc15[열선택], fill_value=0)
안타홈런합계
안타 | 홈런 | |
---|---|---|
선수명 | ||
강구성 | 1.0 | 0.0 |
강민국 | 0.0 | 0.0 |
강진성 | 1.0 | 0.0 |
권희동 | 63.0 | 7.0 |
김동건 | 2.0 | 1.0 |
김성욱 | 5.0 | 1.0 |
김종찬 | 1.0 | 0.0 |
김종호 | 254.0 | 4.0 |
김준완 | 12.0 | 0.0 |
김태군 | 107.0 | 6.0 |
김태우 | 1.0 | 0.0 |
김태진 | 0.0 | 0.0 |
나성범 | 439.0 | 72.0 |
노진혁 | 3.0 | 1.0 |
마낙길 | 9.0 | 0.0 |
모창민 | 281.0 | 34.0 |
박명환* | 0.0 | 0.0 |
박민우 | 293.0 | 4.0 |
박정준 | 49.0 | 4.0 |
손시헌 | 198.0 | 18.0 |
용덕한 | 12.0 | 0.0 |
이상호 | 31.0 | 0.0 |
이승호 | 0.0 | 0.0 |
이종욱 | 244.0 | 11.0 |
이창섭 | 0.0 | 0.0 |
이현곤 | 38.0 | 0.0 |
이호준 | 370.0 | 67.0 |
조영훈 | 171.0 | 20.0 |
조평호 | 29.0 | 3.0 |
지석훈 | 237.0 | 20.0 |
차화준 | 24.0 | 1.0 |
최재원 | 21.0 | 2.0 |
테임즈 | 332.0 | 84.0 |
허준 | 5.0 | 0.0 |
# 2차원의 DataFrame과 1차원의 Series의 연산
# 브로드캐스팅의 개념을 이용해 연산을 한다.
# frame에서 조정의 값을 이용해 연산.
frame = DataFrame([[10,90], [80,20]])
frame.index = ['가', '나']
frame.columns = list('AB')
frame
A | B | |
---|---|---|
가 | 10 | 90 |
나 | 80 | 20 |
# 사전을 이용해 시리즈 생성
조정 = Series({'A':5, 'B':3})
조정
A 5 B 3 dtype: int64
# A칼럼에서 5를 빼고, B에서 3을 뺀다. (교재 490 12-4 그림과 같이 동작.)
# pandas 기준으로 동작할때는 색인을 붙여 준다.
# pandas 에서는 직접 해주는 것은 없다.
frame + 조정
A | B | |
---|---|---|
가 | 15 | 93 |
나 | 85 | 23 |
# 브로드캐스팅은 기본적으로 0축(위에서 아래로) 방향으로 일어난다.
# Series는 DataFrame의 열과 색인을 맞춰 연산이 수행된다.
# --> 시리즈의 데이터는 행으로 배치되고 행 복제가 된다.
# Series를 색인에 맞추고 열 방향으로 복제가 일어나도록 하기.
조정2 = Series({'가':5, '나':3})
조정2
가 5 나 3 dtype: int64
frame - 조정2
# 방향이 맞지 않기 때문에 연산이 이상하게 수행 된다.
# A B - 가 나
#가 NaN NaN 가 NaN NaN
#나 NaN NaN 나 NaN NaN
A | B | 가 | 나 | |
---|---|---|---|---|
가 | NaN | NaN | NaN | NaN |
나 | NaN | NaN | NaN | NaN |
# sub 함수를 이용해 인자를 주고 원하는 방향의 연산이 되도록 한다.
# axis=0 : Series를 0축으로 데이터를 배치한다.
# 즉 데이터는 위에서 아래로 배치되고 칼럼 복제가 일어난다.
# --> 위에서 아래로 배치되고 왼쪽에서 오른쪽으로 데이터 복제한다.
# frame.sub(시리즈, axis=시리즈를배치할축방향값)
frame.sub(조정2, axis=0)
A | B | |
---|---|---|
가 | 5 | 85 |
나 | 77 | 17 |
열선택 = ['안타', '홈런']
nc15[열선택]
안타 | 홈런 | |
---|---|---|
선수명 | ||
테임즈 | 180 | 47 |
나성범 | 184 | 28 |
박민우 | 158 | 3 |
이호준 | 132 | 24 |
김종호 | 125 | 4 |
조영훈 | 35 | 8 |
손시헌 | 108 | 13 |
이종욱 | 118 | 5 |
모창민 | 62 | 6 |
지석훈 | 111 | 11 |
용덕한 | 12 | 0 |
최재원 | 21 | 2 |
박정준 | 8 | 0 |
김태군 | 107 | 6 |
조평호 | 8 | 1 |
이창섭 | 0 | 0 |
김준완 | 10 | 0 |
강구성 | 1 | 0 |
강민국 | 0 | 0 |
김태진 | 0 | 0 |
안타 = nc15["안타"] - nc15["홈런"]
#안타비율 = 안타 / nc15['안타']
#안타비율 = pd.DataFrame(안타비율.fillna(0))
#안타비율.columns = ['안타비율']
#홈런비율 = 1 - 안타비율
#홈런비율.columns = ["홈런비율"]
#홈런비율
#안타비율
# 실질 안타는 안타-홈런을 해야 한다.
안타 = nc15["안타"] - nc15["홈런"]
# 안타비율을 구하고 NaN은 0으로 변경
안타비율 = 안타 / nc15['안타']
안타비율 = pd.DataFrame(안타비율.fillna(0))
# 안타비율과 홈런비율 칼럼 추가
안타비율.columns = ["안타비율"]
홈런비율 = nc15["홈런"] / nc15['안타']
홈런비율.columns = ["홈런비율"]
#안타비율
#print(안타비율)
실안홈비율 = pd.merge(안타비율.reset_index(), 홈런비율.reset_index())
실안홈비율 = 실안홈비율.set_index(["선수명"])
실안홈비율
안타비율 | 0 | |
---|---|---|
선수명 | ||
테임즈 | 0.738889 | 0.261111 |
나성범 | 0.847826 | 0.152174 |
박민우 | 0.981013 | 0.018987 |
이호준 | 0.818182 | 0.181818 |
김종호 | 0.968000 | 0.032000 |
조영훈 | 0.771429 | 0.228571 |
손시헌 | 0.879630 | 0.120370 |
이종욱 | 0.957627 | 0.042373 |
모창민 | 0.903226 | 0.096774 |
지석훈 | 0.900901 | 0.099099 |
용덕한 | 1.000000 | 0.000000 |
최재원 | 0.904762 | 0.095238 |
박정준 | 1.000000 | 0.000000 |
김태군 | 0.943925 | 0.056075 |
조평호 | 0.875000 | 0.125000 |
이창섭 | 0.000000 | NaN |
김준완 | 1.000000 | 0.000000 |
강구성 | 1.000000 | 0.000000 |
강민국 | 0.000000 | NaN |
김태진 | 0.000000 | NaN |
#안타비율
홈런비율
선수명 테임즈 0.261111 나성범 0.152174 박민우 0.018987 이호준 0.181818 김종호 0.032000 조영훈 0.228571 손시헌 0.120370 이종욱 0.042373 모창민 0.096774 지석훈 0.099099 용덕한 0.000000 최재원 0.095238 박정준 0.000000 김태군 0.056075 조평호 0.125000 이창섭 NaN 김준완 0.000000 강구성 0.000000 강민국 NaN 김태진 NaN dtype: float64
안타.values
# 다른 방식의 풀이: DataFrame에서 제공하는 기술통계 함수사용.
안타홈런 = nc15[열선택]
# 기술통계 계산
## sum()을 사용하면 기본적으로 0축 방향으로 합을 구한다.
## 행단위로 합계를 구하려면 sum(1)을 사용 한다.
## cumsum: 누적 합
## sum : 합
## mean : 평균
## idxmin, idxmax: 색인의 최대 최소
## describe 한번에 여러 통계 결과를 만든다.
# 안타를 함계에 담는다.
합계 = 안타홈런['안타']
합계
선수명 테임즈 180 나성범 184 박민우 158 이호준 132 김종호 125 조영훈 35 손시헌 108 이종욱 118 모창민 62 지석훈 111 용덕한 12 최재원 21 박정준 8 김태군 107 조평호 8 이창섭 0 김준완 10 강구성 1 강민국 0 김태진 0 Name: 안타, dtype: int64
# 실제 안타를 구한다. : 홈런에서 안타를 뺀 값.
안타 = 안타홈런.loc[:,'안타'].sub(안타홈런.loc[:,'홈런'])
안타
선수명 테임즈 133 나성범 156 박민우 155 이호준 108 김종호 121 조영훈 27 손시헌 95 이종욱 113 모창민 56 지석훈 100 용덕한 12 최재원 19 박정준 8 김태군 101 조평호 7 이창섭 0 김준완 10 강구성 1 강민국 0 김태진 0 dtype: int64
# 안타홈런 데이터에 업데이트
안타홈런.loc[:, '안타'] = 안타.values
#합계 = 안타홈런['안타'] + 안타홈런['홈런']
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py:635: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self.obj[item_labels[indexer[info_axis]]] = value
# 데이터 확인
안타홈런
안타 | 홈런 | |
---|---|---|
선수명 | ||
테임즈 | 133 | 47 |
나성범 | 156 | 28 |
박민우 | 155 | 3 |
이호준 | 108 | 24 |
김종호 | 121 | 4 |
조영훈 | 27 | 8 |
손시헌 | 95 | 13 |
이종욱 | 113 | 5 |
모창민 | 56 | 6 |
지석훈 | 100 | 11 |
용덕한 | 12 | 0 |
최재원 | 19 | 2 |
박정준 | 8 | 0 |
김태군 | 101 | 6 |
조평호 | 7 | 1 |
이창섭 | 0 | 0 |
김준완 | 10 | 0 |
강구성 | 1 | 0 |
강민국 | 0 | 0 |
김태진 | 0 | 0 |
# 데이터 확인
합계
선수명 테임즈 133 나성범 156 박민우 155 이호준 108 김종호 121 조영훈 27 손시헌 95 이종욱 113 모창민 56 지석훈 100 용덕한 12 최재원 19 박정준 8 김태군 101 조평호 7 이창섭 0 김준완 10 강구성 1 강민국 0 김태진 0 Name: 안타, dtype: int64
# div 함수를 이용해서 비율 계산하고 NaN 값은 0으로 채운다.
안타홈런.div(합계, axis=0).fillna(0)
안타 | 홈런 | |
---|---|---|
선수명 | ||
테임즈 | 1.0 | 0.353383 |
나성범 | 1.0 | 0.179487 |
박민우 | 1.0 | 0.019355 |
이호준 | 1.0 | 0.222222 |
김종호 | 1.0 | 0.033058 |
조영훈 | 1.0 | 0.296296 |
손시헌 | 1.0 | 0.136842 |
이종욱 | 1.0 | 0.044248 |
모창민 | 1.0 | 0.107143 |
지석훈 | 1.0 | 0.110000 |
용덕한 | 1.0 | 0.000000 |
최재원 | 1.0 | 0.105263 |
박정준 | 1.0 | 0.000000 |
김태군 | 1.0 | 0.059406 |
조평호 | 1.0 | 0.142857 |
이창섭 | 0.0 | 0.000000 |
김준완 | 1.0 | 0.000000 |
강구성 | 1.0 | 0.000000 |
강민국 | 0.0 | 0.000000 |
김태진 | 0.0 | 0.000000 |
x = np.array([[1,2,3], [4,5,6]])
x
array([[1, 2, 3], [4, 5, 6]])
k = np.array([2,2,2])
x.dot(k)
#np.ones(3)
array([12, 30])
y = np.array([[6,23], [-1,7], [8,9]])
y
array([[ 6, 23], [-1, 7], [ 8, 9]])
# 각각의 원소(가장 바깥 쪽을 기준으로한 원소)의 곱 구하기 : dot 함수 사용. --> 앞의 행과 뒤의 열을 번갈아 곱한다.
# x 행 * y열 --> x1행*y1열: 6-2+24= 28, x1행*y2열: 23+14+27 = 64, x2행*y1열: 24-5+54=67, x2행*y2열: 92+35+54=181
x.dot(y)
array([[ 28, 64], [ 67, 181]])
## pandas는 자료구조를 제공하고
## NumPy는 연산의 기능을 제공 한다.
b = np.array([[1,2], [3,4]])
a = np.array([[1,1], [2,2]])
a.dot(b)
array([[ 4, 6], [ 8, 12]])
프로그래머 적인 접근 방식을 데이터과학자 방향으로 변환하기
import random
random.randint(0,1)
0
# 개발자적 방식의 수행 방식 --> 루프 순환
position = 0
walk = [position]
steps = 1000
for i in range(steps):
# random.randint(A,B) A~B까지의 정수 랜덤 생성
# 0, 1이 랜덤하게 발생: random.randint(0,1)
step = 1 if random.randint(0,1) else -1
position += step
walk.append(position)
## 마지막 10개만 확인
walk[-10:]
[-21, -22, -23, -24, -23, -22, -21, -20, -21, -20]
# 데이터 과학자
# ==> 0, 1의 난수 데이터 표를 만든다.
steps = 1000
draw = np.random.randint(0,2, size=steps)
draw[-10:]
array([0, 0, 1, 1, 0, 1, 1, 0, 1, 1])
# 표에 따른 스텝 데이터를 만든다.
# np.where(연산, 참값, 거짓값)
comSteps = np.where(draw > 0, 1, -1)
# 타입 확인
type(comSteps)
numpy.ndarray
# 걸음수의 누적 합계를 구한다.
# 누적합계함수 : cumsum
walk = comSteps.cumsum()
walk[-10:]
array([1, 0, 1, 2, 1, 2, 3, 2, 3, 4], dtype=int32)
timeit?
%%timeit
## 빌트인 매직 커맨드 %%timeit 실행시간을 측정한다.
# 개발자 방식
for _ in range(5000):
position = 0
walk = [position]
steps = 1000
for i in range(steps):
# random.randint(A,B) A~B까지의 정수 랜덤 생성
step = 1 if random.randint(0,1) else -1
position += step
walk.append(position)
#walk
9.93 s ± 311 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%%timeit
# 데이터과학자 방식
# (5000, 1000)의 난수표 행렬 생성 --> draws
draws = np.random.randint(0,2, size=(5000,1000))
# 0보다크면 1 아니면 -1 값으로 변경.
steps = np.where(draws > 0, 1, -1)
# 행 방향으로 누적 합계를 구하면 된다. --> cumsum(1)
walks = steps.cumsum(1)
# 끝에서 두번째만 확인.
walks[:2]
69.6 ms ± 522 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
안타홈런열 = ['안타', '홈런']
안타홈런 = nc15[안타홈런열]
실안타 = 안타홈런.loc[:, '안타'] - 안타홈런.loc[:,'홈런']
안타홈런.loc[:,'실안타'] = 실안타 # 안타홈런.loc[:, '안타'] - 안타홈런.loc[:,'홈런']
#안타홈런['안타홈런'] - 안타홈런['홈런']
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py:362: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self.obj[key] = _infer_fill_value(value) C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py:543: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy self.obj[item] = s
안타홈런
안타 | 홈런 | 실안타 | |
---|---|---|---|
선수명 | |||
테임즈 | 180 | 47 | 133 |
나성범 | 184 | 28 | 156 |
박민우 | 158 | 3 | 155 |
이호준 | 132 | 24 | 108 |
김종호 | 125 | 4 | 121 |
조영훈 | 35 | 8 | 27 |
손시헌 | 108 | 13 | 95 |
이종욱 | 118 | 5 | 113 |
모창민 | 62 | 6 | 56 |
지석훈 | 111 | 11 | 100 |
용덕한 | 12 | 0 | 12 |
최재원 | 21 | 2 | 19 |
박정준 | 8 | 0 | 8 |
김태군 | 107 | 6 | 101 |
조평호 | 8 | 1 | 7 |
이창섭 | 0 | 0 | 0 |
김준완 | 10 | 0 | 10 |
강구성 | 1 | 0 | 1 |
강민국 | 0 | 0 | 0 |
김태진 | 0 | 0 | 0 |
# 하나의 시리즈에서 최대값과 최소값을 차이를 계산해서 리턴.
def 최대최소차(시리즈):
return 시리즈.max() - 시리즈.min()
# 열단위로 apply 실행 만일 색인단위로 apply를 하려면 , apply(함수명, axis=1)로 설정한다.
## 다음은 안타와 홈런, 실안타의 데이터에서 최대값과 최소값의 차이를 보여 준다.
안타홈런.apply(최대최소차)
안타 184 홈런 47 dtype: int64
## DataFrame.apply 기능 이해 하기 : for 문을 이용해 apply와 동일한 기능 구현.
## ==> apply는 칼럼을 루프로 순환하거나 행(axis=1)을 루프로 순환 한다.
결과사전 = {}
for 열제목 in 안타홈런:
열 = 안타홈런[열제목]
결과 = 최대최소차(열)
결과사전[열제목] = 결과
Series(결과사전)
안타 184 홈런 47 실안타 156 dtype: int64
# 데이터 확인
nc15
팀명 | 경기 | 타석 | 타수 | 안타 | 홈런 | 득점 | 타점 | 볼넷 | 삼진 | 도루 | BABIP | 타율 | 출루율 | 장타율 | OPS | wOBA | WAR | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
선수명 | ||||||||||||||||||
테임즈 | NC | 142 | 595 | 472 | 180 | 47 | 130 | 140 | 103 | 91 | 40 | 0.390 | 0.381 | 0.497 | 0.790 | 1.287 | 0.520 | 11.73 |
나성범 | NC | 144 | 622 | 564 | 184 | 28 | 112 | 135 | 33 | 127 | 23 | 0.374 | 0.326 | 0.373 | 0.553 | 0.926 | 0.390 | 4.46 |
박민우 | NC | 141 | 617 | 520 | 158 | 3 | 111 | 47 | 73 | 108 | 46 | 0.373 | 0.304 | 0.399 | 0.404 | 0.803 | 0.364 | 3.52 |
이호준 | NC | 131 | 518 | 449 | 132 | 24 | 48 | 110 | 61 | 102 | 0 | 0.332 | 0.294 | 0.381 | 0.510 | 0.891 | 0.381 | 2.19 |
김종호 | NC | 133 | 486 | 424 | 125 | 4 | 90 | 36 | 44 | 65 | 41 | 0.338 | 0.295 | 0.364 | 0.394 | 0.758 | 0.340 | 1.03 |
조영훈 | NC | 103 | 146 | 124 | 35 | 8 | 20 | 35 | 19 | 36 | 3 | 0.329 | 0.282 | 0.372 | 0.540 | 0.912 | 0.389 | 1.00 |
손시헌 | NC | 140 | 508 | 440 | 108 | 13 | 56 | 58 | 36 | 66 | 3 | 0.260 | 0.245 | 0.319 | 0.398 | 0.717 | 0.316 | 0.85 |
이종욱 | NC | 125 | 504 | 440 | 118 | 5 | 63 | 52 | 54 | 78 | 17 | 0.315 | 0.268 | 0.351 | 0.368 | 0.719 | 0.322 | 0.84 |
모창민 | NC | 103 | 239 | 214 | 62 | 6 | 23 | 35 | 18 | 52 | 5 | 0.352 | 0.290 | 0.340 | 0.439 | 0.779 | 0.340 | 0.76 |
지석훈 | NC | 137 | 466 | 415 | 111 | 11 | 53 | 46 | 23 | 85 | 4 | 0.311 | 0.267 | 0.328 | 0.383 | 0.711 | 0.317 | 0.51 |
용덕한 | NC | 50 | 49 | 42 | 12 | 0 | 4 | 5 | 5 | 8 | 2 | 0.353 | 0.286 | 0.375 | 0.310 | 0.685 | 0.326 | 0.44 |
최재원 | NC | 114 | 102 | 85 | 21 | 2 | 31 | 13 | 10 | 29 | 14 | 0.352 | 0.247 | 0.366 | 0.412 | 0.778 | 0.350 | 0.30 |
박정준 | NC | 19 | 24 | 21 | 8 | 0 | 2 | 2 | 0 | 5 | 0 | 0.500 | 0.381 | 0.458 | 0.476 | 0.934 | 0.417 | 0.25 |
김태군 | NC | 144 | 474 | 421 | 107 | 6 | 45 | 52 | 25 | 77 | 1 | 0.293 | 0.254 | 0.307 | 0.354 | 0.661 | 0.294 | 0.25 |
조평호 | NC | 22 | 22 | 22 | 8 | 1 | 4 | 3 | 0 | 6 | 0 | 0.467 | 0.364 | 0.364 | 0.591 | 0.955 | 0.401 | 0.18 |
이창섭 | NC | 15 | 8 | 5 | 0 | 0 | 0 | 0 | 3 | 3 | 0 | 0.000 | 0.000 | 0.375 | 0.000 | 0.375 | 0.286 | -0.01 |
김준완 | NC | 30 | 54 | 44 | 10 | 0 | 12 | 2 | 10 | 10 | 2 | 0.294 | 0.227 | 0.370 | 0.227 | 0.597 | 0.308 | -0.04 |
강구성 | NC | 4 | 5 | 5 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0.200 | 0.200 | 0.200 | 0.400 | 0.600 | 0.242 | -0.04 |
강민국 | NC | 1 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.06 |
김태진 | NC | 1 | 3 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.09 |
# 타율데이터가 있지만 직접 구해본다.
#안타수 = nc15['안타'] - nc15['홈런']
타율 = nc15['안타'] / nc15['타수']
타율
선수명 테임즈 0.381356 나성범 0.326241 박민우 0.303846 이호준 0.293987 김종호 0.294811 조영훈 0.282258 손시헌 0.245455 이종욱 0.268182 모창민 0.289720 지석훈 0.267470 용덕한 0.285714 최재원 0.247059 박정준 0.380952 김태군 0.254157 조평호 0.363636 이창섭 0.000000 김준완 0.227273 강구성 0.200000 강민국 0.000000 김태진 0.000000 dtype: float64
## 타율의 표시 형식을 변경하려면...(데이터는 변경하지 않는다.)
## 문자열 양식을 활용 한다.
'{0:%} {0:.1%}'.format(0.3)
'30.000000% 30.0%'
## 출력형식 변경 함수 만들기 소숫점 둘째 자리까지 표기하고 % 출력.
def 출력형식(값):
return "{0:.2%}".format(값)
## 타율 Series를 루프로 순환하면서 출력.
for 값 in 타율:
출력 = 출력형식(값)
print(출력)
38.14% 32.62% 30.38% 29.40% 29.48% 28.23% 24.55% 26.82% 28.97% 26.75% 28.57% 24.71% 38.10% 25.42% 36.36% 0.00% 22.73% 20.00% 0.00% 0.00%
# map은 각각의 값들에 매핑되는 것.
## --> apply를 사용해도 동일 결과가 나오지만 시리즈에서는 map를 사용할 것을 권장.
# 출력형식 함수는 def f(값) 형태로 만들어야 한다.
# DataFrame의 apply --> def f(시리즈) 형식의 함수 사용.
# Series의 map --> def f(값) 형식의 함수 사용
타율.map(출력형식)
선수명 테임즈 38.14% 나성범 32.62% 박민우 30.38% 이호준 29.40% 김종호 29.48% 조영훈 28.23% 손시헌 24.55% 이종욱 26.82% 모창민 28.97% 지석훈 26.75% 용덕한 28.57% 최재원 24.71% 박정준 38.10% 김태군 25.42% 조평호 36.36% 이창섭 0.00% 김준완 22.73% 강구성 20.00% 강민국 0.00% 김태진 0.00% dtype: object
## 원본 데이터를 가지고 해보자.
nc15["타율"].map(출력형식)
선수명 테임즈 38.10% 나성범 32.60% 박민우 30.40% 이호준 29.40% 김종호 29.50% 조영훈 28.20% 손시헌 24.50% 이종욱 26.80% 모창민 29.00% 지석훈 26.70% 용덕한 28.60% 최재원 24.70% 박정준 38.10% 김태군 25.40% 조평호 36.40% 이창섭 0.00% 김준완 22.70% 강구성 20.00% 강민국 0.00% 김태진 0.00% Name: 타율, dtype: object
## 안타홈럼비
비율 = 안타홈런.div(안타홈런['안타'], axis=0).fillna(0)
비율[:5]
안타 | 홈런 | 실안타 | |
---|---|---|---|
선수명 | |||
테임즈 | 1.0 | 0.261111 | 0.738889 |
나성범 | 1.0 | 0.152174 | 0.847826 |
박민우 | 1.0 | 0.018987 | 0.981013 |
이호준 | 1.0 | 0.181818 | 0.818182 |
김종호 | 1.0 | 0.032000 | 0.968000 |
비율.columns = ['비율합','홈런비율', '안타비율']
비율
비율합 | 홈런비율 | 안타비율 | |
---|---|---|---|
선수명 | |||
테임즈 | 1.0 | 0.261111 | 0.738889 |
나성범 | 1.0 | 0.152174 | 0.847826 |
박민우 | 1.0 | 0.018987 | 0.981013 |
이호준 | 1.0 | 0.181818 | 0.818182 |
김종호 | 1.0 | 0.032000 | 0.968000 |
조영훈 | 1.0 | 0.228571 | 0.771429 |
손시헌 | 1.0 | 0.120370 | 0.879630 |
이종욱 | 1.0 | 0.042373 | 0.957627 |
모창민 | 1.0 | 0.096774 | 0.903226 |
지석훈 | 1.0 | 0.099099 | 0.900901 |
용덕한 | 1.0 | 0.000000 | 1.000000 |
최재원 | 1.0 | 0.095238 | 0.904762 |
박정준 | 1.0 | 0.000000 | 1.000000 |
김태군 | 1.0 | 0.056075 | 0.943925 |
조평호 | 1.0 | 0.125000 | 0.875000 |
이창섭 | 0.0 | 0.000000 | 0.000000 |
김준완 | 1.0 | 0.000000 | 1.000000 |
강구성 | 1.0 | 0.000000 | 1.000000 |
강민국 | 0.0 | 0.000000 | 0.000000 |
김태진 | 0.0 | 0.000000 | 0.000000 |
# 비율합 칼럼 제거
비율 = 비율.drop('비율합', axis=1)
비율
홈런비율 | 안타비율 | |
---|---|---|
선수명 | ||
테임즈 | 0.261111 | 0.738889 |
나성범 | 0.152174 | 0.847826 |
박민우 | 0.018987 | 0.981013 |
이호준 | 0.181818 | 0.818182 |
김종호 | 0.032000 | 0.968000 |
조영훈 | 0.228571 | 0.771429 |
손시헌 | 0.120370 | 0.879630 |
이종욱 | 0.042373 | 0.957627 |
모창민 | 0.096774 | 0.903226 |
지석훈 | 0.099099 | 0.900901 |
용덕한 | 0.000000 | 1.000000 |
최재원 | 0.095238 | 0.904762 |
박정준 | 0.000000 | 1.000000 |
김태군 | 0.056075 | 0.943925 |
조평호 | 0.125000 | 0.875000 |
이창섭 | 0.000000 | 0.000000 |
김준완 | 0.000000 | 1.000000 |
강구성 | 0.000000 | 1.000000 |
강민국 | 0.000000 | 0.000000 |
김태진 | 0.000000 | 0.000000 |
# index 리셋
비율.reset_index()
선수명 | 홈런비율 | 안타비율 | |
---|---|---|---|
0 | 테임즈 | 0.261111 | 0.738889 |
1 | 나성범 | 0.152174 | 0.847826 |
2 | 박민우 | 0.018987 | 0.981013 |
3 | 이호준 | 0.181818 | 0.818182 |
4 | 김종호 | 0.032000 | 0.968000 |
5 | 조영훈 | 0.228571 | 0.771429 |
6 | 손시헌 | 0.120370 | 0.879630 |
7 | 이종욱 | 0.042373 | 0.957627 |
8 | 모창민 | 0.096774 | 0.903226 |
9 | 지석훈 | 0.099099 | 0.900901 |
10 | 용덕한 | 0.000000 | 1.000000 |
11 | 최재원 | 0.095238 | 0.904762 |
12 | 박정준 | 0.000000 | 1.000000 |
13 | 김태군 | 0.056075 | 0.943925 |
14 | 조평호 | 0.125000 | 0.875000 |
15 | 이창섭 | 0.000000 | 0.000000 |
16 | 김준완 | 0.000000 | 1.000000 |
17 | 강구성 | 0.000000 | 1.000000 |
18 | 강민국 | 0.000000 | 0.000000 |
19 | 김태진 | 0.000000 | 0.000000 |
#안타홈런.reset_index()
## 안타홈런과 비율을 병합.
안타홈런비 = pd.merge(안타홈런.reset_index(), 비율.reset_index())
# 인덱스 선수명으로 지정
안타홈런비 = 안타홈런비.set_index('선수명')
안타홈런비
안타 | 홈런 | 실안타 | 홈런비율 | 안타비율 | |
---|---|---|---|---|---|
선수명 | |||||
테임즈 | 180 | 47 | 133 | 0.261111 | 0.738889 |
나성범 | 184 | 28 | 156 | 0.152174 | 0.847826 |
박민우 | 158 | 3 | 155 | 0.018987 | 0.981013 |
이호준 | 132 | 24 | 108 | 0.181818 | 0.818182 |
김종호 | 125 | 4 | 121 | 0.032000 | 0.968000 |
조영훈 | 35 | 8 | 27 | 0.228571 | 0.771429 |
손시헌 | 108 | 13 | 95 | 0.120370 | 0.879630 |
이종욱 | 118 | 5 | 113 | 0.042373 | 0.957627 |
모창민 | 62 | 6 | 56 | 0.096774 | 0.903226 |
지석훈 | 111 | 11 | 100 | 0.099099 | 0.900901 |
용덕한 | 12 | 0 | 12 | 0.000000 | 1.000000 |
최재원 | 21 | 2 | 19 | 0.095238 | 0.904762 |
박정준 | 8 | 0 | 8 | 0.000000 | 1.000000 |
김태군 | 107 | 6 | 101 | 0.056075 | 0.943925 |
조평호 | 8 | 1 | 7 | 0.125000 | 0.875000 |
이창섭 | 0 | 0 | 0 | 0.000000 | 0.000000 |
김준완 | 10 | 0 | 10 | 0.000000 | 1.000000 |
강구성 | 1 | 0 | 1 | 0.000000 | 1.000000 |
강민국 | 0 | 0 | 0 | 0.000000 | 0.000000 |
김태진 | 0 | 0 | 0 | 0.000000 | 0.000000 |
# DataFrame.applymap 함수 : Series에 대해서 apply 후 그 시리즈의 값에 대해서 map을 하는 함수. apply -> map(f)
비율.applymap(출력형식)
홈런비율 | 안타비율 | |
---|---|---|
선수명 | ||
테임즈 | 26.11% | 73.89% |
나성범 | 15.22% | 84.78% |
박민우 | 1.90% | 98.10% |
이호준 | 18.18% | 81.82% |
김종호 | 3.20% | 96.80% |
조영훈 | 22.86% | 77.14% |
손시헌 | 12.04% | 87.96% |
이종욱 | 4.24% | 95.76% |
모창민 | 9.68% | 90.32% |
지석훈 | 9.91% | 90.09% |
용덕한 | 0.00% | 100.00% |
최재원 | 9.52% | 90.48% |
박정준 | 0.00% | 100.00% |
김태군 | 5.61% | 94.39% |
조평호 | 12.50% | 87.50% |
이창섭 | 0.00% | 0.00% |
김준완 | 0.00% | 100.00% |
강구성 | 0.00% | 100.00% |
강민국 | 0.00% | 0.00% |
김태진 | 0.00% | 0.00% |
#pd.merge(안타홈런비.reset_index(), 안타홈런비[["안타비율", '홈런비율']].applymap(출력형식).reset_index())
#안타홈런비[["안타비율", '홈런비율']].applymap(출력형식).reset_index()
#안타홈런비.reset_index()
안타홈런비[["안타비율", '홈런비율']].applymap(출력형식)
안타비율 | 홈런비율 | |
---|---|---|
선수명 | ||
테임즈 | 73.89% | 26.11% |
나성범 | 84.78% | 15.22% |
박민우 | 98.10% | 1.90% |
이호준 | 81.82% | 18.18% |
김종호 | 96.80% | 3.20% |
조영훈 | 77.14% | 22.86% |
손시헌 | 87.96% | 12.04% |
이종욱 | 95.76% | 4.24% |
모창민 | 90.32% | 9.68% |
지석훈 | 90.09% | 9.91% |
용덕한 | 100.00% | 0.00% |
최재원 | 90.48% | 9.52% |
박정준 | 100.00% | 0.00% |
김태군 | 94.39% | 5.61% |
조평호 | 87.50% | 12.50% |
이창섭 | 0.00% | 0.00% |
김준완 | 100.00% | 0.00% |
강구성 | 100.00% | 0.00% |
강민국 | 0.00% | 0.00% |
김태진 | 0.00% | 0.00% |
## applymap 함수를 구현하면 다음과 같이 만들 수 있다.
# 각 열별로 (apply)
for 열제목 in 비율:
print('===========' + 열제목 + '==============')
열 = 비율[열제목]
# 개별 값 별로 반복 (map)
for 값 in 열:
출력 = 출력형식(값)
print(출력)
===========홈런비율============== 26.11% 15.22% 1.90% 18.18% 3.20% 22.86% 12.04% 4.24% 9.68% 9.91% 0.00% 9.52% 0.00% 5.61% 12.50% 0.00% 0.00% 0.00% 0.00% 0.00% ===========안타비율============== 73.89% 84.78% 98.10% 81.82% 96.80% 77.14% 87.96% 95.76% 90.32% 90.09% 100.00% 90.48% 100.00% 94.39% 87.50% 0.00% 100.00% 100.00% 0.00% 0.00%
# 홈런 많은 기준으로 정렬
안타홈런비.sort_values(by='홈런', ascending=False)
안타 | 홈런 | 실안타 | 홈런비율 | 안타비율 | |
---|---|---|---|---|---|
선수명 | |||||
테임즈 | 180 | 47 | 133 | 0.261111 | 0.738889 |
나성범 | 184 | 28 | 156 | 0.152174 | 0.847826 |
이호준 | 132 | 24 | 108 | 0.181818 | 0.818182 |
손시헌 | 108 | 13 | 95 | 0.120370 | 0.879630 |
지석훈 | 111 | 11 | 100 | 0.099099 | 0.900901 |
조영훈 | 35 | 8 | 27 | 0.228571 | 0.771429 |
모창민 | 62 | 6 | 56 | 0.096774 | 0.903226 |
김태군 | 107 | 6 | 101 | 0.056075 | 0.943925 |
이종욱 | 118 | 5 | 113 | 0.042373 | 0.957627 |
김종호 | 125 | 4 | 121 | 0.032000 | 0.968000 |
박민우 | 158 | 3 | 155 | 0.018987 | 0.981013 |
최재원 | 21 | 2 | 19 | 0.095238 | 0.904762 |
조평호 | 8 | 1 | 7 | 0.125000 | 0.875000 |
김준완 | 10 | 0 | 10 | 0.000000 | 1.000000 |
강민국 | 0 | 0 | 0 | 0.000000 | 0.000000 |
강구성 | 1 | 0 | 1 | 0.000000 | 1.000000 |
용덕한 | 12 | 0 | 12 | 0.000000 | 1.000000 |
이창섭 | 0 | 0 | 0 | 0.000000 | 0.000000 |
박정준 | 8 | 0 | 8 | 0.000000 | 1.000000 |
김태진 | 0 | 0 | 0 | 0.000000 | 0.000000 |
# 기준을 두개 이상 설정
안타홈런비.sort_values(by=['홈런', '안타'], ascending=False)
안타 | 홈런 | 실안타 | 홈런비율 | 안타비율 | |
---|---|---|---|---|---|
선수명 | |||||
테임즈 | 180 | 47 | 133 | 0.261111 | 0.738889 |
나성범 | 184 | 28 | 156 | 0.152174 | 0.847826 |
이호준 | 132 | 24 | 108 | 0.181818 | 0.818182 |
손시헌 | 108 | 13 | 95 | 0.120370 | 0.879630 |
지석훈 | 111 | 11 | 100 | 0.099099 | 0.900901 |
조영훈 | 35 | 8 | 27 | 0.228571 | 0.771429 |
김태군 | 107 | 6 | 101 | 0.056075 | 0.943925 |
모창민 | 62 | 6 | 56 | 0.096774 | 0.903226 |
이종욱 | 118 | 5 | 113 | 0.042373 | 0.957627 |
김종호 | 125 | 4 | 121 | 0.032000 | 0.968000 |
박민우 | 158 | 3 | 155 | 0.018987 | 0.981013 |
최재원 | 21 | 2 | 19 | 0.095238 | 0.904762 |
조평호 | 8 | 1 | 7 | 0.125000 | 0.875000 |
용덕한 | 12 | 0 | 12 | 0.000000 | 1.000000 |
김준완 | 10 | 0 | 10 | 0.000000 | 1.000000 |
박정준 | 8 | 0 | 8 | 0.000000 | 1.000000 |
강구성 | 1 | 0 | 1 | 0.000000 | 1.000000 |
이창섭 | 0 | 0 | 0 | 0.000000 | 0.000000 |
강민국 | 0 | 0 | 0 | 0.000000 | 0.000000 |
김태진 | 0 | 0 | 0 | 0.000000 | 0.000000 |
안타홈런비.index
Index(['테임즈', '나성범', '박민우', '이호준', '김종호', '조영훈', '손시헌', '이종욱', '모창민', '지석훈', '용덕한', '최재원', '박정준', '김태군', '조평호', '이창섭', '김준완', '강구성', '강민국', '김태진'], dtype='object', name='선수명')
# 색인의 값을 가지고 정렬
안타홈런비.sort_index()
안타 | 홈런 | 실안타 | 홈런비율 | 안타비율 | |
---|---|---|---|---|---|
선수명 | |||||
강구성 | 1 | 0 | 1 | 0.000000 | 1.000000 |
강민국 | 0 | 0 | 0 | 0.000000 | 0.000000 |
김종호 | 125 | 4 | 121 | 0.032000 | 0.968000 |
김준완 | 10 | 0 | 10 | 0.000000 | 1.000000 |
김태군 | 107 | 6 | 101 | 0.056075 | 0.943925 |
김태진 | 0 | 0 | 0 | 0.000000 | 0.000000 |
나성범 | 184 | 28 | 156 | 0.152174 | 0.847826 |
모창민 | 62 | 6 | 56 | 0.096774 | 0.903226 |
박민우 | 158 | 3 | 155 | 0.018987 | 0.981013 |
박정준 | 8 | 0 | 8 | 0.000000 | 1.000000 |
손시헌 | 108 | 13 | 95 | 0.120370 | 0.879630 |
용덕한 | 12 | 0 | 12 | 0.000000 | 1.000000 |
이종욱 | 118 | 5 | 113 | 0.042373 | 0.957627 |
이창섭 | 0 | 0 | 0 | 0.000000 | 0.000000 |
이호준 | 132 | 24 | 108 | 0.181818 | 0.818182 |
조영훈 | 35 | 8 | 27 | 0.228571 | 0.771429 |
조평호 | 8 | 1 | 7 | 0.125000 | 0.875000 |
지석훈 | 111 | 11 | 100 | 0.099099 | 0.900901 |
최재원 | 21 | 2 | 19 | 0.095238 | 0.904762 |
테임즈 | 180 | 47 | 133 | 0.261111 | 0.738889 |
# 색인을 역순으로 조회
안타홈런비.sort_index(ascending=False)
안타 | 홈런 | 실안타 | 홈런비율 | 안타비율 | |
---|---|---|---|---|---|
선수명 | |||||
테임즈 | 180 | 47 | 133 | 0.261111 | 0.738889 |
최재원 | 21 | 2 | 19 | 0.095238 | 0.904762 |
지석훈 | 111 | 11 | 100 | 0.099099 | 0.900901 |
조평호 | 8 | 1 | 7 | 0.125000 | 0.875000 |
조영훈 | 35 | 8 | 27 | 0.228571 | 0.771429 |
이호준 | 132 | 24 | 108 | 0.181818 | 0.818182 |
이창섭 | 0 | 0 | 0 | 0.000000 | 0.000000 |
이종욱 | 118 | 5 | 113 | 0.042373 | 0.957627 |
용덕한 | 12 | 0 | 12 | 0.000000 | 1.000000 |
손시헌 | 108 | 13 | 95 | 0.120370 | 0.879630 |
박정준 | 8 | 0 | 8 | 0.000000 | 1.000000 |
박민우 | 158 | 3 | 155 | 0.018987 | 0.981013 |
모창민 | 62 | 6 | 56 | 0.096774 | 0.903226 |
나성범 | 184 | 28 | 156 | 0.152174 | 0.847826 |
김태진 | 0 | 0 | 0 | 0.000000 | 0.000000 |
김태군 | 107 | 6 | 101 | 0.056075 | 0.943925 |
김준완 | 10 | 0 | 10 | 0.000000 | 1.000000 |
김종호 | 125 | 4 | 121 | 0.032000 | 0.968000 |
강민국 | 0 | 0 | 0 | 0.000000 | 0.000000 |
강구성 | 1 | 0 | 1 | 0.000000 | 1.000000 |
홈런 = 안타홈런비['홈런']
# 정렬은되나 등수를 확인할 수 없다.
홈런.sort_values(ascending=False)
선수명 테임즈 47 나성범 28 이호준 24 손시헌 13 지석훈 11 조영훈 8 김태군 6 모창민 6 이종욱 5 김종호 4 박민우 3 최재원 2 조평호 1 박정준 0 용덕한 0 강민국 0 이창섭 0 김준완 0 강구성 0 김태진 0 Name: 홈런, dtype: int64
# 순위 매기기 --> 낮은 값이 더 높은 순위로 표기
홈런.rank()
선수명 테임즈 20.0 나성범 19.0 박민우 10.0 이호준 18.0 김종호 11.0 조영훈 15.0 손시헌 17.0 이종욱 12.0 모창민 13.5 지석훈 16.0 용덕한 4.0 최재원 9.0 박정준 4.0 김태군 13.5 조평호 8.0 이창섭 4.0 김준완 4.0 강구성 4.0 강민국 4.0 김태진 4.0 Name: 홈런, dtype: float64
# 순위 매기기 (정렬이 안된다. ...)
홈런.rank(ascending=False)
선수명 테임즈 1.0 나성범 2.0 박민우 11.0 이호준 3.0 김종호 10.0 조영훈 6.0 손시헌 4.0 이종욱 9.0 모창민 7.5 지석훈 5.0 용덕한 17.0 최재원 12.0 박정준 17.0 김태군 7.5 조평호 13.0 이창섭 17.0 김준완 17.0 강구성 17.0 강민국 17.0 김태진 17.0 Name: 홈런, dtype: float64
#순위 매기고 다시 소팅
## --> 7.5라는 등수가 나타남.
### ==> 7등이 2명이 나와서 이런 현상이 발생.
홈런.rank(ascending=False).sort_values()
선수명 테임즈 1.0 나성범 2.0 이호준 3.0 손시헌 4.0 지석훈 5.0 조영훈 6.0 모창민 7.5 김태군 7.5 이종욱 9.0 김종호 10.0 박민우 11.0 최재원 12.0 조평호 13.0 강민국 17.0 용덕한 17.0 박정준 17.0 이창섭 17.0 김준완 17.0 강구성 17.0 김태진 17.0 Name: 홈런, dtype: float64
# 순위 매기기 동점의 등수를 순위를 매기는 방식
# 동점 처리 방식 : method='max' , 'min', 'first', 'average'(디폴트 방식)
홈런.rank(ascending=False, method='min').sort_values()
선수명 테임즈 1.0 나성범 2.0 이호준 3.0 손시헌 4.0 지석훈 5.0 조영훈 6.0 모창민 7.0 김태군 7.0 이종욱 9.0 김종호 10.0 박민우 11.0 최재원 12.0 조평호 13.0 강민국 14.0 용덕한 14.0 박정준 14.0 이창섭 14.0 김준완 14.0 강구성 14.0 김태진 14.0 Name: 홈런, dtype: float64
# 함수를 사용하기 위한 모듈 가져오기
import math
## 함수에 대한 도움말 보기
math.ceil?
np.ceil?
np.ceil([1.5, 2.5, 3.5, 4.4, 4.5, -1.5])
array([ 2., 3., 4., 5., 5., -1.])
주식=pd.read_csv('data/stock_px.csv', index_col=0)
주식[:5]
AAPL | MSFT | XOM | SPX | |
---|---|---|---|---|
2003-01-02 00:00:00 | 7.40 | 21.11 | 29.22 | 909.03 |
2003-01-03 00:00:00 | 7.45 | 21.14 | 29.24 | 908.59 |
2003-01-06 00:00:00 | 7.45 | 21.52 | 29.96 | 929.01 |
2003-01-07 00:00:00 | 7.43 | 21.93 | 28.95 | 922.93 |
2003-01-08 00:00:00 | 7.28 | 21.31 | 28.83 | 909.93 |
# pct_change() : 윗값과 아랫값과의 변화량
수익률 = 주식.pct_change()
수익률[:10]
## 첫번째 줄에 변화량을 없기 때문에 NaN 표기
AAPL | MSFT | XOM | SPX | |
---|---|---|---|---|
2003-01-02 00:00:00 | NaN | NaN | NaN | NaN |
2003-01-03 00:00:00 | 0.006757 | 0.001421 | 0.000684 | -0.000484 |
2003-01-06 00:00:00 | 0.000000 | 0.017975 | 0.024624 | 0.022474 |
2003-01-07 00:00:00 | -0.002685 | 0.019052 | -0.033712 | -0.006545 |
2003-01-08 00:00:00 | -0.020188 | -0.028272 | -0.004145 | -0.014086 |
2003-01-09 00:00:00 | 0.008242 | 0.029094 | 0.021159 | 0.019386 |
2003-01-10 00:00:00 | 0.002725 | 0.001824 | -0.013927 | 0.000000 |
2003-01-13 00:00:00 | -0.005435 | 0.008648 | -0.004134 | -0.001412 |
2003-01-14 00:00:00 | -0.002732 | 0.010379 | 0.008993 | 0.005830 |
2003-01-15 00:00:00 | -0.010959 | -0.012506 | -0.013713 | -0.014426 |
# 필요없는 nan 데이터를 drop 시킨다.
수익률.dropna()[:10]
AAPL | MSFT | XOM | SPX | |
---|---|---|---|---|
2003-01-03 00:00:00 | 0.006757 | 0.001421 | 0.000684 | -0.000484 |
2003-01-06 00:00:00 | 0.000000 | 0.017975 | 0.024624 | 0.022474 |
2003-01-07 00:00:00 | -0.002685 | 0.019052 | -0.033712 | -0.006545 |
2003-01-08 00:00:00 | -0.020188 | -0.028272 | -0.004145 | -0.014086 |
2003-01-09 00:00:00 | 0.008242 | 0.029094 | 0.021159 | 0.019386 |
2003-01-10 00:00:00 | 0.002725 | 0.001824 | -0.013927 | 0.000000 |
2003-01-13 00:00:00 | -0.005435 | 0.008648 | -0.004134 | -0.001412 |
2003-01-14 00:00:00 | -0.002732 | 0.010379 | 0.008993 | 0.005830 |
2003-01-15 00:00:00 | -0.010959 | -0.012506 | -0.013713 | -0.014426 |
2003-01-16 00:00:00 | 0.012465 | -0.016282 | 0.004519 | -0.003942 |
# 확률통계의 correlation - 상관관계 --> 상관관계가 높을 수록 1에 접근한다. 0.5가 넘으면 상관관계가 높은걸로 볼 수 있다.
# XOM - SPX 간의 상관 관계가 가장 높게 나온다.
수익률.corr()
AAPL | MSFT | XOM | SPX | |
---|---|---|---|---|
AAPL | 1.000000 | 0.444697 | 0.385927 | 0.564474 |
MSFT | 0.444697 | 1.000000 | 0.534691 | 0.714763 |
XOM | 0.385927 | 0.534691 | 1.000000 | 0.764643 |
SPX | 0.564474 | 0.714763 | 0.764643 | 1.000000 |
# 공분산
수익률.cov()
AAPL | MSFT | XOM | SPX | |
---|---|---|---|---|
AAPL | 0.000600 | 0.000193 | 0.000158 | 0.000186 |
MSFT | 0.000193 | 0.000314 | 0.000158 | 0.000171 |
XOM | 0.000158 | 0.000158 | 0.000279 | 0.000172 |
SPX | 0.000186 | 0.000171 | 0.000172 | 0.000181 |
#nc 데이터 다시 로딩.
경로목록 = [
'data/NC Dinos 2013.xlsx',
'data/NC Dinos 2014.xlsx',
'data/NC Dinos 2015.xlsx'
]
인덱스열 = ['시즌', '선수명']
frame_list = []
for 시즌 in range(2013, 2016):
경로 = 'data/NC Dinos {}.xlsx'.format(시즌)
frame = pd.read_excel(경로)
frame['시즌'] = 시즌
#frame = frame.set_index(인덱스열)
frame_list.append(frame)
# 풀기 - 리스트의 항목을 차례로 각각의 변수에 대입
nc13, nc14, nc15 = frame_list
# nc15['시즌'] = 2015
nc15
선수명 | 팀명 | 경기 | 타석 | 타수 | 안타 | 홈런 | 득점 | 타점 | 볼넷 | 삼진 | 도루 | BABIP | 타율 | 출루율 | 장타율 | OPS | wOBA | WAR | 시즌 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 테임즈 | NC | 142 | 595 | 472 | 180 | 47 | 130 | 140 | 103 | 91 | 40 | 0.390 | 0.381 | 0.497 | 0.790 | 1.287 | 0.520 | 11.73 | 2015 |
1 | 나성범 | NC | 144 | 622 | 564 | 184 | 28 | 112 | 135 | 33 | 127 | 23 | 0.374 | 0.326 | 0.373 | 0.553 | 0.926 | 0.390 | 4.46 | 2015 |
2 | 박민우 | NC | 141 | 617 | 520 | 158 | 3 | 111 | 47 | 73 | 108 | 46 | 0.373 | 0.304 | 0.399 | 0.404 | 0.803 | 0.364 | 3.52 | 2015 |
3 | 이호준 | NC | 131 | 518 | 449 | 132 | 24 | 48 | 110 | 61 | 102 | 0 | 0.332 | 0.294 | 0.381 | 0.510 | 0.891 | 0.381 | 2.19 | 2015 |
4 | 김종호 | NC | 133 | 486 | 424 | 125 | 4 | 90 | 36 | 44 | 65 | 41 | 0.338 | 0.295 | 0.364 | 0.394 | 0.758 | 0.340 | 1.03 | 2015 |
5 | 조영훈 | NC | 103 | 146 | 124 | 35 | 8 | 20 | 35 | 19 | 36 | 3 | 0.329 | 0.282 | 0.372 | 0.540 | 0.912 | 0.389 | 1.00 | 2015 |
6 | 손시헌 | NC | 140 | 508 | 440 | 108 | 13 | 56 | 58 | 36 | 66 | 3 | 0.260 | 0.245 | 0.319 | 0.398 | 0.717 | 0.316 | 0.85 | 2015 |
7 | 이종욱 | NC | 125 | 504 | 440 | 118 | 5 | 63 | 52 | 54 | 78 | 17 | 0.315 | 0.268 | 0.351 | 0.368 | 0.719 | 0.322 | 0.84 | 2015 |
8 | 모창민 | NC | 103 | 239 | 214 | 62 | 6 | 23 | 35 | 18 | 52 | 5 | 0.352 | 0.290 | 0.340 | 0.439 | 0.779 | 0.340 | 0.76 | 2015 |
9 | 지석훈 | NC | 137 | 466 | 415 | 111 | 11 | 53 | 46 | 23 | 85 | 4 | 0.311 | 0.267 | 0.328 | 0.383 | 0.711 | 0.317 | 0.51 | 2015 |
10 | 용덕한 | NC | 50 | 49 | 42 | 12 | 0 | 4 | 5 | 5 | 8 | 2 | 0.353 | 0.286 | 0.375 | 0.310 | 0.685 | 0.326 | 0.44 | 2015 |
11 | 최재원 | NC | 114 | 102 | 85 | 21 | 2 | 31 | 13 | 10 | 29 | 14 | 0.352 | 0.247 | 0.366 | 0.412 | 0.778 | 0.350 | 0.30 | 2015 |
12 | 박정준 | NC | 19 | 24 | 21 | 8 | 0 | 2 | 2 | 0 | 5 | 0 | 0.500 | 0.381 | 0.458 | 0.476 | 0.934 | 0.417 | 0.25 | 2015 |
13 | 김태군 | NC | 144 | 474 | 421 | 107 | 6 | 45 | 52 | 25 | 77 | 1 | 0.293 | 0.254 | 0.307 | 0.354 | 0.661 | 0.294 | 0.25 | 2015 |
14 | 조평호 | NC | 22 | 22 | 22 | 8 | 1 | 4 | 3 | 0 | 6 | 0 | 0.467 | 0.364 | 0.364 | 0.591 | 0.955 | 0.401 | 0.18 | 2015 |
15 | 이창섭 | NC | 15 | 8 | 5 | 0 | 0 | 0 | 0 | 3 | 3 | 0 | 0.000 | 0.000 | 0.375 | 0.000 | 0.375 | 0.286 | -0.01 | 2015 |
16 | 김준완 | NC | 30 | 54 | 44 | 10 | 0 | 12 | 2 | 10 | 10 | 2 | 0.294 | 0.227 | 0.370 | 0.227 | 0.597 | 0.308 | -0.04 | 2015 |
17 | 강구성 | NC | 4 | 5 | 5 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0.200 | 0.200 | 0.200 | 0.400 | 0.600 | 0.242 | -0.04 | 2015 |
18 | 강민국 | NC | 1 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.06 | 2015 |
19 | 김태진 | NC | 1 | 3 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.09 | 2015 |
## 인덱스 리셋 -- 시즌, 선수명으로 인덱스 다시 셋팅
## reset_index()를 하지 않으면 인덱스 셋팅되지 않는다.
nc15.reset_index().set_index(['시즌', '선수명'])
index | 팀명 | 경기 | 타석 | 타수 | 안타 | 홈런 | 득점 | 타점 | 볼넷 | 삼진 | 도루 | BABIP | 타율 | 출루율 | 장타율 | OPS | wOBA | WAR | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
시즌 | 선수명 | |||||||||||||||||||
2015 | 테임즈 | 0 | NC | 142 | 595 | 472 | 180 | 47 | 130 | 140 | 103 | 91 | 40 | 0.390 | 0.381 | 0.497 | 0.790 | 1.287 | 0.520 | 11.73 |
나성범 | 1 | NC | 144 | 622 | 564 | 184 | 28 | 112 | 135 | 33 | 127 | 23 | 0.374 | 0.326 | 0.373 | 0.553 | 0.926 | 0.390 | 4.46 | |
박민우 | 2 | NC | 141 | 617 | 520 | 158 | 3 | 111 | 47 | 73 | 108 | 46 | 0.373 | 0.304 | 0.399 | 0.404 | 0.803 | 0.364 | 3.52 | |
이호준 | 3 | NC | 131 | 518 | 449 | 132 | 24 | 48 | 110 | 61 | 102 | 0 | 0.332 | 0.294 | 0.381 | 0.510 | 0.891 | 0.381 | 2.19 | |
김종호 | 4 | NC | 133 | 486 | 424 | 125 | 4 | 90 | 36 | 44 | 65 | 41 | 0.338 | 0.295 | 0.364 | 0.394 | 0.758 | 0.340 | 1.03 | |
조영훈 | 5 | NC | 103 | 146 | 124 | 35 | 8 | 20 | 35 | 19 | 36 | 3 | 0.329 | 0.282 | 0.372 | 0.540 | 0.912 | 0.389 | 1.00 | |
손시헌 | 6 | NC | 140 | 508 | 440 | 108 | 13 | 56 | 58 | 36 | 66 | 3 | 0.260 | 0.245 | 0.319 | 0.398 | 0.717 | 0.316 | 0.85 | |
이종욱 | 7 | NC | 125 | 504 | 440 | 118 | 5 | 63 | 52 | 54 | 78 | 17 | 0.315 | 0.268 | 0.351 | 0.368 | 0.719 | 0.322 | 0.84 | |
모창민 | 8 | NC | 103 | 239 | 214 | 62 | 6 | 23 | 35 | 18 | 52 | 5 | 0.352 | 0.290 | 0.340 | 0.439 | 0.779 | 0.340 | 0.76 | |
지석훈 | 9 | NC | 137 | 466 | 415 | 111 | 11 | 53 | 46 | 23 | 85 | 4 | 0.311 | 0.267 | 0.328 | 0.383 | 0.711 | 0.317 | 0.51 | |
용덕한 | 10 | NC | 50 | 49 | 42 | 12 | 0 | 4 | 5 | 5 | 8 | 2 | 0.353 | 0.286 | 0.375 | 0.310 | 0.685 | 0.326 | 0.44 | |
최재원 | 11 | NC | 114 | 102 | 85 | 21 | 2 | 31 | 13 | 10 | 29 | 14 | 0.352 | 0.247 | 0.366 | 0.412 | 0.778 | 0.350 | 0.30 | |
박정준 | 12 | NC | 19 | 24 | 21 | 8 | 0 | 2 | 2 | 0 | 5 | 0 | 0.500 | 0.381 | 0.458 | 0.476 | 0.934 | 0.417 | 0.25 | |
김태군 | 13 | NC | 144 | 474 | 421 | 107 | 6 | 45 | 52 | 25 | 77 | 1 | 0.293 | 0.254 | 0.307 | 0.354 | 0.661 | 0.294 | 0.25 | |
조평호 | 14 | NC | 22 | 22 | 22 | 8 | 1 | 4 | 3 | 0 | 6 | 0 | 0.467 | 0.364 | 0.364 | 0.591 | 0.955 | 0.401 | 0.18 | |
이창섭 | 15 | NC | 15 | 8 | 5 | 0 | 0 | 0 | 0 | 3 | 3 | 0 | 0.000 | 0.000 | 0.375 | 0.000 | 0.375 | 0.286 | -0.01 | |
김준완 | 16 | NC | 30 | 54 | 44 | 10 | 0 | 12 | 2 | 10 | 10 | 2 | 0.294 | 0.227 | 0.370 | 0.227 | 0.597 | 0.308 | -0.04 | |
강구성 | 17 | NC | 4 | 5 | 5 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0.200 | 0.200 | 0.200 | 0.400 | 0.600 | 0.242 | -0.04 | |
강민국 | 18 | NC | 1 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.06 | |
김태진 | 19 | NC | 1 | 3 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.09 |
# nc15에 갱신
nc15 = nc15.reset_index().set_index(['시즌', '선수명'])
# excel 파일에 저장
nc15.to_excel('nc15.xlsx')
# excel 파일에서 다시 읽어오기
nc15 = pd.read_excel('nc15.xlsx')
nc15
# 시즌 열이 유실되어 있는 모양을 확인할 수 있다. 중첩인덱스 설정된 상태에서 저장된 경우 상위 인덱스의 값은 생략되어 저장된다.
시즌 | 선수명 | index | 팀명 | 경기 | 타석 | 타수 | 안타 | 홈런 | 득점 | ... | 볼넷 | 삼진 | 도루 | BABIP | 타율 | 출루율 | 장타율 | OPS | wOBA | WAR | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2015.0 | 테임즈 | 0 | NC | 142 | 595 | 472 | 180 | 47 | 130 | ... | 103 | 91 | 40 | 0.390 | 0.381 | 0.497 | 0.790 | 1.287 | 0.520 | 11.73 |
1 | NaN | 나성범 | 1 | NC | 144 | 622 | 564 | 184 | 28 | 112 | ... | 33 | 127 | 23 | 0.374 | 0.326 | 0.373 | 0.553 | 0.926 | 0.390 | 4.46 |
2 | NaN | 박민우 | 2 | NC | 141 | 617 | 520 | 158 | 3 | 111 | ... | 73 | 108 | 46 | 0.373 | 0.304 | 0.399 | 0.404 | 0.803 | 0.364 | 3.52 |
3 | NaN | 이호준 | 3 | NC | 131 | 518 | 449 | 132 | 24 | 48 | ... | 61 | 102 | 0 | 0.332 | 0.294 | 0.381 | 0.510 | 0.891 | 0.381 | 2.19 |
4 | NaN | 김종호 | 4 | NC | 133 | 486 | 424 | 125 | 4 | 90 | ... | 44 | 65 | 41 | 0.338 | 0.295 | 0.364 | 0.394 | 0.758 | 0.340 | 1.03 |
5 | NaN | 조영훈 | 5 | NC | 103 | 146 | 124 | 35 | 8 | 20 | ... | 19 | 36 | 3 | 0.329 | 0.282 | 0.372 | 0.540 | 0.912 | 0.389 | 1.00 |
6 | NaN | 손시헌 | 6 | NC | 140 | 508 | 440 | 108 | 13 | 56 | ... | 36 | 66 | 3 | 0.260 | 0.245 | 0.319 | 0.398 | 0.717 | 0.316 | 0.85 |
7 | NaN | 이종욱 | 7 | NC | 125 | 504 | 440 | 118 | 5 | 63 | ... | 54 | 78 | 17 | 0.315 | 0.268 | 0.351 | 0.368 | 0.719 | 0.322 | 0.84 |
8 | NaN | 모창민 | 8 | NC | 103 | 239 | 214 | 62 | 6 | 23 | ... | 18 | 52 | 5 | 0.352 | 0.290 | 0.340 | 0.439 | 0.779 | 0.340 | 0.76 |
9 | NaN | 지석훈 | 9 | NC | 137 | 466 | 415 | 111 | 11 | 53 | ... | 23 | 85 | 4 | 0.311 | 0.267 | 0.328 | 0.383 | 0.711 | 0.317 | 0.51 |
10 | NaN | 용덕한 | 10 | NC | 50 | 49 | 42 | 12 | 0 | 4 | ... | 5 | 8 | 2 | 0.353 | 0.286 | 0.375 | 0.310 | 0.685 | 0.326 | 0.44 |
11 | NaN | 최재원 | 11 | NC | 114 | 102 | 85 | 21 | 2 | 31 | ... | 10 | 29 | 14 | 0.352 | 0.247 | 0.366 | 0.412 | 0.778 | 0.350 | 0.30 |
12 | NaN | 박정준 | 12 | NC | 19 | 24 | 21 | 8 | 0 | 2 | ... | 0 | 5 | 0 | 0.500 | 0.381 | 0.458 | 0.476 | 0.934 | 0.417 | 0.25 |
13 | NaN | 김태군 | 13 | NC | 144 | 474 | 421 | 107 | 6 | 45 | ... | 25 | 77 | 1 | 0.293 | 0.254 | 0.307 | 0.354 | 0.661 | 0.294 | 0.25 |
14 | NaN | 조평호 | 14 | NC | 22 | 22 | 22 | 8 | 1 | 4 | ... | 0 | 6 | 0 | 0.467 | 0.364 | 0.364 | 0.591 | 0.955 | 0.401 | 0.18 |
15 | NaN | 이창섭 | 15 | NC | 15 | 8 | 5 | 0 | 0 | 0 | ... | 3 | 3 | 0 | 0.000 | 0.000 | 0.375 | 0.000 | 0.375 | 0.286 | -0.01 |
16 | NaN | 김준완 | 16 | NC | 30 | 54 | 44 | 10 | 0 | 12 | ... | 10 | 10 | 2 | 0.294 | 0.227 | 0.370 | 0.227 | 0.597 | 0.308 | -0.04 |
17 | NaN | 강구성 | 17 | NC | 4 | 5 | 5 | 1 | 0 | 0 | ... | 0 | 0 | 0 | 0.200 | 0.200 | 0.200 | 0.400 | 0.600 | 0.242 | -0.04 |
18 | NaN | 강민국 | 18 | NC | 1 | 2 | 2 | 0 | 0 | 0 | ... | 0 | 1 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.06 |
19 | NaN | 김태진 | 19 | NC | 1 | 3 | 3 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.09 |
20 rows × 21 columns
# NaN을 2015로 채운다.
nc15 = nc15.fillna(2015)
# 인덱스 다시 설정.
nc15.reset_index()
nc15 = nc15.set_index(['시즌', '선수명'])
# 다시 복구 완료.
nc15
index | 팀명 | 경기 | 타석 | 타수 | 안타 | 홈런 | 득점 | 타점 | 볼넷 | 삼진 | 도루 | BABIP | 타율 | 출루율 | 장타율 | OPS | wOBA | WAR | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
시즌 | 선수명 | |||||||||||||||||||
2015.0 | 테임즈 | 0 | NC | 142 | 595 | 472 | 180 | 47 | 130 | 140 | 103 | 91 | 40 | 0.390 | 0.381 | 0.497 | 0.790 | 1.287 | 0.520 | 11.73 |
나성범 | 1 | NC | 144 | 622 | 564 | 184 | 28 | 112 | 135 | 33 | 127 | 23 | 0.374 | 0.326 | 0.373 | 0.553 | 0.926 | 0.390 | 4.46 | |
박민우 | 2 | NC | 141 | 617 | 520 | 158 | 3 | 111 | 47 | 73 | 108 | 46 | 0.373 | 0.304 | 0.399 | 0.404 | 0.803 | 0.364 | 3.52 | |
이호준 | 3 | NC | 131 | 518 | 449 | 132 | 24 | 48 | 110 | 61 | 102 | 0 | 0.332 | 0.294 | 0.381 | 0.510 | 0.891 | 0.381 | 2.19 | |
김종호 | 4 | NC | 133 | 486 | 424 | 125 | 4 | 90 | 36 | 44 | 65 | 41 | 0.338 | 0.295 | 0.364 | 0.394 | 0.758 | 0.340 | 1.03 | |
조영훈 | 5 | NC | 103 | 146 | 124 | 35 | 8 | 20 | 35 | 19 | 36 | 3 | 0.329 | 0.282 | 0.372 | 0.540 | 0.912 | 0.389 | 1.00 | |
손시헌 | 6 | NC | 140 | 508 | 440 | 108 | 13 | 56 | 58 | 36 | 66 | 3 | 0.260 | 0.245 | 0.319 | 0.398 | 0.717 | 0.316 | 0.85 | |
이종욱 | 7 | NC | 125 | 504 | 440 | 118 | 5 | 63 | 52 | 54 | 78 | 17 | 0.315 | 0.268 | 0.351 | 0.368 | 0.719 | 0.322 | 0.84 | |
모창민 | 8 | NC | 103 | 239 | 214 | 62 | 6 | 23 | 35 | 18 | 52 | 5 | 0.352 | 0.290 | 0.340 | 0.439 | 0.779 | 0.340 | 0.76 | |
지석훈 | 9 | NC | 137 | 466 | 415 | 111 | 11 | 53 | 46 | 23 | 85 | 4 | 0.311 | 0.267 | 0.328 | 0.383 | 0.711 | 0.317 | 0.51 | |
용덕한 | 10 | NC | 50 | 49 | 42 | 12 | 0 | 4 | 5 | 5 | 8 | 2 | 0.353 | 0.286 | 0.375 | 0.310 | 0.685 | 0.326 | 0.44 | |
최재원 | 11 | NC | 114 | 102 | 85 | 21 | 2 | 31 | 13 | 10 | 29 | 14 | 0.352 | 0.247 | 0.366 | 0.412 | 0.778 | 0.350 | 0.30 | |
박정준 | 12 | NC | 19 | 24 | 21 | 8 | 0 | 2 | 2 | 0 | 5 | 0 | 0.500 | 0.381 | 0.458 | 0.476 | 0.934 | 0.417 | 0.25 | |
김태군 | 13 | NC | 144 | 474 | 421 | 107 | 6 | 45 | 52 | 25 | 77 | 1 | 0.293 | 0.254 | 0.307 | 0.354 | 0.661 | 0.294 | 0.25 | |
조평호 | 14 | NC | 22 | 22 | 22 | 8 | 1 | 4 | 3 | 0 | 6 | 0 | 0.467 | 0.364 | 0.364 | 0.591 | 0.955 | 0.401 | 0.18 | |
이창섭 | 15 | NC | 15 | 8 | 5 | 0 | 0 | 0 | 0 | 3 | 3 | 0 | 0.000 | 0.000 | 0.375 | 0.000 | 0.375 | 0.286 | -0.01 | |
김준완 | 16 | NC | 30 | 54 | 44 | 10 | 0 | 12 | 2 | 10 | 10 | 2 | 0.294 | 0.227 | 0.370 | 0.227 | 0.597 | 0.308 | -0.04 | |
강구성 | 17 | NC | 4 | 5 | 5 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0.200 | 0.200 | 0.200 | 0.400 | 0.600 | 0.242 | -0.04 | |
강민국 | 18 | NC | 1 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.06 | |
김태진 | 19 | NC | 1 | 3 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.09 |
#nc13['시즌'] = 2013
인덱스열 = ['시즌', '선수명']
nc13 = nc13.reset_index().set_index(인덱스열)
#nc14['시즌'] = 2014
nc14 = nc14.reset_index().set_index(인덱스열)
## 세 시슨 데이터 합치기
nc = pd.concat([nc13, nc14, nc15])
# excel 내보내기
nc.to_excel('nc_all.xlsx')
# excel 다시 읽어오기
nc = pd.read_excel('nc_all.xlsx')
nc
# 시즌 데이터가.... 2013..NaN...2014..NaN...2015... --> NaN데이터를 동일한 값으로 채울수 없다.
# 전향보간 방식을 사용해서 채운다. 앞의 값으로 뒤의 값을 채운다.
시즌 | 선수명 | index | 팀명 | 경기 | 타석 | 타수 | 안타 | 홈런 | 득점 | ... | 볼넷 | 삼진 | 도루 | BABIP | 타율 | 출루율 | 장타율 | OPS | wOBA | WAR | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2013.0 | 모창민 | 0 | NC | 108 | 436 | 395 | 109 | 12 | 57 | ... | 37 | 68 | 16 | 0.307 | 0.276 | 0.339 | 0.443 | 0.782 | 0.353 | 2.31 |
1 | NaN | 이호준 | 1 | NC | 126 | 508 | 442 | 123 | 20 | 46 | ... | 60 | 109 | 2 | 0.324 | 0.278 | 0.362 | 0.475 | 0.837 | 0.373 | 1.85 |
2 | NaN | 김종호 | 2 | NC | 128 | 546 | 465 | 129 | 0 | 72 | ... | 57 | 100 | 50 | 0.352 | 0.277 | 0.376 | 0.333 | 0.709 | 0.339 | 1.55 |
3 | NaN | 나성범 | 3 | NC | 104 | 458 | 404 | 98 | 14 | 55 | ... | 33 | 95 | 12 | 0.279 | 0.243 | 0.319 | 0.416 | 0.735 | 0.329 | 1.50 |
4 | NaN | 조영훈 | 4 | NC | 120 | 426 | 380 | 107 | 6 | 38 | ... | 39 | 56 | 4 | 0.316 | 0.282 | 0.350 | 0.413 | 0.763 | 0.348 | 0.83 |
5 | NaN | 이현곤 | 5 | NC | 91 | 161 | 139 | 38 | 0 | 10 | ... | 16 | 14 | 2 | 0.304 | 0.273 | 0.361 | 0.324 | 0.685 | 0.327 | 0.52 |
6 | NaN | 이상호 | 6 | NC | 102 | 138 | 125 | 31 | 0 | 26 | ... | 9 | 21 | 24 | 0.298 | 0.248 | 0.299 | 0.320 | 0.619 | 0.289 | 0.16 |
7 | NaN | 강진성 | 7 | NC | 3 | 3 | 2 | 1 | 0 | 1 | ... | 1 | 0 | 0 | 0.500 | 0.500 | 0.667 | 1.000 | 1.667 | 0.671 | 0.10 |
8 | NaN | 조평호 | 8 | NC | 26 | 86 | 79 | 21 | 2 | 12 | ... | 6 | 24 | 1 | 0.358 | 0.266 | 0.318 | 0.418 | 0.736 | 0.329 | 0.09 |
9 | NaN | 박민우 | 9 | NC | 32 | 48 | 42 | 11 | 0 | 10 | ... | 5 | 7 | 9 | 0.306 | 0.262 | 0.333 | 0.286 | 0.619 | 0.296 | 0.07 |
10 | NaN | 박정준 | 10 | NC | 77 | 195 | 167 | 41 | 4 | 24 | ... | 23 | 44 | 4 | 0.303 | 0.246 | 0.335 | 0.353 | 0.688 | 0.320 | 0.06 |
11 | NaN | 이승호 | 11 | NC | 2 | 1 | 0 | 0 | 0 | 0 | ... | 1 | 0 | 1 | - | - | 1.000 | - | - | 0.712 | 0.06 |
12 | NaN | 마낙길 | 12 | NC | 24 | 31 | 29 | 9 | 0 | 5 | ... | 1 | 5 | 2 | 0.375 | 0.310 | 0.333 | 0.345 | 0.678 | 0.317 | -0.03 |
13 | NaN | 김성욱 | 13 | NC | 4 | 4 | 4 | 1 | 0 | 0 | ... | 0 | 2 | 0 | 0.500 | 0.250 | 0.250 | 0.250 | 0.500 | 0.234 | -0.03 |
14 | NaN | 강구성 | 14 | NC | 2 | 2 | 2 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.06 |
15 | NaN | 지석훈 | 15 | NC | 104 | 356 | 309 | 68 | 3 | 25 | ... | 30 | 82 | 2 | 0.285 | 0.220 | 0.300 | 0.330 | 0.630 | 0.293 | -0.09 |
16 | NaN | 김종찬 | 16 | NC | 5 | 7 | 7 | 1 | 0 | 0 | ... | 0 | 3 | 0 | 0.250 | 0.143 | 0.143 | 0.143 | 0.286 | 0.134 | -0.11 |
17 | NaN | 차화준 | 17 | NC | 58 | 121 | 106 | 24 | 1 | 18 | ... | 12 | 29 | 4 | 0.295 | 0.226 | 0.306 | 0.311 | 0.617 | 0.289 | -0.12 |
18 | NaN | 김동건 | 18 | NC | 7 | 17 | 16 | 2 | 1 | 1 | ... | 1 | 7 | 0 | 0.125 | 0.125 | 0.176 | 0.313 | 0.489 | 0.216 | -0.14 |
19 | NaN | 이창섭 | 19 | NC | 5 | 5 | 5 | 0 | 0 | 0 | ... | 0 | 2 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.14 |
20 | 2014.0 | 테임즈 | 0 | NC | 125 | 514 | 443 | 152 | 37 | 95 | ... | 58 | 99 | 11 | 0.367 | 0.343 | 0.422 | 0.688 | 1.11 | 0.456 | 6.36 |
21 | NaN | 나성범 | 1 | NC | 123 | 536 | 477 | 157 | 30 | 88 | ... | 43 | 128 | 14 | 0.397 | 0.329 | 0.400 | 0.597 | 0.997 | 0.424 | 5.94 |
22 | NaN | 박민우 | 2 | NC | 118 | 491 | 416 | 124 | 1 | 87 | ... | 56 | 89 | 50 | 0.373 | 0.298 | 0.392 | 0.399 | 0.791 | 0.365 | 2.73 |
23 | NaN | 손시헌 | 3 | NC | 97 | 361 | 307 | 90 | 5 | 39 | ... | 34 | 53 | 2 | 0.331 | 0.293 | 0.368 | 0.414 | 0.782 | 0.349 | 1.52 |
24 | NaN | 지석훈 | 4 | NC | 114 | 238 | 212 | 58 | 6 | 26 | ... | 16 | 46 | 1 | 0.323 | 0.274 | 0.340 | 0.462 | 0.802 | 0.352 | 0.97 |
25 | NaN | 이호준 | 5 | NC | 122 | 500 | 424 | 115 | 23 | 59 | ... | 67 | 104 | 2 | 0.305 | 0.271 | 0.371 | 0.481 | 0.852 | 0.369 | 0.88 |
26 | NaN | 권희동 | 6 | NC | 101 | 252 | 221 | 63 | 7 | 39 | ... | 25 | 43 | 6 | 0.324 | 0.285 | 0.363 | 0.443 | 0.806 | 0.353 | 0.62 |
27 | NaN | 모창민 | 7 | NC | 122 | 468 | 419 | 110 | 16 | 62 | ... | 37 | 82 | 14 | 0.289 | 0.263 | 0.320 | 0.413 | 0.733 | 0.319 | 0.17 |
28 | NaN | 이종욱 | 8 | NC | 124 | 495 | 438 | 126 | 6 | 73 | ... | 40 | 60 | 15 | 0.313 | 0.288 | 0.343 | 0.411 | 0.754 | 0.332 | 0.13 |
29 | NaN | 김준완 | 9 | NC | 6 | 5 | 4 | 2 | 0 | 1 | ... | 1 | 1 | 1 | 0.667 | 0.5 | 0.600 | 0.5 | 1.1 | 0.509 | 0.11 |
30 | NaN | 최재원 | 10 | NC | 2 | 2 | 1 | 0 | 0 | 1 | ... | 1 | 1 | 0 | - | 0 | 0.500 | 0 | 0.5 | 0.363 | 0.01 |
31 | NaN | 마낙길 | 11 | NC | 2 | 2 | 1 | 0 | 0 | 1 | ... | 1 | 0 | 0 | 0.000 | 0 | 0.500 | 0 | 0.5 | 0.363 | 0.01 |
32 | NaN | 조영훈 | 12 | NC | 92 | 124 | 111 | 29 | 6 | 15 | ... | 10 | 26 | 1 | 0.288 | 0.261 | 0.325 | 0.459 | 0.784 | 0.337 | -0.02 |
33 | NaN | 김태우 | 13 | NC | 4 | 5 | 5 | 1 | 0 | 0 | ... | 0 | 3 | 0 | 0.500 | 0.2 | 0.200 | 0.4 | 0.6 | 0.244 | -0.03 |
34 | NaN | 박명환* | 14 | NC | 2 | 1 | 1 | 0 | 0 | 0 | ... | 0 | 1 | 0 | - | 0 | 0.000 | 0 | 0 | 0.000 | -0.03 |
35 | NaN | 조평호 | 15 | NC | 2 | 2 | 2 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0.000 | 0 | 0.000 | 0 | 0 | 0.000 | -0.07 |
36 | NaN | 강민국 | 16 | NC | 6 | 3 | 3 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0.000 | 0 | 0.000 | 0 | 0 | 0.000 | -0.10 |
37 | NaN | 허준 | 17 | NC | 28 | 36 | 29 | 5 | 0 | 2 | ... | 5 | 10 | 0 | 0.263 | 0.172 | 0.294 | 0.276 | 0.57 | 0.268 | -0.11 |
38 | NaN | 김성욱 | 18 | NC | 26 | 26 | 23 | 4 | 1 | 6 | ... | 3 | 9 | 1 | 0.231 | 0.174 | 0.269 | 0.348 | 0.617 | 0.272 | -0.15 |
39 | NaN | 노진혁 | 19 | NC | 25 | 16 | 16 | 3 | 1 | 3 | ... | 0 | 7 | 0 | 0.250 | 0.188 | 0.188 | 0.375 | 0.563 | 0.231 | -0.18 |
40 | 2015.0 | 테임즈 | 0 | NC | 142 | 595 | 472 | 180 | 47 | 130 | ... | 103 | 91 | 40 | 0.39 | 0.381 | 0.497 | 0.79 | 1.287 | 0.520 | 11.73 |
41 | NaN | 나성범 | 1 | NC | 144 | 622 | 564 | 184 | 28 | 112 | ... | 33 | 127 | 23 | 0.374 | 0.326 | 0.373 | 0.553 | 0.926 | 0.390 | 4.46 |
42 | NaN | 박민우 | 2 | NC | 141 | 617 | 520 | 158 | 3 | 111 | ... | 73 | 108 | 46 | 0.373 | 0.304 | 0.399 | 0.404 | 0.803 | 0.364 | 3.52 |
43 | NaN | 이호준 | 3 | NC | 131 | 518 | 449 | 132 | 24 | 48 | ... | 61 | 102 | 0 | 0.332 | 0.294 | 0.381 | 0.51 | 0.891 | 0.381 | 2.19 |
44 | NaN | 김종호 | 4 | NC | 133 | 486 | 424 | 125 | 4 | 90 | ... | 44 | 65 | 41 | 0.338 | 0.295 | 0.364 | 0.394 | 0.758 | 0.340 | 1.03 |
45 | NaN | 조영훈 | 5 | NC | 103 | 146 | 124 | 35 | 8 | 20 | ... | 19 | 36 | 3 | 0.329 | 0.282 | 0.372 | 0.54 | 0.912 | 0.389 | 1.00 |
46 | NaN | 손시헌 | 6 | NC | 140 | 508 | 440 | 108 | 13 | 56 | ... | 36 | 66 | 3 | 0.26 | 0.245 | 0.319 | 0.398 | 0.717 | 0.316 | 0.85 |
47 | NaN | 이종욱 | 7 | NC | 125 | 504 | 440 | 118 | 5 | 63 | ... | 54 | 78 | 17 | 0.315 | 0.268 | 0.351 | 0.368 | 0.719 | 0.322 | 0.84 |
48 | NaN | 모창민 | 8 | NC | 103 | 239 | 214 | 62 | 6 | 23 | ... | 18 | 52 | 5 | 0.352 | 0.29 | 0.340 | 0.439 | 0.779 | 0.340 | 0.76 |
49 | NaN | 지석훈 | 9 | NC | 137 | 466 | 415 | 111 | 11 | 53 | ... | 23 | 85 | 4 | 0.311 | 0.267 | 0.328 | 0.383 | 0.711 | 0.317 | 0.51 |
50 | NaN | 용덕한 | 10 | NC | 50 | 49 | 42 | 12 | 0 | 4 | ... | 5 | 8 | 2 | 0.353 | 0.286 | 0.375 | 0.31 | 0.685 | 0.326 | 0.44 |
51 | NaN | 최재원 | 11 | NC | 114 | 102 | 85 | 21 | 2 | 31 | ... | 10 | 29 | 14 | 0.352 | 0.247 | 0.366 | 0.412 | 0.778 | 0.350 | 0.30 |
52 | NaN | 박정준 | 12 | NC | 19 | 24 | 21 | 8 | 0 | 2 | ... | 0 | 5 | 0 | 0.5 | 0.381 | 0.458 | 0.476 | 0.934 | 0.417 | 0.25 |
53 | NaN | 김태군 | 13 | NC | 144 | 474 | 421 | 107 | 6 | 45 | ... | 25 | 77 | 1 | 0.293 | 0.254 | 0.307 | 0.354 | 0.661 | 0.294 | 0.25 |
54 | NaN | 조평호 | 14 | NC | 22 | 22 | 22 | 8 | 1 | 4 | ... | 0 | 6 | 0 | 0.467 | 0.364 | 0.364 | 0.591 | 0.955 | 0.401 | 0.18 |
55 | NaN | 이창섭 | 15 | NC | 15 | 8 | 5 | 0 | 0 | 0 | ... | 3 | 3 | 0 | 0 | 0 | 0.375 | 0 | 0.375 | 0.286 | -0.01 |
56 | NaN | 김준완 | 16 | NC | 30 | 54 | 44 | 10 | 0 | 12 | ... | 10 | 10 | 2 | 0.294 | 0.227 | 0.370 | 0.227 | 0.597 | 0.308 | -0.04 |
57 | NaN | 강구성 | 17 | NC | 4 | 5 | 5 | 1 | 0 | 0 | ... | 0 | 0 | 0 | 0.2 | 0.2 | 0.200 | 0.4 | 0.6 | 0.242 | -0.04 |
58 | NaN | 강민국 | 18 | NC | 1 | 2 | 2 | 0 | 0 | 0 | ... | 0 | 1 | 0 | 0 | 0 | 0.000 | 0 | 0 | 0.000 | -0.06 |
59 | NaN | 김태진 | 19 | NC | 1 | 3 | 3 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0.000 | 0 | 0 | 0.000 | -0.09 |
60 rows × 21 columns
# nc.fillna?
#method : {'backfill', 'bfill', 'pad', 'ffill', None}, default None
# Method to use for filling holes in reindexed Series
# pad / ffill: propagate last valid observation forward to next valid
# backfill / bfill: use NEXT valid observation to fill gap
# 전향보간 방식의 옵션을 지정해서 채운다.
nc['시즌'].fillna(method='ffill')
0 2013.0 1 2013.0 2 2013.0 3 2013.0 4 2013.0 5 2013.0 6 2013.0 7 2013.0 8 2013.0 9 2013.0 10 2013.0 11 2013.0 12 2013.0 13 2013.0 14 2013.0 15 2013.0 16 2013.0 17 2013.0 18 2013.0 19 2013.0 20 2014.0 21 2014.0 22 2014.0 23 2014.0 24 2014.0 25 2014.0 26 2014.0 27 2014.0 28 2014.0 29 2014.0 30 2014.0 31 2014.0 32 2014.0 33 2014.0 34 2014.0 35 2014.0 36 2014.0 37 2014.0 38 2014.0 39 2014.0 40 2015.0 41 2015.0 42 2015.0 43 2015.0 44 2015.0 45 2015.0 46 2015.0 47 2015.0 48 2015.0 49 2015.0 50 2015.0 51 2015.0 52 2015.0 53 2015.0 54 2015.0 55 2015.0 56 2015.0 57 2015.0 58 2015.0 59 2015.0 Name: 시즌, dtype: float64
# 전향보간 방식의 옵션을 지정채우고 다시 스즌에 업데이트
nc['시즌'] = nc['시즌'].fillna(method='ffill')
nc
시즌 | 선수명 | index | 팀명 | 경기 | 타석 | 타수 | 안타 | 홈런 | 득점 | ... | 볼넷 | 삼진 | 도루 | BABIP | 타율 | 출루율 | 장타율 | OPS | wOBA | WAR | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2013.0 | 모창민 | 0 | NC | 108 | 436 | 395 | 109 | 12 | 57 | ... | 37 | 68 | 16 | 0.307 | 0.276 | 0.339 | 0.443 | 0.782 | 0.353 | 2.31 |
1 | 2013.0 | 이호준 | 1 | NC | 126 | 508 | 442 | 123 | 20 | 46 | ... | 60 | 109 | 2 | 0.324 | 0.278 | 0.362 | 0.475 | 0.837 | 0.373 | 1.85 |
2 | 2013.0 | 김종호 | 2 | NC | 128 | 546 | 465 | 129 | 0 | 72 | ... | 57 | 100 | 50 | 0.352 | 0.277 | 0.376 | 0.333 | 0.709 | 0.339 | 1.55 |
3 | 2013.0 | 나성범 | 3 | NC | 104 | 458 | 404 | 98 | 14 | 55 | ... | 33 | 95 | 12 | 0.279 | 0.243 | 0.319 | 0.416 | 0.735 | 0.329 | 1.50 |
4 | 2013.0 | 조영훈 | 4 | NC | 120 | 426 | 380 | 107 | 6 | 38 | ... | 39 | 56 | 4 | 0.316 | 0.282 | 0.350 | 0.413 | 0.763 | 0.348 | 0.83 |
5 | 2013.0 | 이현곤 | 5 | NC | 91 | 161 | 139 | 38 | 0 | 10 | ... | 16 | 14 | 2 | 0.304 | 0.273 | 0.361 | 0.324 | 0.685 | 0.327 | 0.52 |
6 | 2013.0 | 이상호 | 6 | NC | 102 | 138 | 125 | 31 | 0 | 26 | ... | 9 | 21 | 24 | 0.298 | 0.248 | 0.299 | 0.320 | 0.619 | 0.289 | 0.16 |
7 | 2013.0 | 강진성 | 7 | NC | 3 | 3 | 2 | 1 | 0 | 1 | ... | 1 | 0 | 0 | 0.500 | 0.500 | 0.667 | 1.000 | 1.667 | 0.671 | 0.10 |
8 | 2013.0 | 조평호 | 8 | NC | 26 | 86 | 79 | 21 | 2 | 12 | ... | 6 | 24 | 1 | 0.358 | 0.266 | 0.318 | 0.418 | 0.736 | 0.329 | 0.09 |
9 | 2013.0 | 박민우 | 9 | NC | 32 | 48 | 42 | 11 | 0 | 10 | ... | 5 | 7 | 9 | 0.306 | 0.262 | 0.333 | 0.286 | 0.619 | 0.296 | 0.07 |
10 | 2013.0 | 박정준 | 10 | NC | 77 | 195 | 167 | 41 | 4 | 24 | ... | 23 | 44 | 4 | 0.303 | 0.246 | 0.335 | 0.353 | 0.688 | 0.320 | 0.06 |
11 | 2013.0 | 이승호 | 11 | NC | 2 | 1 | 0 | 0 | 0 | 0 | ... | 1 | 0 | 1 | - | - | 1.000 | - | - | 0.712 | 0.06 |
12 | 2013.0 | 마낙길 | 12 | NC | 24 | 31 | 29 | 9 | 0 | 5 | ... | 1 | 5 | 2 | 0.375 | 0.310 | 0.333 | 0.345 | 0.678 | 0.317 | -0.03 |
13 | 2013.0 | 김성욱 | 13 | NC | 4 | 4 | 4 | 1 | 0 | 0 | ... | 0 | 2 | 0 | 0.500 | 0.250 | 0.250 | 0.250 | 0.500 | 0.234 | -0.03 |
14 | 2013.0 | 강구성 | 14 | NC | 2 | 2 | 2 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.06 |
15 | 2013.0 | 지석훈 | 15 | NC | 104 | 356 | 309 | 68 | 3 | 25 | ... | 30 | 82 | 2 | 0.285 | 0.220 | 0.300 | 0.330 | 0.630 | 0.293 | -0.09 |
16 | 2013.0 | 김종찬 | 16 | NC | 5 | 7 | 7 | 1 | 0 | 0 | ... | 0 | 3 | 0 | 0.250 | 0.143 | 0.143 | 0.143 | 0.286 | 0.134 | -0.11 |
17 | 2013.0 | 차화준 | 17 | NC | 58 | 121 | 106 | 24 | 1 | 18 | ... | 12 | 29 | 4 | 0.295 | 0.226 | 0.306 | 0.311 | 0.617 | 0.289 | -0.12 |
18 | 2013.0 | 김동건 | 18 | NC | 7 | 17 | 16 | 2 | 1 | 1 | ... | 1 | 7 | 0 | 0.125 | 0.125 | 0.176 | 0.313 | 0.489 | 0.216 | -0.14 |
19 | 2013.0 | 이창섭 | 19 | NC | 5 | 5 | 5 | 0 | 0 | 0 | ... | 0 | 2 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.14 |
20 | 2014.0 | 테임즈 | 0 | NC | 125 | 514 | 443 | 152 | 37 | 95 | ... | 58 | 99 | 11 | 0.367 | 0.343 | 0.422 | 0.688 | 1.11 | 0.456 | 6.36 |
21 | 2014.0 | 나성범 | 1 | NC | 123 | 536 | 477 | 157 | 30 | 88 | ... | 43 | 128 | 14 | 0.397 | 0.329 | 0.400 | 0.597 | 0.997 | 0.424 | 5.94 |
22 | 2014.0 | 박민우 | 2 | NC | 118 | 491 | 416 | 124 | 1 | 87 | ... | 56 | 89 | 50 | 0.373 | 0.298 | 0.392 | 0.399 | 0.791 | 0.365 | 2.73 |
23 | 2014.0 | 손시헌 | 3 | NC | 97 | 361 | 307 | 90 | 5 | 39 | ... | 34 | 53 | 2 | 0.331 | 0.293 | 0.368 | 0.414 | 0.782 | 0.349 | 1.52 |
24 | 2014.0 | 지석훈 | 4 | NC | 114 | 238 | 212 | 58 | 6 | 26 | ... | 16 | 46 | 1 | 0.323 | 0.274 | 0.340 | 0.462 | 0.802 | 0.352 | 0.97 |
25 | 2014.0 | 이호준 | 5 | NC | 122 | 500 | 424 | 115 | 23 | 59 | ... | 67 | 104 | 2 | 0.305 | 0.271 | 0.371 | 0.481 | 0.852 | 0.369 | 0.88 |
26 | 2014.0 | 권희동 | 6 | NC | 101 | 252 | 221 | 63 | 7 | 39 | ... | 25 | 43 | 6 | 0.324 | 0.285 | 0.363 | 0.443 | 0.806 | 0.353 | 0.62 |
27 | 2014.0 | 모창민 | 7 | NC | 122 | 468 | 419 | 110 | 16 | 62 | ... | 37 | 82 | 14 | 0.289 | 0.263 | 0.320 | 0.413 | 0.733 | 0.319 | 0.17 |
28 | 2014.0 | 이종욱 | 8 | NC | 124 | 495 | 438 | 126 | 6 | 73 | ... | 40 | 60 | 15 | 0.313 | 0.288 | 0.343 | 0.411 | 0.754 | 0.332 | 0.13 |
29 | 2014.0 | 김준완 | 9 | NC | 6 | 5 | 4 | 2 | 0 | 1 | ... | 1 | 1 | 1 | 0.667 | 0.5 | 0.600 | 0.5 | 1.1 | 0.509 | 0.11 |
30 | 2014.0 | 최재원 | 10 | NC | 2 | 2 | 1 | 0 | 0 | 1 | ... | 1 | 1 | 0 | - | 0 | 0.500 | 0 | 0.5 | 0.363 | 0.01 |
31 | 2014.0 | 마낙길 | 11 | NC | 2 | 2 | 1 | 0 | 0 | 1 | ... | 1 | 0 | 0 | 0.000 | 0 | 0.500 | 0 | 0.5 | 0.363 | 0.01 |
32 | 2014.0 | 조영훈 | 12 | NC | 92 | 124 | 111 | 29 | 6 | 15 | ... | 10 | 26 | 1 | 0.288 | 0.261 | 0.325 | 0.459 | 0.784 | 0.337 | -0.02 |
33 | 2014.0 | 김태우 | 13 | NC | 4 | 5 | 5 | 1 | 0 | 0 | ... | 0 | 3 | 0 | 0.500 | 0.2 | 0.200 | 0.4 | 0.6 | 0.244 | -0.03 |
34 | 2014.0 | 박명환* | 14 | NC | 2 | 1 | 1 | 0 | 0 | 0 | ... | 0 | 1 | 0 | - | 0 | 0.000 | 0 | 0 | 0.000 | -0.03 |
35 | 2014.0 | 조평호 | 15 | NC | 2 | 2 | 2 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0.000 | 0 | 0.000 | 0 | 0 | 0.000 | -0.07 |
36 | 2014.0 | 강민국 | 16 | NC | 6 | 3 | 3 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0.000 | 0 | 0.000 | 0 | 0 | 0.000 | -0.10 |
37 | 2014.0 | 허준 | 17 | NC | 28 | 36 | 29 | 5 | 0 | 2 | ... | 5 | 10 | 0 | 0.263 | 0.172 | 0.294 | 0.276 | 0.57 | 0.268 | -0.11 |
38 | 2014.0 | 김성욱 | 18 | NC | 26 | 26 | 23 | 4 | 1 | 6 | ... | 3 | 9 | 1 | 0.231 | 0.174 | 0.269 | 0.348 | 0.617 | 0.272 | -0.15 |
39 | 2014.0 | 노진혁 | 19 | NC | 25 | 16 | 16 | 3 | 1 | 3 | ... | 0 | 7 | 0 | 0.250 | 0.188 | 0.188 | 0.375 | 0.563 | 0.231 | -0.18 |
40 | 2015.0 | 테임즈 | 0 | NC | 142 | 595 | 472 | 180 | 47 | 130 | ... | 103 | 91 | 40 | 0.39 | 0.381 | 0.497 | 0.79 | 1.287 | 0.520 | 11.73 |
41 | 2015.0 | 나성범 | 1 | NC | 144 | 622 | 564 | 184 | 28 | 112 | ... | 33 | 127 | 23 | 0.374 | 0.326 | 0.373 | 0.553 | 0.926 | 0.390 | 4.46 |
42 | 2015.0 | 박민우 | 2 | NC | 141 | 617 | 520 | 158 | 3 | 111 | ... | 73 | 108 | 46 | 0.373 | 0.304 | 0.399 | 0.404 | 0.803 | 0.364 | 3.52 |
43 | 2015.0 | 이호준 | 3 | NC | 131 | 518 | 449 | 132 | 24 | 48 | ... | 61 | 102 | 0 | 0.332 | 0.294 | 0.381 | 0.51 | 0.891 | 0.381 | 2.19 |
44 | 2015.0 | 김종호 | 4 | NC | 133 | 486 | 424 | 125 | 4 | 90 | ... | 44 | 65 | 41 | 0.338 | 0.295 | 0.364 | 0.394 | 0.758 | 0.340 | 1.03 |
45 | 2015.0 | 조영훈 | 5 | NC | 103 | 146 | 124 | 35 | 8 | 20 | ... | 19 | 36 | 3 | 0.329 | 0.282 | 0.372 | 0.54 | 0.912 | 0.389 | 1.00 |
46 | 2015.0 | 손시헌 | 6 | NC | 140 | 508 | 440 | 108 | 13 | 56 | ... | 36 | 66 | 3 | 0.26 | 0.245 | 0.319 | 0.398 | 0.717 | 0.316 | 0.85 |
47 | 2015.0 | 이종욱 | 7 | NC | 125 | 504 | 440 | 118 | 5 | 63 | ... | 54 | 78 | 17 | 0.315 | 0.268 | 0.351 | 0.368 | 0.719 | 0.322 | 0.84 |
48 | 2015.0 | 모창민 | 8 | NC | 103 | 239 | 214 | 62 | 6 | 23 | ... | 18 | 52 | 5 | 0.352 | 0.29 | 0.340 | 0.439 | 0.779 | 0.340 | 0.76 |
49 | 2015.0 | 지석훈 | 9 | NC | 137 | 466 | 415 | 111 | 11 | 53 | ... | 23 | 85 | 4 | 0.311 | 0.267 | 0.328 | 0.383 | 0.711 | 0.317 | 0.51 |
50 | 2015.0 | 용덕한 | 10 | NC | 50 | 49 | 42 | 12 | 0 | 4 | ... | 5 | 8 | 2 | 0.353 | 0.286 | 0.375 | 0.31 | 0.685 | 0.326 | 0.44 |
51 | 2015.0 | 최재원 | 11 | NC | 114 | 102 | 85 | 21 | 2 | 31 | ... | 10 | 29 | 14 | 0.352 | 0.247 | 0.366 | 0.412 | 0.778 | 0.350 | 0.30 |
52 | 2015.0 | 박정준 | 12 | NC | 19 | 24 | 21 | 8 | 0 | 2 | ... | 0 | 5 | 0 | 0.5 | 0.381 | 0.458 | 0.476 | 0.934 | 0.417 | 0.25 |
53 | 2015.0 | 김태군 | 13 | NC | 144 | 474 | 421 | 107 | 6 | 45 | ... | 25 | 77 | 1 | 0.293 | 0.254 | 0.307 | 0.354 | 0.661 | 0.294 | 0.25 |
54 | 2015.0 | 조평호 | 14 | NC | 22 | 22 | 22 | 8 | 1 | 4 | ... | 0 | 6 | 0 | 0.467 | 0.364 | 0.364 | 0.591 | 0.955 | 0.401 | 0.18 |
55 | 2015.0 | 이창섭 | 15 | NC | 15 | 8 | 5 | 0 | 0 | 0 | ... | 3 | 3 | 0 | 0 | 0 | 0.375 | 0 | 0.375 | 0.286 | -0.01 |
56 | 2015.0 | 김준완 | 16 | NC | 30 | 54 | 44 | 10 | 0 | 12 | ... | 10 | 10 | 2 | 0.294 | 0.227 | 0.370 | 0.227 | 0.597 | 0.308 | -0.04 |
57 | 2015.0 | 강구성 | 17 | NC | 4 | 5 | 5 | 1 | 0 | 0 | ... | 0 | 0 | 0 | 0.2 | 0.2 | 0.200 | 0.4 | 0.6 | 0.242 | -0.04 |
58 | 2015.0 | 강민국 | 18 | NC | 1 | 2 | 2 | 0 | 0 | 0 | ... | 0 | 1 | 0 | 0 | 0 | 0.000 | 0 | 0 | 0.000 | -0.06 |
59 | 2015.0 | 김태진 | 19 | NC | 1 | 3 | 3 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0.000 | 0 | 0 | 0.000 | -0.09 |
60 rows × 21 columns
#계층색인(2개 이상의 칼럼 리스트를 색으로 사용)
nc = nc.set_index(['시즌', '선수명'])
안타홈런 = nc[['안타', '홈런']]
안타홈런
안타 | 홈런 | ||
---|---|---|---|
시즌 | 선수명 | ||
2013.0 | 모창민 | 109 | 12 |
이호준 | 123 | 20 | |
김종호 | 129 | 0 | |
나성범 | 98 | 14 | |
조영훈 | 107 | 6 | |
이현곤 | 38 | 0 | |
이상호 | 31 | 0 | |
강진성 | 1 | 0 | |
조평호 | 21 | 2 | |
박민우 | 11 | 0 | |
박정준 | 41 | 4 | |
이승호 | 0 | 0 | |
마낙길 | 9 | 0 | |
김성욱 | 1 | 0 | |
강구성 | 0 | 0 | |
지석훈 | 68 | 3 | |
김종찬 | 1 | 0 | |
차화준 | 24 | 1 | |
김동건 | 2 | 1 | |
이창섭 | 0 | 0 | |
2014.0 | 테임즈 | 152 | 37 |
나성범 | 157 | 30 | |
박민우 | 124 | 1 | |
손시헌 | 90 | 5 | |
지석훈 | 58 | 6 | |
이호준 | 115 | 23 | |
권희동 | 63 | 7 | |
모창민 | 110 | 16 | |
이종욱 | 126 | 6 | |
김준완 | 2 | 0 | |
최재원 | 0 | 0 | |
마낙길 | 0 | 0 | |
조영훈 | 29 | 6 | |
김태우 | 1 | 0 | |
박명환* | 0 | 0 | |
조평호 | 0 | 0 | |
강민국 | 0 | 0 | |
허준 | 5 | 0 | |
김성욱 | 4 | 1 | |
노진혁 | 3 | 1 | |
2015.0 | 테임즈 | 180 | 47 |
나성범 | 184 | 28 | |
박민우 | 158 | 3 | |
이호준 | 132 | 24 | |
김종호 | 125 | 4 | |
조영훈 | 35 | 8 | |
손시헌 | 108 | 13 | |
이종욱 | 118 | 5 | |
모창민 | 62 | 6 | |
지석훈 | 111 | 11 | |
용덕한 | 12 | 0 | |
최재원 | 21 | 2 | |
박정준 | 8 | 0 | |
김태군 | 107 | 6 | |
조평호 | 8 | 1 | |
이창섭 | 0 | 0 | |
김준완 | 10 | 0 | |
강구성 | 1 | 0 | |
강민국 | 0 | 0 | |
김태진 | 0 | 0 |
# 계층색인으로 리인덱싱
테나 = 안타홈런.reindex(['테임즈', '나성범'], level='선수명')
테나
안타 | 홈런 | ||
---|---|---|---|
시즌 | 선수명 | ||
2013.0 | 나성범 | 98 | 14 |
2014.0 | 테임즈 | 152 | 37 |
나성범 | 157 | 30 | |
2015.0 | 테임즈 | 180 | 47 |
나성범 | 184 | 28 |
# unstack: 지정된 칼럼의 값을 열로 재배치
테나.unstack('시즌')
안타 | 홈런 | |||||
---|---|---|---|---|---|---|
시즌 | 2013.0 | 2014.0 | 2015.0 | 2013.0 | 2014.0 | 2015.0 |
선수명 | ||||||
테임즈 | NaN | 152.0 | 180.0 | NaN | 37.0 | 47.0 |
나성범 | 98.0 | 157.0 | 184.0 | 14.0 | 30.0 | 28.0 |
테나.unstack('선수명')
안타 | 홈런 | |||
---|---|---|---|---|
선수명 | 테임즈 | 나성범 | 테임즈 | 나성범 |
시즌 | ||||
2013.0 | NaN | 98.0 | NaN | 14.0 |
2014.0 | 152.0 | 157.0 | 37.0 | 30.0 |
2015.0 | 180.0 | 184.0 | 47.0 | 28.0 |
ser = Series(['a', 'b', 'c'], index=[3,2,1])
ser
3 a 2 b 1 c dtype: object
# 정수 색인의 모호함. (순서인지 인덱스 값인지를 모호하다.)
ser[1]
# 색인이 1인 것을 가져온다. 두번째 원소를 선택하고자 한다면....
'c'
# 두번째 항목을 선택하기 위해서 iloc 사용.
ser.iloc[1]
'b'
## 따라서 색인은 정수라고 하더라도 값으로 인식하는 것이 좋다.
# python for data analysis 213페이지 참조
# 포멧이 ... 일정치 않은 경우
pd.read_csv('data/ex4.csv')
# hey! | ||||
---|---|---|---|---|
a | b | c | d | message |
# just wanted to make things more difficult for you | NaN | NaN | NaN | NaN |
# who reads CSV files with computers | anyway? | NaN | NaN | NaN |
1 | 2 | 3 | 4 | hello |
5 | 6 | 7 | 8 | world |
9 | 10 | 11 | 12 | foo |
# 특정행을 스킵
pd.read_csv('data/ex4.csv', skiprows=[0,2,3])
a | b | c | d | message | |
---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | hello |
1 | 5 | 6 | 7 | 8 | world |
2 | 9 | 10 | 11 | 12 | foo |
# 주석 처리 comment : #으로 시작하는 행 스킵
pd.read_csv('data/ex4.csv', comment='#')
a | b | c | d | message | |
---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | hello |
1 | 5 | 6 | 7 | 8 | world |
2 | 9 | 10 | 11 | 12 | foo |
# nrows 옵션: 지정된 행의 수만큼만 읽어 온다.
pd.read_csv('data/us_presidental.csv', nrows=5)
cmte_id | cand_id | cand_nm | contbr_nm | contbr_city | contbr_st | contbr_zip | contbr_employer | contbr_occupation | contb_receipt_amt | contb_receipt_dt | receipt_desc | memo_cd | memo_text | form_tp | file_num | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | C00410118 | P20002978 | Bachmann, Michelle | HARVEY, WILLIAM | MOBILE | AL | 366010290 | RETIRED | RETIRED | 250 | 20-JUN-11 | NaN | NaN | NaN | SA17A | 736166 |
1 | C00410118 | P20002978 | Bachmann, Michelle | HARVEY, WILLIAM | MOBILE | AL | 366010290 | RETIRED | RETIRED | 50 | 23-JUN-11 | NaN | NaN | NaN | SA17A | 736166 |
2 | C00410118 | P20002978 | Bachmann, Michelle | SMITH, LANIER | LANETT | AL | 368633403 | INFORMATION REQUESTED | INFORMATION REQUESTED | 250 | 05-JUL-11 | NaN | NaN | NaN | SA17A | 749073 |
3 | C00410118 | P20002978 | Bachmann, Michelle | BLEVINS, DARONDA | PIGGOTT | AR | 724548253 | NONE | RETIRED | 250 | 01-AUG-11 | NaN | NaN | NaN | SA17A | 749073 |
4 | C00410118 | P20002978 | Bachmann, Michelle | WARDENBURG, HAROLD | HOT SPRINGS NATION | AR | 719016467 | NONE | RETIRED | 300 | 20-JUN-11 | NaN | NaN | NaN | SA17A | 736166 |
# chunksize 옵션: 여러조각으로 나누어서 읽고자 할때 : 단위는 행의 갯수...
chunker = pd.read_csv('data/us_presidental.csv', chunksize=1000)
chunker
<pandas.io.parsers.TextFileReader at 0x2e3b2194c18>
## chunker에서 하나씩 꺼내서 사용 한다. chunker는 TextFileReader 객체이다.
## 아래와 같이 루프를 돌면서 파일을 1000개 라인씩 읽으면서 처리 한다.
for frame in chunker:
pass
pd.read_excel('data/NC Dinos.xlsx')
# 이렇게 실행하면 첫번째 sheet만 읽어 온다.
Unnamed: 0 | 선수명 | 팀명 | 경기 | 타석 | 타수 | 안타 | 홈런 | 득점 | 타점 | 볼넷 | 삼진 | 도루 | BABIP | 타율 | 출루율 | 장타율 | OPS | wOBA | WAR | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 모창민 | NC | 108 | 436 | 395 | 109 | 12 | 57 | 51 | 37 | 68 | 16 | 0.307 | 0.276 | 0.339 | 0.443 | 0.782 | 0.353 | 2.31 |
1 | 1 | 이호준 | NC | 126 | 508 | 442 | 123 | 20 | 46 | 87 | 60 | 109 | 2 | 0.324 | 0.278 | 0.362 | 0.475 | 0.837 | 0.373 | 1.85 |
2 | 2 | 김종호 | NC | 128 | 546 | 465 | 129 | 0 | 72 | 22 | 57 | 100 | 50 | 0.352 | 0.277 | 0.376 | 0.333 | 0.709 | 0.339 | 1.55 |
3 | 3 | 나성범 | NC | 104 | 458 | 404 | 98 | 14 | 55 | 64 | 33 | 95 | 12 | 0.279 | 0.243 | 0.319 | 0.416 | 0.735 | 0.329 | 1.50 |
4 | 4 | 조영훈 | NC | 120 | 426 | 380 | 107 | 6 | 38 | 39 | 39 | 56 | 4 | 0.316 | 0.282 | 0.350 | 0.413 | 0.763 | 0.348 | 0.83 |
5 | 5 | 이현곤 | NC | 91 | 161 | 139 | 38 | 0 | 10 | 9 | 16 | 14 | 2 | 0.304 | 0.273 | 0.361 | 0.324 | 0.685 | 0.327 | 0.52 |
6 | 6 | 이상호 | NC | 102 | 138 | 125 | 31 | 0 | 26 | 13 | 9 | 21 | 24 | 0.298 | 0.248 | 0.299 | 0.320 | 0.619 | 0.289 | 0.16 |
7 | 7 | 강진성 | NC | 3 | 3 | 2 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0.500 | 0.500 | 0.667 | 1.000 | 1.667 | 0.671 | 0.10 |
8 | 8 | 조평호 | NC | 26 | 86 | 79 | 21 | 2 | 12 | 7 | 6 | 24 | 1 | 0.358 | 0.266 | 0.318 | 0.418 | 0.736 | 0.329 | 0.09 |
9 | 9 | 박민우 | NC | 32 | 48 | 42 | 11 | 0 | 10 | 6 | 5 | 7 | 9 | 0.306 | 0.262 | 0.333 | 0.286 | 0.619 | 0.296 | 0.07 |
10 | 10 | 박정준 | NC | 77 | 195 | 167 | 41 | 4 | 24 | 21 | 23 | 44 | 4 | 0.303 | 0.246 | 0.335 | 0.353 | 0.688 | 0.320 | 0.06 |
11 | 11 | 이승호 | NC | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | - | - | 1.000 | - | - | 0.712 | 0.06 |
12 | 12 | 마낙길 | NC | 24 | 31 | 29 | 9 | 0 | 5 | 0 | 1 | 5 | 2 | 0.375 | 0.310 | 0.333 | 0.345 | 0.678 | 0.317 | -0.03 |
13 | 13 | 김성욱 | NC | 4 | 4 | 4 | 1 | 0 | 0 | 1 | 0 | 2 | 0 | 0.500 | 0.250 | 0.250 | 0.250 | 0.500 | 0.234 | -0.03 |
14 | 14 | 강구성 | NC | 2 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.06 |
15 | 15 | 지석훈 | NC | 104 | 356 | 309 | 68 | 3 | 25 | 35 | 30 | 82 | 2 | 0.285 | 0.220 | 0.300 | 0.330 | 0.630 | 0.293 | -0.09 |
16 | 16 | 김종찬 | NC | 5 | 7 | 7 | 1 | 0 | 0 | 0 | 0 | 3 | 0 | 0.250 | 0.143 | 0.143 | 0.143 | 0.286 | 0.134 | -0.11 |
17 | 17 | 차화준 | NC | 58 | 121 | 106 | 24 | 1 | 18 | 7 | 12 | 29 | 4 | 0.295 | 0.226 | 0.306 | 0.311 | 0.617 | 0.289 | -0.12 |
18 | 18 | 김동건 | NC | 7 | 17 | 16 | 2 | 1 | 1 | 1 | 1 | 7 | 0 | 0.125 | 0.125 | 0.176 | 0.313 | 0.489 | 0.216 | -0.14 |
19 | 19 | 이창섭 | NC | 5 | 5 | 5 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.14 |
# 여러 sheet읽어 오기 (sheetname 옵션을 사용, 특정 sheet이름을 작성하거나
# None으로 해서 모든 sheet를 읽어 올 수 있다. )
sheets = pd.read_excel('data/NC Dinos.xlsx', sheetname=None)
C:\ProgramData\Anaconda3\lib\site-packages\pandas\util\_decorators.py:188: FutureWarning: The `sheetname` keyword is deprecated, use `sheet_name` instead return func(*args, **kwargs)
type(sheets)
collections.OrderedDict
# 2015 시트 가져오기.
sheets['2015'][:10]
Unnamed: 0 | 선수명 | 팀명 | 경기 | 타석 | 타수 | 안타 | 홈런 | 득점 | 타점 | 볼넷 | 삼진 | 도루 | BABIP | 타율 | 출루율 | 장타율 | OPS | wOBA | WAR | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 테임즈 | NC | 142 | 595 | 472 | 180 | 47 | 130 | 140 | 103 | 91 | 40 | 0.390 | 0.381 | 0.497 | 0.790 | 1.287 | 0.520 | 11.73 |
1 | 1 | 나성범 | NC | 144 | 622 | 564 | 184 | 28 | 112 | 135 | 33 | 127 | 23 | 0.374 | 0.326 | 0.373 | 0.553 | 0.926 | 0.390 | 4.46 |
2 | 2 | 박민우 | NC | 141 | 617 | 520 | 158 | 3 | 111 | 47 | 73 | 108 | 46 | 0.373 | 0.304 | 0.399 | 0.404 | 0.803 | 0.364 | 3.52 |
3 | 3 | 이호준 | NC | 131 | 518 | 449 | 132 | 24 | 48 | 110 | 61 | 102 | 0 | 0.332 | 0.294 | 0.381 | 0.510 | 0.891 | 0.381 | 2.19 |
4 | 4 | 김종호 | NC | 133 | 486 | 424 | 125 | 4 | 90 | 36 | 44 | 65 | 41 | 0.338 | 0.295 | 0.364 | 0.394 | 0.758 | 0.340 | 1.03 |
5 | 5 | 조영훈 | NC | 103 | 146 | 124 | 35 | 8 | 20 | 35 | 19 | 36 | 3 | 0.329 | 0.282 | 0.372 | 0.540 | 0.912 | 0.389 | 1.00 |
6 | 6 | 손시헌 | NC | 140 | 508 | 440 | 108 | 13 | 56 | 58 | 36 | 66 | 3 | 0.260 | 0.245 | 0.319 | 0.398 | 0.717 | 0.316 | 0.85 |
7 | 7 | 이종욱 | NC | 125 | 504 | 440 | 118 | 5 | 63 | 52 | 54 | 78 | 17 | 0.315 | 0.268 | 0.351 | 0.368 | 0.719 | 0.322 | 0.84 |
8 | 8 | 모창민 | NC | 103 | 239 | 214 | 62 | 6 | 23 | 35 | 18 | 52 | 5 | 0.352 | 0.290 | 0.340 | 0.439 | 0.779 | 0.340 | 0.76 |
9 | 9 | 지석훈 | NC | 137 | 466 | 415 | 111 | 11 | 53 | 46 | 23 | 85 | 4 | 0.311 | 0.267 | 0.328 | 0.383 | 0.711 | 0.317 | 0.51 |
# 시트 합치기
pd.concat(sheets)
Unnamed: 0 | 선수명 | 팀명 | 경기 | 타석 | 타수 | 안타 | 홈런 | 득점 | 타점 | 볼넷 | 삼진 | 도루 | BABIP | 타율 | 출루율 | 장타율 | OPS | wOBA | WAR | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2013 | 0 | 0 | 모창민 | NC | 108 | 436 | 395 | 109 | 12 | 57 | 51 | 37 | 68 | 16 | 0.307 | 0.276 | 0.339 | 0.443 | 0.782 | 0.353 | 2.31 |
1 | 1 | 이호준 | NC | 126 | 508 | 442 | 123 | 20 | 46 | 87 | 60 | 109 | 2 | 0.324 | 0.278 | 0.362 | 0.475 | 0.837 | 0.373 | 1.85 | |
2 | 2 | 김종호 | NC | 128 | 546 | 465 | 129 | 0 | 72 | 22 | 57 | 100 | 50 | 0.352 | 0.277 | 0.376 | 0.333 | 0.709 | 0.339 | 1.55 | |
3 | 3 | 나성범 | NC | 104 | 458 | 404 | 98 | 14 | 55 | 64 | 33 | 95 | 12 | 0.279 | 0.243 | 0.319 | 0.416 | 0.735 | 0.329 | 1.50 | |
4 | 4 | 조영훈 | NC | 120 | 426 | 380 | 107 | 6 | 38 | 39 | 39 | 56 | 4 | 0.316 | 0.282 | 0.350 | 0.413 | 0.763 | 0.348 | 0.83 | |
5 | 5 | 이현곤 | NC | 91 | 161 | 139 | 38 | 0 | 10 | 9 | 16 | 14 | 2 | 0.304 | 0.273 | 0.361 | 0.324 | 0.685 | 0.327 | 0.52 | |
6 | 6 | 이상호 | NC | 102 | 138 | 125 | 31 | 0 | 26 | 13 | 9 | 21 | 24 | 0.298 | 0.248 | 0.299 | 0.320 | 0.619 | 0.289 | 0.16 | |
7 | 7 | 강진성 | NC | 3 | 3 | 2 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0.500 | 0.500 | 0.667 | 1.000 | 1.667 | 0.671 | 0.10 | |
8 | 8 | 조평호 | NC | 26 | 86 | 79 | 21 | 2 | 12 | 7 | 6 | 24 | 1 | 0.358 | 0.266 | 0.318 | 0.418 | 0.736 | 0.329 | 0.09 | |
9 | 9 | 박민우 | NC | 32 | 48 | 42 | 11 | 0 | 10 | 6 | 5 | 7 | 9 | 0.306 | 0.262 | 0.333 | 0.286 | 0.619 | 0.296 | 0.07 | |
10 | 10 | 박정준 | NC | 77 | 195 | 167 | 41 | 4 | 24 | 21 | 23 | 44 | 4 | 0.303 | 0.246 | 0.335 | 0.353 | 0.688 | 0.320 | 0.06 | |
11 | 11 | 이승호 | NC | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | - | - | 1.000 | - | - | 0.712 | 0.06 | |
12 | 12 | 마낙길 | NC | 24 | 31 | 29 | 9 | 0 | 5 | 0 | 1 | 5 | 2 | 0.375 | 0.310 | 0.333 | 0.345 | 0.678 | 0.317 | -0.03 | |
13 | 13 | 김성욱 | NC | 4 | 4 | 4 | 1 | 0 | 0 | 1 | 0 | 2 | 0 | 0.500 | 0.250 | 0.250 | 0.250 | 0.500 | 0.234 | -0.03 | |
14 | 14 | 강구성 | NC | 2 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.06 | |
15 | 15 | 지석훈 | NC | 104 | 356 | 309 | 68 | 3 | 25 | 35 | 30 | 82 | 2 | 0.285 | 0.220 | 0.300 | 0.330 | 0.630 | 0.293 | -0.09 | |
16 | 16 | 김종찬 | NC | 5 | 7 | 7 | 1 | 0 | 0 | 0 | 0 | 3 | 0 | 0.250 | 0.143 | 0.143 | 0.143 | 0.286 | 0.134 | -0.11 | |
17 | 17 | 차화준 | NC | 58 | 121 | 106 | 24 | 1 | 18 | 7 | 12 | 29 | 4 | 0.295 | 0.226 | 0.306 | 0.311 | 0.617 | 0.289 | -0.12 | |
18 | 18 | 김동건 | NC | 7 | 17 | 16 | 2 | 1 | 1 | 1 | 1 | 7 | 0 | 0.125 | 0.125 | 0.176 | 0.313 | 0.489 | 0.216 | -0.14 | |
19 | 19 | 이창섭 | NC | 5 | 5 | 5 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | -0.14 | |
2014 | 0 | 0 | 테임즈 | NC | 125 | 514 | 443 | 152 | 37 | 95 | 121 | 58 | 99 | 11 | 0.367 | 0.343 | 0.422 | 0.688 | 1.11 | 0.456 | 6.36 |
1 | 1 | 나성범 | NC | 123 | 536 | 477 | 157 | 30 | 88 | 101 | 43 | 128 | 14 | 0.397 | 0.329 | 0.400 | 0.597 | 0.997 | 0.424 | 5.94 | |
2 | 2 | 박민우 | NC | 118 | 491 | 416 | 124 | 1 | 87 | 40 | 56 | 89 | 50 | 0.373 | 0.298 | 0.392 | 0.399 | 0.791 | 0.365 | 2.73 | |
3 | 3 | 손시헌 | NC | 97 | 361 | 307 | 90 | 5 | 39 | 39 | 34 | 53 | 2 | 0.331 | 0.293 | 0.368 | 0.414 | 0.782 | 0.349 | 1.52 | |
4 | 4 | 지석훈 | NC | 114 | 238 | 212 | 58 | 6 | 26 | 34 | 16 | 46 | 1 | 0.323 | 0.274 | 0.340 | 0.462 | 0.802 | 0.352 | 0.97 | |
5 | 5 | 이호준 | NC | 122 | 500 | 424 | 115 | 23 | 59 | 78 | 67 | 104 | 2 | 0.305 | 0.271 | 0.371 | 0.481 | 0.852 | 0.369 | 0.88 | |
6 | 6 | 권희동 | NC | 101 | 252 | 221 | 63 | 7 | 39 | 36 | 25 | 43 | 6 | 0.324 | 0.285 | 0.363 | 0.443 | 0.806 | 0.353 | 0.62 | |
7 | 7 | 모창민 | NC | 122 | 468 | 419 | 110 | 16 | 62 | 72 | 37 | 82 | 14 | 0.289 | 0.263 | 0.320 | 0.413 | 0.733 | 0.319 | 0.17 | |
8 | 8 | 이종욱 | NC | 124 | 495 | 438 | 126 | 6 | 73 | 79 | 40 | 60 | 15 | 0.313 | 0.288 | 0.343 | 0.411 | 0.754 | 0.332 | 0.13 | |
9 | 9 | 김준완 | NC | 6 | 5 | 4 | 2 | 0 | 1 | 0 | 1 | 1 | 1 | 0.667 | 0.5 | 0.600 | 0.5 | 1.1 | 0.509 | 0.11 | |
10 | 10 | 최재원 | NC | 2 | 2 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | - | 0 | 0.500 | 0 | 0.5 | 0.363 | 0.01 | |
11 | 11 | 마낙길 | NC | 2 | 2 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0.000 | 0 | 0.500 | 0 | 0.5 | 0.363 | 0.01 | |
12 | 12 | 조영훈 | NC | 92 | 124 | 111 | 29 | 6 | 15 | 22 | 10 | 26 | 1 | 0.288 | 0.261 | 0.325 | 0.459 | 0.784 | 0.337 | -0.02 | |
13 | 13 | 김태우 | NC | 4 | 5 | 5 | 1 | 0 | 0 | 0 | 0 | 3 | 0 | 0.500 | 0.2 | 0.200 | 0.4 | 0.6 | 0.244 | -0.03 | |
14 | 14 | 박명환* | NC | 2 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | - | 0 | 0.000 | 0 | 0 | 0.000 | -0.03 | |
15 | 15 | 조평호 | NC | 2 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000 | 0 | 0.000 | 0 | 0 | 0.000 | -0.07 | |
16 | 16 | 강민국 | NC | 6 | 3 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000 | 0 | 0.000 | 0 | 0 | 0.000 | -0.10 | |
17 | 17 | 허준 | NC | 28 | 36 | 29 | 5 | 0 | 2 | 1 | 5 | 10 | 0 | 0.263 | 0.172 | 0.294 | 0.276 | 0.57 | 0.268 | -0.11 | |
18 | 18 | 김성욱 | NC | 26 | 26 | 23 | 4 | 1 | 6 | 1 | 3 | 9 | 1 | 0.231 | 0.174 | 0.269 | 0.348 | 0.617 | 0.272 | -0.15 | |
19 | 19 | 노진혁 | NC | 25 | 16 | 16 | 3 | 1 | 3 | 2 | 0 | 7 | 0 | 0.250 | 0.188 | 0.188 | 0.375 | 0.563 | 0.231 | -0.18 | |
2015 | 0 | 0 | 테임즈 | NC | 142 | 595 | 472 | 180 | 47 | 130 | 140 | 103 | 91 | 40 | 0.39 | 0.381 | 0.497 | 0.79 | 1.287 | 0.520 | 11.73 |
1 | 1 | 나성범 | NC | 144 | 622 | 564 | 184 | 28 | 112 | 135 | 33 | 127 | 23 | 0.374 | 0.326 | 0.373 | 0.553 | 0.926 | 0.390 | 4.46 | |
2 | 2 | 박민우 | NC | 141 | 617 | 520 | 158 | 3 | 111 | 47 | 73 | 108 | 46 | 0.373 | 0.304 | 0.399 | 0.404 | 0.803 | 0.364 | 3.52 | |
3 | 3 | 이호준 | NC | 131 | 518 | 449 | 132 | 24 | 48 | 110 | 61 | 102 | 0 | 0.332 | 0.294 | 0.381 | 0.51 | 0.891 | 0.381 | 2.19 | |
4 | 4 | 김종호 | NC | 133 | 486 | 424 | 125 | 4 | 90 | 36 | 44 | 65 | 41 | 0.338 | 0.295 | 0.364 | 0.394 | 0.758 | 0.340 | 1.03 | |
5 | 5 | 조영훈 | NC | 103 | 146 | 124 | 35 | 8 | 20 | 35 | 19 | 36 | 3 | 0.329 | 0.282 | 0.372 | 0.54 | 0.912 | 0.389 | 1.00 | |
6 | 6 | 손시헌 | NC | 140 | 508 | 440 | 108 | 13 | 56 | 58 | 36 | 66 | 3 | 0.26 | 0.245 | 0.319 | 0.398 | 0.717 | 0.316 | 0.85 | |
7 | 7 | 이종욱 | NC | 125 | 504 | 440 | 118 | 5 | 63 | 52 | 54 | 78 | 17 | 0.315 | 0.268 | 0.351 | 0.368 | 0.719 | 0.322 | 0.84 | |
8 | 8 | 모창민 | NC | 103 | 239 | 214 | 62 | 6 | 23 | 35 | 18 | 52 | 5 | 0.352 | 0.29 | 0.340 | 0.439 | 0.779 | 0.340 | 0.76 | |
9 | 9 | 지석훈 | NC | 137 | 466 | 415 | 111 | 11 | 53 | 46 | 23 | 85 | 4 | 0.311 | 0.267 | 0.328 | 0.383 | 0.711 | 0.317 | 0.51 | |
10 | 10 | 용덕한 | NC | 50 | 49 | 42 | 12 | 0 | 4 | 5 | 5 | 8 | 2 | 0.353 | 0.286 | 0.375 | 0.31 | 0.685 | 0.326 | 0.44 | |
11 | 11 | 최재원 | NC | 114 | 102 | 85 | 21 | 2 | 31 | 13 | 10 | 29 | 14 | 0.352 | 0.247 | 0.366 | 0.412 | 0.778 | 0.350 | 0.30 | |
12 | 12 | 박정준 | NC | 19 | 24 | 21 | 8 | 0 | 2 | 2 | 0 | 5 | 0 | 0.5 | 0.381 | 0.458 | 0.476 | 0.934 | 0.417 | 0.25 | |
13 | 13 | 김태군 | NC | 144 | 474 | 421 | 107 | 6 | 45 | 52 | 25 | 77 | 1 | 0.293 | 0.254 | 0.307 | 0.354 | 0.661 | 0.294 | 0.25 | |
14 | 14 | 조평호 | NC | 22 | 22 | 22 | 8 | 1 | 4 | 3 | 0 | 6 | 0 | 0.467 | 0.364 | 0.364 | 0.591 | 0.955 | 0.401 | 0.18 | |
15 | 15 | 이창섭 | NC | 15 | 8 | 5 | 0 | 0 | 0 | 0 | 3 | 3 | 0 | 0 | 0 | 0.375 | 0 | 0.375 | 0.286 | -0.01 | |
16 | 16 | 김준완 | NC | 30 | 54 | 44 | 10 | 0 | 12 | 2 | 10 | 10 | 2 | 0.294 | 0.227 | 0.370 | 0.227 | 0.597 | 0.308 | -0.04 | |
17 | 17 | 강구성 | NC | 4 | 5 | 5 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0.2 | 0.2 | 0.200 | 0.4 | 0.6 | 0.242 | -0.04 | |
18 | 18 | 강민국 | NC | 1 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0.000 | 0 | 0 | 0.000 | -0.06 | |
19 | 19 | 김태진 | NC | 1 | 3 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.000 | 0 | 0 | 0.000 | -0.09 |
## 한 파일에 여러 sheet로 나누어서 저장하기.
nc13, nc14, nc15 = sheets.values()
# 빈 excel 파일을 하나 생성 한다.
writer = pd.ExcelWriter('NC sheets.xlsx')
for 시트명, 프레임 in sheets.items():
프레임.to_excel(writer, 시트명)
# 오픈된 파일을 close 한다. (반.드.시.)
writer.close()
pd.read_json('data/foods-2011-10-03.json')
description | group | id | manufacturer | nutrients | portions | tags | |
---|---|---|---|---|---|---|---|
0 | Cheese, caraway | Dairy and Egg Products | 1008 | [{'value': 25.18, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}] | [] | |
1 | Cheese, cheddar | Dairy and Egg Products | 1009 | [{'value': 24.9, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup, diced', 'grams': ... | [] | |
2 | Cheese, edam | Dairy and Egg Products | 1018 | [{'value': 4.22, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [] | |
3 | Cheese, feta | Dairy and Egg Products | 1019 | [{'value': 5.2, 'units': 'g', 'description': '... | [{'amount': 1, 'unit': 'cup, crumbled', 'grams... | [] | |
4 | Cheese, mozzarella, part skim milk | Dairy and Egg Products | 1028 | [{'value': 3.27, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}] | [] | |
5 | Cheese, mozzarella, part skim milk, low moisture | Dairy and Egg Products | 1029 | [{'value': 3.7199999999999998, 'units': 'g', '... | [{'amount': 1, 'unit': 'cup, diced', 'grams': ... | [] | |
6 | Cheese, romano | Dairy and Egg Products | 1038 | [{'value': 31.8, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [] | |
7 | Cheese, roquefort | Dairy and Egg Products | 1039 | [{'value': 21.54, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [] | |
8 | Cheese spread, pasteurized process, american, ... | Dairy and Egg Products | 1048 | [{'value': 16.41, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'cup, diced', 'grams': ... | [] | |
9 | Cream, fluid, half and half | Dairy and Egg Products | 1049 | [{'value': 2.96, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 242.0},... | [] | |
10 | Sour dressing, non-butterfat, cultured, filled... | Dairy and Egg Products | 1058 | [{'value': 3.25, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 235.0},... | [] | |
11 | Milk, filled, fluid, with blend of hydrogenate... | Dairy and Egg Products | 1059 | [{'value': 3.33, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 244.0},... | [] | |
12 | Cream substitute, liquid, with lauric acid oil... | Dairy and Egg Products | 1068 | [{'value': 1.0, 'units': 'g', 'description': '... | [{'amount': 1, 'unit': 'container, individual'... | [] | |
13 | Cream substitute, powdered | Dairy and Egg Products | 1069 | [{'value': 4.79, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 94.0}, ... | [] | |
14 | Milk, producer, fluid, 3.7% milkfat | Dairy and Egg Products | 1078 | [{'value': 3.2800000000000002, 'units': 'g', '... | [{'amount': 1, 'unit': 'cup', 'grams': 244.0},... | [] | |
15 | Milk, reduced fat, fluid, 2% milkfat, with add... | Dairy and Egg Products | 1079 | None | [{'value': 3.3, 'units': 'g', 'description': '... | [{'amount': 1, 'unit': 'cup', 'grams': 244.0},... | [] |
16 | Milk, reduced fat, fluid, 2% milkfat, with add... | Dairy and Egg Products | 1080 | [{'value': 3.48, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 245.0},... | [] | |
17 | Milk, reduced fat, fluid, 2% milkfat, protein ... | Dairy and Egg Products | 1081 | [{'value': 3.95, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 246.0},... | [] | |
18 | Milk, lowfat, fluid, 1% milkfat, with added vi... | Dairy and Egg Products | 1082 | [{'value': 3.37, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 244.0},... | [] | |
19 | Milk, lowfat, fluid, 1% milkfat, with added no... | Dairy and Egg Products | 1083 | [{'value': 3.48, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 245.0},... | [] | |
20 | Milk, lowfat, fluid, 1% milkfat, protein forti... | Dairy and Egg Products | 1084 | [{'value': 3.93, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 246.0},... | [] | |
21 | Milk, nonfat, fluid, with added vitamin A and ... | Dairy and Egg Products | 1085 | [{'value': 3.37, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 245.0},... | [] | |
22 | Milk, nonfat, fluid, with added nonfat milk so... | Dairy and Egg Products | 1086 | [{'value': 3.5700000000000003, 'units': 'g', '... | [{'amount': 1, 'unit': 'cup', 'grams': 245.0},... | [] | |
23 | Milk, nonfat, fluid, protein fortified, with a... | Dairy and Egg Products | 1087 | [{'value': 3.96, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 246.0},... | [] | |
24 | Milk, buttermilk, fluid, cultured, lowfat | Dairy and Egg Products | 1088 | [{'value': 3.31, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 245.0},... | [] | |
25 | Milk, low sodium, fluid | Dairy and Egg Products | 1089 | [{'value': 3.1, 'units': 'g', 'description': '... | [{'amount': 1, 'unit': 'cup', 'grams': 244.0},... | [] | |
26 | Milk, dry, whole, with added vitamin D | Dairy and Egg Products | 1090 | [{'value': 26.32, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'cup', 'grams': 128.0},... | [] | |
27 | Milk, dry, nonfat, regular, without added vita... | Dairy and Egg Products | 1091 | [{'value': 36.16, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'cup', 'grams': 120.0},... | [] | |
28 | Milk, dry, nonfat, instant, with added vitamin... | Dairy and Egg Products | 1092 | [{'value': 35.1, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 68.0}, ... | [] | |
29 | Milk, dry, nonfat, calcium reduced | Dairy and Egg Products | 1093 | [{'value': 35.5, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [] | |
... | ... | ... | ... | ... | ... | ... | ... |
6606 | Beef, tenderloin, steak, separable lean only, ... | Beef Products | 23628 | [{'value': 29.01, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [URMIS #2203] | |
6607 | Beef, top sirloin, steak, separable lean only,... | Beef Products | 23629 | [{'value': 29.51, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [URMIS #2237] | |
6608 | Beef, short loin, top loin, steak, separable l... | Beef Products | 23630 | [{'value': 29.16, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [URMIS # 2213] | |
6609 | Beef, chuck, arm pot roast, separable lean onl... | Beef Products | 23631 | [{'value': 22.26, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [URMIS #1049] | |
6610 | Beef, brisket, flat half, separable lean only,... | Beef Products | 23632 | [{'value': 21.45, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [URMIS #1623] | |
6611 | Beef, chuck, arm pot roast, separable lean onl... | Beef Products | 23633 | [{'value': 34.6, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [URMIS #1049] | |
6612 | Beef, brisket, flat half, separable lean only,... | Beef Products | 23634 | [{'value': 33.18, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [URMIS #1623] | |
6613 | Beef, round, eye of round, roast, separable le... | Beef Products | 23635 | [{'value': 22.31, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [URMIS #1480] | |
6614 | Beef, round, top round, steak, separable lean ... | Beef Products | 23636 | [{'value': 23.13, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [URMIS #1553] | |
6615 | Beef, round, bottom round, roast, separable le... | Beef Products | 23637 | [{'value': 22.18, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [URMIS #1464] | |
6616 | Beef, rib, small end (ribs 10-12), separable l... | Beef Products | 23638 | [{'value': 29.58, 'units': 'g', 'description':... | [{'amount': 1, 'unit': 'oz', 'grams': 28.35}, ... | [] | |
6617 | CAMPBELL Soup Company, CAMPBELL'S Red and Whit... | Soups, Sauces, and Gravies | 27015 | Campbell Soup Co. | [{'value': 2.38, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 126.0},... | [] |
6618 | CAMPBELL Soup Company, CAMPBELL's Red and Whit... | Soups, Sauces, and Gravies | 27016 | Campbell Soup Co. | [{'value': 3.17, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 126.0},... | [] |
6619 | CAMPBELL Soup Company, CAMPBELL'S SELECT Soups... | Soups, Sauces, and Gravies | 27021 | Campbell Soup Co. | [{'value': 2.86, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 245.0},... | [] |
6620 | CAMPBELL Soup Company, CAMPBELL'S SOUP AT HAND... | Soups, Sauces, and Gravies | 27022 | Campbell Soup Co. | [{'value': 1.31, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'serving', 'grams': 305... | [] |
6621 | CAMPBELL Soup Company, CAMPBELL'S SOUP AT HAND... | Soups, Sauces, and Gravies | 27023 | Campbell Soup Co. | [{'value': 0.98, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'serving', 'grams': 305... | [] |
6622 | CAMPBELL Soup Company, CAMPBELL'S SELECT Gold ... | Soups, Sauces, and Gravies | 27024 | Campbell Soup Co. | [{'value': 2.04, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 245.0},... | [] |
6623 | CAMPBELL Soup Company, CAMPBELL'S SELECT Gold ... | Soups, Sauces, and Gravies | 27025 | Campbell Soup Co. | [{'value': 1.22, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 245.0},... | [] |
6624 | CAMPBELL Soup Company, CAMPBELL'S SELECT Gold ... | Soups, Sauces, and Gravies | 27026 | Campbell Soup Co. | [{'value': 1.22, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 245.0},... | [] |
6625 | CAMPBELL Soup Company, CAMPBELL'S Red and Whit... | Soups, Sauces, and Gravies | 27032 | Campbell Soup Co. | [{'value': 6.35, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup', 'grams': 126.0},... | [] |
6626 | CAMPBELL Soup Company, V8 Vegetable Juice, Ess... | Vegetables and Vegetable Products | 31010 | Campbell Soup Co. | [{'value': 0.8200000000000001, 'units': 'g', '... | [{'amount': 1, 'unit': 'oz', 'grams': 243.0}, ... | [] |
6627 | CAMPBELL Soup Company, V8 Vegetable Juice, Spi... | Vegetables and Vegetable Products | 31013 | Campbell Soup Co. | [{'value': 0.8200000000000001, 'units': 'g', '... | [{'amount': 1, 'unit': 'fl oz', 'grams': 243.0... | [] |
6628 | CAMPBELL Soup Company, PACE, Jalapenos Nacho S... | Vegetables and Vegetable Products | 31014 | Campbell Soup Co. | [{'value': 0.0, 'units': 'g', 'description': '... | [{'amount': 1, 'unit': 'oz', 'grams': 30.0}, {... | [] |
6629 | CAMPBELL Soup Company, V8 60% Vegetable Juice,... | Vegetables and Vegetable Products | 31016 | Campbell Soup Co. | [{'value': 0.41000000000000003, 'units': 'g', ... | [{'amount': 1, 'unit': 'fl oz', 'grams': 243.0... | [] |
6630 | CAMPBELL Soup Company, V8 Vegetable Juice, Low... | Vegetables and Vegetable Products | 31017 | Campbell Soup Co. | [{'value': 0.8200000000000001, 'units': 'g', '... | [{'amount': 1, 'unit': 'fl oz', 'grams': 243.0... | [] |
6631 | Bologna, beef, low fat | Sausages and Luncheon Meats | 42161 | [{'value': 11.8, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'slice', 'grams': 28.0}... | [] | |
6632 | Turkey and pork sausage, fresh, bulk, patty or... | Sausages and Luncheon Meats | 42173 | [{'value': 22.7, 'units': 'g', 'description': ... | [{'amount': 1, 'unit': 'cup, cooked', 'grams':... | [] | |
6633 | Babyfood, juice, pear | Baby Foods | 43408 | None | [{'value': 0.0, 'units': 'g', 'description': '... | [{'amount': 1, 'unit': 'fl oz', 'grams': 31.2}... | [] |
6634 | Babyfood, dessert, banana yogurt, strained | Baby Foods | 43539 | None | [{'value': 1.1, 'units': 'g', 'description': '... | [{'amount': 1, 'unit': 'tbsp', 'grams': 15.0},... | [] |
6635 | Babyfood, banana no tapioca, strained | Baby Foods | 43546 | None | [{'value': 1.0, 'units': 'g', 'description': '... | [{'amount': 1, 'unit': 'tbsp', 'grams': 15.0},... | [] |
6636 rows × 7 columns
기초 자료형 I 정리 (0) | 2023.04.19 |
---|---|
파이썬(Python) 시계열분석 (0) | 2020.12.31 |
파이썬(Python) 고급문자열 처리 (0) | 2020.12.31 |
파이썬(Python) - 분석 실습 영화평점분석 (0) | 2020.12.29 |
파이썬(Python) 분석실습 -웹로그 분석 (0) | 2020.12.29 |