24
MODA 파이선스터디 5 주차 발표자 신준호

MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

MODA

파이선스터디 5주차

발표자 신준호

Page 2: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

복습

헷갈리는 개념

• Row 와 columns : row는 행(가로데이터의 제목), columns는

열(세로데이터의 제목)

Axis=0 이 row

Axis=1이 columns

columns

row

Page 3: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

복습

4주차 내용 - lecture 23 - Missing Data 처리방법

• .dropna() : null값의 데이터를 누락시킴

• .dropna(how=‘all’) : 행의 값이 모두 null값이면 행을 누락

• .dropna(axis=1) : null갑이 포함된 행을 모두 누락

• .dropna(thresh=n) : n개만큼의 데이터값이 없는 행을 누락

• .fillna(n) : 모든 null값에 n을 채움(n에 소수와 음수까지 넣어봤는데 다 됨.)

• .fillna({n:m}) : n 행의 null값에는 m을 채워라!

- 딕셔너리에 axis=0을 추가하면 n열으로 기준이 변한다!

Page 4: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

복습

4주차 내용 – lecture 24 - 색인의 계층

• Series 내에서 index가 복수의 계층을 가지고 있을때

• Series이름[n] : n의 인덱스 안의 하위인덱스와 데이터 출력

• Series이름[:,’하위계층’] : 하위계층으로 검색된 데이터 모두 출력

• Series이름.unstack() : 데이터를 데이터프레임형식으로 만들어 줌. – stack은 데이터프레임 형태를 시리즈로 바꾸는 것이고

unstack은 그 반대임.

Page 5: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

복습

4주차 내용 – lecture 24 - 색인의 계층

• 데이터프레임.index(columns).names = [‘........’] : 열 또는 행의

이름을 생성.

• 데이터프레임.swaplevel(‘a’,’b’,axis=1) : 행의 이름위치를 바꾸어라.

• 데이터프레임sortlevel(n) : n-1번째 열의 인덱스를 기준으로 행을 순차배열하라. Sortlevel(1,axis=1)을 하면 컬럼을 기준으로

배열도 가능!

• 데이터프레임.sum(level=‘인덱스이름’) : 인덱스의 합을 구해서

정렬.

Page 6: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

복습

4주차 내용 – lecture 25 - CSV

• csv파일 불러오기.

• Pd.read_csv(‘파일경로파일명.csv) : 그냥 불러오기.(데이터프레임형태로 출력됨)

• Pd.read_csv(‘파일경로파일명.csv, header = None)

=기본columns이 한줄 생겨서 맨윗줄이 columns이 되지 않음.

• Pd.read_csv(‘파일경로파일명.csv,sep=‘A’) : 데이터사이의 구분값을 A로 보고 파일을 불러와라.

• Pd.read_csv(‘파일경로파일명.csv,nrows=m) : m개의 row만

불러와라.

Page 7: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

복습

4주차 내용 – lecture 25 – CSV

• Sys.stdout csv 데이터를 기본값으로 출력(데이터프레임을 벗김.)

• Sys.stdout,sep=‘A’ : csv데이터의 구분값을 A로 출력함.

• Sys.stdout,columns=[0,1,2] : 0,1,2 콜론의 값만 출력함.

Page 8: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

복습

4주차 내용 – lecture 26, 27 – JSON, HTML

• JSON데이터는 일단 웹브라우저와 다른 애플리케이션이 HTTP

요청으로 데이터를 주고받을 때 사용하는 데이터 형식이라고 한다. C, C++, C#, 자바, 자바스크립트, 펄, 파이썬 등 많은 프로그래밍 언어에서 쉽게 사용할 수 있다고 한다. 강의에서는 나중에

많이 사용해본다고 했으니 개념만 알고 가자!

• read_html은 html형식으로 된 데이터를 파이선 내에서 표현한다.

• pd.io.html.read_html(URL주소) : URL의 데이터를 데이터 프레임 형식으로 불러온다!

Page 9: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

복습

4주차 내용 – lecture28 – 엑셀파일 불러오기

• A = pd.ExcelFile(‘파일경로’) : A를 파일경로에 있는 엑셀파일로 정의한다.

• B = A.parse(‘Sheet1’) : A라는 엑셀파일에 있는 데이터중 시트

1만 가져온다.

• 나머지 기능은 홈페이지에 있다고 합니다....

Page 10: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

복습

4주차 내용 – lecture29 - Merge

• 두개의 다른 데이터프레임(A,B)에서 같은 콜론 즉 KEY콜론이

있는 경우에 그냥 냅다 Merge를 하면 - pd.merge(A,B) -KEY콜론이 겹치는 데이터만 합쳐져서 표시가 됩니다.

