KT AIVLE School/AIVLE School 6기 후기

[KT AIVLE School] KT 에이블스쿨 6기(DX 트랙) 3주차 후기. 데이터프레임 변경 / 반장·기자단 / 코딩마스터스

guoyee94 2024. 9. 23. 01:28

 

늦었다.

 

낯설고 어렵기만 하던 에이블스쿨도 어느새 3주차에 접어들었다.

 

다음주면 미니프로젝트가 시작되는데...... 긴장된다 긴장돼.

 

진도로는 pandas 데이터프레임 전처리까지 끝났고,

코딩마스터스도 한창 진행중, 내부적으로는 반장, 기자단스토리텔러까지 뽑은 한 주였다.

 

자 그럼 3주차 후기 가보자.

 

 

 

 

 

3주차 핵심 내용

 

모두가 소리지른 순금 연휴

 

이번 주는 추석이 껴 있어서 짧았다.

 

오랜만에 본가에 가서 친구들도 보고 흑역사도 하나 썼다.

 

노트북을 챙겨 가서 코딩마스터스 문제도 많이 풀었다.

 

거의... 문제에 얻어맞은 거지만.

 

그래도 동생(현직 개발자) 한테 디버깅하는 법도 배우고 나름 의미있게 쓴 것 같다.

 

여튼... 고작 이틀간만 진행됐음에도 불구하고 엄청 많은 것들을 배웠다.

 

3주차에 배운 것
- 열 변경 : rename(), drop(), map(), replace()
 - 결측치 처리 : isna(), dropna(), fillna(), ffill(), bfill(), interpolate()
 - 범주값 처리 : cut(), qcut(), one-hot encoding
 - 데이터프레임 합치기 : pd.concat(), pd.merge()
 - 데이터프레임 세부 조정 : rolling(), shift(), pivot(), melt()

 

 

슬슬 정리가 버거워서 금요일 TIL때는 처음부터 내용을 훑고,

오로지 나를 위한(...) 함수 정리를 했다.

분류 활용처 메서드 일반적 형태 비고
탐색 상위/하위
행 탐색
head()
tail()
df.head()/df.tail()  
열 이름 확인
자료형 확인
결측치 확인
info() df.info()  
기술통계정보
확인
describe() df.describe()
df.describe().T
df.describe().T
가로로 출력
결측치 확인 isna() df.isna().sum() isna() 자체는 bool 반환
조회 특정 열 조회
조건 조회
loc[] df.loc[row, col]
df.loc[:, col]
df[col]
df[df[col]==값, col]
df.loc[:, col]
= df[col]

조건 조회 시 row 자리
'df[col]'으로 조건 출력
집계 cols A 별
cols B 값
집계
groupby() df.groupby(by=cols A, as_index=False)[[cols B]].집계함수*

*집계함수 : mean(), max(), min(), sum(), median(), std(), count()
앞에서부터 평균, 최댓값, 최솟값, 합계, 중간값, 분산, 항목수.
agg([])로 여러 집계함수를 묶어 쓸 수 있음
전처리 인덱스 리셋 reset_index() df.reset_index(drop=True) inplace=True
인덱스 설정 set_index() df.set_index(col) inplace=True
열 이름 변경 rename() df.rename(columns={col A : col B}) inplace=True
열 삭제 drop() df.drop(cols, axis=1) inplace=True
범주값 변경 map()
replace()
df[col] = df[col].map({val 1 : val A, val 2 : valB})
또는 df[col].replace({val 1 : val A, val 2 : valB})
map() : 미지정 값 결측화
replace() : 미지정 값 유지
범주화 pd.cut()
pd.qcut()
df[col] = pd.cut(df[col], bins=bin, labels=label)
df[col] = pd.qcut(df[col], int, labels=label)

bin = [-np.inf, q1, q2, q3, np,inf]
q1 = df[col].describe()['25%'] 
q2 = df[col].describe()['50%']
q3 = df[col].describe()['75%']
또는
q1 = df[col].quantile(0.25)
q2 = df[col].quantile(0.5)
q3 = df[col].quantile(0.75)  
bin = [], label = []
미리 지정

