데이터 분석 과정 및 R과 PYTHON의 차이
1. 데이터분석 전체 수행 과정
수행 모듈 | 세부 단계 |
---|---|
1.분석 기획 | 1) 왜 수행해야 하고, 무슨 결과를 내야 하고, 어떻게 결과를 만들까를 계획함 |
2. 데이터 수집 | 1) 회사 내부의 데이터 활용 |
2) 외부에 오픈되어 있는 데이터 | |
3) 오픈 되어 있지 않은 데이터(회사간 업무협조) | |
4) 데이터를 새롭게 만듬 | |
3. 탐색적 분석 | 1) 통계량 작성 |
2) 그래프 그리기 | |
3) 전체 데이터를 다 처리해서 분석하기 어려우면 샘플링해서 진행함 | |
4. 데이터 전처리 | 1) 전체 데이터에서 일부 데이터를 extraction(추출) |
2) 데이터의 구조를 변경함(melt, cast 등) | |
3) 기존 데이터를 대체함(ex 시,분,초를 생략하고 일까지만 사용함) | |
4)정규화 등 데이터의 변화가 필요한 상황(log변환, 박스콕스 변환, 표준점수 등)) | |
5)새로운 데이터 생성(기존 관련있는 데이터를 추가적으로 생성해줌, 군집분석 결과 추가) | |
5. 모델 수립 | 1) 기초통계 자료를 통해 세부적 가설을 정리함 |
2) 보통 한가지만 선택하지 않고 다양한 모델을 수립해서 모델을 서로 비교하여 최적의 모델을 선정함 | |
※ 성공적이지 못하면 데이터수집 단계로 돌어가서 다시 수행함 | |
6. 분석결과 정리 및 보고서 작성 | 1) 모델을 정교하게 정리하고 해당 결과를 보고서로 작성함 |
※ 데이터 분석가의 역할은 여기까지 | |
7. 프로그램 개발 | 1) 실제 서비스 하는 부분에서는 모델의 정확도적인 부분보다 성능(속도)이 중요한 이슈가 됨 |
8. 프로그램 운영 | 1) 개발된 프로그램을 서비스 활용하고 고객들의 반응을 확인함 |
2. R과 PYTHON의 차이
R | PYTHON | |
---|---|---|
색인_인덱싱 | DF[1] #1열 | DF[1] #1열 |
색인_슬라이싱 | DF[1:3] # 1:3열 | DF[1:3] # 1:3행 |
DF[1,3:5] | DF.loc[1,3:5] or iloc 사용 | |
데이터 속성 파악 | class(DF) | TYPE(DF) |
데이터 속성 요약 | summary | describe |
view의 속성 | DF = DF2 # DF에서 수정하면 DF2는 변화X | DF = DF2 # DF수정하면 DF2도 변경 |
DF 선택 | DF[‘열이름”] | DF[[‘열이름’]] |
DF의 구조 | dim(DF) | shape(DF) |
변수명 변경1 | rename(DF, old_nm=new_nm) | DF.rename(columns = {‘old_nm’ : ‘new_nm’), inplace = True) |
변수명 변경2 | names(DF) <- c(‘v1’ , ‘v2’) | |
프로그램 방식 | Function | OOP(객체 지향 프로그램) 맴버변수 활용(.TAB 활용) |
주로 사용하는 데이터 타입 | 백터/Matrix(2차원) | 1d array/ 2d array |
물리적 메모리 저장방식 | 열방향으로 저장함 | 행방향으로 저장함 |
LIST 활용 | 함수를 수행한 결과를 보통 LIST로 출력함 | LIST를 다양한 목적으로 활용 |
DF 형식 파악 | dim() | shape() |
인덱스 시작 | 1부터 시작 | 0부터 시작 |
3. dplyr함수
**%>% 파이프 연산자 ** : 왼쪽에 나온 결과를 오른쪽의 함수로 넣는다.(dplyr에서 자주 사용함)
-
내부적으로 C언어로 구성되어 있기 때문에 base함수보다 빠른 연산이 가능함
-
임시로 중간중간 데이터프레임을 만들지 않아도 되기 때문에 메모리를 절약할 수 있음
dplyr 함수 | 기능 |
---|---|
filter() | 행추출 |
select() | 열추출 |
arrange() | 정렬 |
mutate() | 변수 추가 |
summarise() | 통계치 산출 |
group_by() | 집단별로 나누기 |
left_join() | 데이터 합치기(열) |
bind_rows() | 데이터 합차기(행) |
4. R의 독특한 특성
# 해당 방식으로 칼럼 명을 작성할 수 있음
df_midterm <- data.frame(english <- c(90, 80, 60, 70),
math <- c(50, 60, 100, 20),
class <- c(1, 1, 2, 2))
df_midterm
english....c.90..80..60..70. math....c.50..60..100..20.
1 90 50
2 80 60
3 60 100
4 70 20
class....c.1..1..2..2.
1 1
2 1
3 2
4 2
#화살표가 아니라 등호를 사용하면 데이터를 넣어줌
df_midterm <- data.frame(english = c(90, 80, 60, 70),
math = c(50, 60, 100, 20),
class = c(1, 1, 2, 2))
df_midterm
english math class
1 90 50 1
2 80 60 1
3 60 100 2
4 70 20 2
Leave a comment