• pd.merge(A,B, on=‘KEY콜론 제목’)을 해도 같은 결과가 나옵니다.

• pd.merge(A,B, how=left)는 왼쪽에 있는 A의 콜론에 맞춰서 결과가 나오는데 매치가 안되는 B의 자료는 null값으로 나옵니다.

• how = outer는 둘다 나오는데 매치안되는 것은 똑같이 null값이

나옵니다.

Page 11: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

복습

4주차 내용 – lecture29 – Merge

• 겹치는 KEY콜론이 2개 이상일 경우에는 KEY콜론간의 가능한

조합이 모두 나오는데 이때 한개의 KEY콜론만으로 정리를 하면

나머지 KEY콜론은 x y 등이 붙어서 구분가능하게 나옵니다.

• 이때 suffixes=(‘_왼쪽’,’_오른쪽’)을 merge에 넣는다면 x y 등에 이름을 붙일 수 있습니다.

Page 12: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture 31 –concentenate

• concentenate는 시리즈와 데이터프레임을 병합해주는 기능을

합니다.

• 시리즈 병합에서는 axis지정을 통해 병합하는 축의 방향도 설정

가능합니다.

• 시리즈의 인덱스가 다른 경우에는 시리즈별로 매치가 되지 않는

인덱스의 null값을 제시해야 하므로 데이터프레임의 형식으로

병합결과값이 나오게 됩니다.

• 데이터프레임 간의 병합은 KEY콜론끼리는 같은 콜론상에 데이터가 나열되지만 나머지 콜론에는 없는 데이터가 null값으로 나오게 되고 row에서는 순서가 데이터프레임별로 지정됩니다.

• 이때 row의 순서를 데이터프레임의 구별없이 쭉 하고 싶다면

ignore_index=True를 삽입하면 됩니다.

Page 13: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture32 – Combine DataFrame.

• Series(np.where(pd.isnull(ser1),ser2,ser1),index=ser1.index)

ser1이 null인 곳에 ser2를 넣고 null이 아니면 ser1를 넣어라

• 위 식에 대한 단축키는 ser1.combine_first(ser2)입니다.

• 데이터 프레임에서도 같은 결과를 볼 수 있습니다.

• 데이터프레임1의 값이 null인 곳만 데이터프레임2의 값이 채워지고 나머지는 데이터프레임1의 값이 채워집니다.

Page 14: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture33 – Reshaping

• 33강에서는 DataFrame과 series를 서로 치환하는 법을 배웁니다.

• 데이터프레임.stack() : 데이터프레임을 시리즈로 치환한다.

• 시리즈.unstack() : 위의 반대

• 시리즈.unstack(‘인덱스’) : 선택한 인덱스를 콜론으로 하는 데이터프레임으로 치환

• Pd.concat([ser1,ser2],keys=[‘제목1’,’제목2’]) 여기서 key가

뭔지는 잘 모르겠으나 시리즈끼리 합칠때 시리즈 각각에 제목을

붙인다고 이해했습니다.

Page 15: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture34 - Pivoting

• URL : en.wikipedia.org/wiki/Pivot_table

아래는 한글로 되어있는 피벗테이블 설명 페이지입니다.

http://help.hancom.com/hoffice/webhelp/9.0/ko_kr/hcell/menu

/data/pivot_table(main).htm

Page 16: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture34 - Pivoting

import pandas.util.testing as tn; tn.N = 3

def unpivot(frame):

N, K = frame.shape

data = {'value': frame.values.ravel('F'),

'variable' : np.asarray(frame.columns).repeat(N),

'date' : np.tile(np.asarray(frame.index), K)}

return DataFrame(data, columns=['date','variable','value'])

dframe = unpivot(tn.makeTimeDataFrame())

위에 것은 테스트용으로 간단히 만든 것이니 알 필요 없다고 하네요.

Page 17: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture34 - Pivoting

• 피보팅은 주어진 데이터프레임를 내가 원하는 정보를 보기 편하게 로우와 콜론을 변경하는 기능입니다.

• 데이터프레임.pivot(‘로우’,’콜론’,’채우는데이터’) : 이렇게 형식이 되어있는데 각각의 자리에 채워질 데이터를 지정해주면 각각의 로우 콜론 채우는자리에 데이터가 딱딱 들어가게 됩니다.

Page 18: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture35 - Duplicate

• Duplicate는 중복된 자료에 관한 기능입니다.

• 데이터프레임.duplicated() : 바로 위 row의 데이터와 중복이면

True, 중복이 아니면 False 출력