bin은 주로 4분위값 사용
(q1, q2, q3)

qcut은 bin 없이
균등하게 int(n) 등분
결측치 삭제 dropna() df.dropna(axis=0)
df.dropna(subset=col, axis=0)
inplace=True
결측치 대체 fillna() df.fillna(value)
df[col].fillna(value)
inplace=True
ffill()
bfill()
df.ffill(value)
df[col].ffill(value)
df.bfill(value)
df[col].bfill(value)
inplace=True

ffill : 앞 row값으로 대체
bfill : 뒤 row값으로 대체
interpolate() df.interpolate(method='linear') inplace=True
원핫 인코딩 pd.get_dummies() df = pd.get_dummies(df, columns=cols,
drop_first=True, dtype=int)
cols 미리 지정
합치기 df 연결 pd.concat() df = pd.concat([col A, col B, ...], join=str, axis=int) join : inner/outer
axis : 0/1(행병합/열병합)
df 조인 pd.merge() df = pd.merge(col A, col B, how=str, on=str) how : inner/outer/left/right
on : 연결고리가 되는 열
고급 특정기간
열 추가
rolling() df[new col] = round(df[col].rolling(window=int,
min_periods=1).집계함수(), 1)
window : 특정 기간(int)
round로 반올림처리
데이터
끌어오기
shift() df[new col] = df[col].shift(int) int 만큼 앞에 있는 col의
데이터를 new col에 저장 
데이터
돌리기
pivot() df.pivot(index=[cols], columns=col, values=col)   
pivot
취소
melt() df = pd.melt(df, id_vars=[cols],
var_name=str, value_name=str)
id_vars : 유지할 열
시각화를 위해 수행

 

넣는 김에 한번 더 확인.

 

다음주 토요일에 있을 AICE Associate 시험에 조금이라도 도움이 됐으면 하는 마음이다.

 

어차피 다 머리로 알아야 한다. 명심하자. AICE는 Ctrl + C, V가 안된다.

 

 

 

 

 

 

 

 

 

반장, 기자단, 에이블 스토리텔러

 

에이블에듀 홈페이지에 올라온 공지. 이때를 기다렸다.

 

공부 겸 기록관리 겸 티스토리를 운영하는 입장이었기에 겸사겸사 노리고 있던 기자단.

 

기자단 신청하는 김에 저 '반장'이라는 녀석도 덜컥 욕심이 났더랜다. 대학생때 그렇게 고생해놓고

 

어차피 같은반 에이블러 분들과는 프로젝트 하면서 이야기할 일도 많을 텐데,

반장이면 그게 더 편하지 않을까?! 하는 생각으로 과감히 질러버린 결과...

 

반장이 되어 버렸다.

 

반장 소감 말할 때 딱 이런 느낌이었다.

 

 

사실 경쟁에 질 각오도 하고 신청한 건데 덜컥 되어 미묘한 기분.

 

그래도 뭐, 기분은 좋다. 역시 관종끼가 쉽게 고쳐지진 않는다.

 

일단 반장이 되니 같은반 에이블러 분들께 합법적(?)으로 선연락하기가 좋아졌다. 흡족.

 

 

 

 

코딩마스터스

 

추석 연휴를 모조리 투자한 결과, 무근본 코딩으로도 50번까지는 풀 수 있었다.

 

한문제 한문제 풀 때마다 든 생각,

'나중에 블로그 컨텐츠로 꼭 쓰고 말 테다...'

 

뭐, 중급부터는 손도 못 대고 있다만, 좀 더 늘면 가능해 지겠지?

 

진짜로 화이팅이다.

 

 

 

그래도 하는 사람이 아직 별로 없는지, 나름 30등대 유지 중이다.

저 한 문제가 나를 미치게 한다. 테스트케이스 하나만 계속 실패해....