• 데이터프레임.drop_duplicates() : 바로 위 row의 데이터와 중복인 데이터(True로 출력된 데이터)를 삭제

• 데이터프레임.drop_duplicates([‘콜론’]) : 콜론을 기준으로 중복제거. 맨 위row의 자료만 남게 됨.

• 데이터프레임.drop_duplicates([‘콜론’],take_last=True) : 콜론을 기준으로 중복을 제거하는데 맨 아래의 자료만 남게 됨.

Page 19: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture36 - Mapping

• Mapping은 새로운 컬럼 데이터를 기존 컬럼의 데이터와 매치하여 입력하는 기능입니다.

• 먼저 매핑할 내용을 딕셔너리로 입력합니다.

- 매핑내용 = {‘기존데이터1’:’새로운데이터’ ......}

• 그 후 새로운 컬럼을 지정하고 연결해줍니다.

dframe[‘새 컬럼’] = dframe[‘기존 컬럼’].map(매핑내용)

Page 20: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture37 - Replace

• Replace는 시리즈 내의 데이터를 변경하는 기능입니다. 같은 기존데이터가 여러 row에 걸쳐있어도 모두 반영됩니다.

• 시리즈.replace(기존데이터,변경할데이터)

• 시리즈.replace([기존data1,기존data2],[변경data1,변경data2])

• 시리즈.replace({기존데이터:변경데이터)

• 위 세가지 방법 모두 기존데이터를 새로운 데이터로 변경하는 여러가지 방법입니다.

Page 21: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture38 – Rename Index

• Dframe.index.map(str.lower) : 데이터프레임의 인덱스를 소문자로

만들어라.

• Dframe.index.map(str.title) : 데이터프레임의 인덱스 맨앞 글자를 대문자로 만들어라.

• Dframe.rename(index={‘기존’:’변경’}, columns={‘기존’:’변경’})

- dframe의 인덱스와 컬럼의 이름을 기존에서 변경으로 바꾸어라.

• Dframe.rename(index={‘기존’:’변경’}, inplace=True)

- dframe의 인덱스나 컬럼의 변경을 유지하라.

Page 22: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture39 – Binning

• Binning이란 작은 간격의 숫자가 여러개인 데이터를 구간으로 묶어버리는 기능입니다.

• 우선 구간의 기준이 되는 값을 지정합니다.

구간 = (구간1,구간2.......)

데이터카테고리 = pd.cut(데이터,구간)

데이터 구간이 주르륵 나열되고, 카테고리가 나오게 됩니다. 이때 (,)는 이상이하의 개념이고 [,]는 초과미만의 개념입니다.

데이터카테고리.categories

데이터카테고리가 인덱스 형태로 나오게 됩니다.

pd.value_counts(데이터카테고리) : 카테고리안의 데이터값의 갯수가 나옵니다.

pd.cut(데이터,구간의 개수,간격의 최소 숫자단위?)

카테고리를 구간의 개수에 맞춰 자르고 자를때의 최소 숫자단위에 맞춰서 자르게 됩니다.

Page 23: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture40 – Outliers

• dframe[np.abs(dframe)>3] : 데이터프레임에서 절대값이 3이상인

값을 출력하라.

• dframe[np.abs(dframe)>3.any(1)] : 데이터프레임에서 행 안에 한개라도 절대값이 3이상인 값이 있는 행을 출력하라. any()안의 숫자는 0

과 2를 대입해봤지만 에러가나서... 뭘 뜻하는지는 모르겠습니다.

• dframe[np.abs(dframe)>3] = np.sign(dframe)*3 : 절대값이 3이상인 값을 모두 3으로 변경해라.

Page 24: MODA 파이선스터디 5주차modastudy.weebly.com/uploads/4/6/5/6/46564639/5주차... · 2019-09-26 · 4주차 내용 – lecture29 - Merge • 두개의 다른 데이터프레임(A,B)에서

5주차 파이선 스터디

Lecture41 – permutation

• 블렌더 = np.random.permutation(4) : 0,1,2,3을 비복원추출해서 나열해라.

• dframe.take(블렌더, axis=1) : 행을 블렌더의 나열 순서대로 바꿔라.

• 쉐이커 = np.random.randint(0,len(어레이),size=10) : 어레이 안의

데이터를 사이즈 갯수만큼 복원추출하여 어레이의 형식으로 추출하라.

• hand_grabs = 어레이.take(쉐이커) : 쉐이커를 해라.... 같은데 쉐이커를 그냥 쓰는 것과 뭐가 다른지? 둘다 반복시행해봤지만 결과값이 모두 같습니다.