본문 바로가기
데이터 청년 캠퍼스/사전교육

[쉽게 따라하는 데이터 분석] 10강 - 12강

by 뚱뚜루뚱 2022. 7. 13.

10강. 기상정보를 활용한 불쾌지수 분석_2

일교차의 평균, 표준편차, 최대값, 최소값 구하기

mean(data.tempdist$일교차)
sd(data.tempdist$일교차)
max(data.tempdist$일교차)
min(data.tempdist$일교차)

 

데이터 그룹화하기

data.group <- group_by(data.month, 월)
data.group

# 그룹화된 데이터로 월 평균 일교차 확인 및 변수 추가
data.group_avg <- summarise(data.group, avg=mean(일교차))
head(data.group_avg)

data.avg.td <- mutate(data.group, 월평균=mean(일교차))
head(data.avg.td)

 

불쾌지수 변수 생성

불쾌지수 = 1.8T - 0.55(1 - RH)(1.8T - 26) + 32   *T: 기온, RH: 상대습도(%)

data.thi <- mutate(data.month, 불쾌지수 = 1.8*평균기온 - 0.55*(1-습도/100)*(1.8*평균기온-26)+32)
head(data.thi)

# 불쾌지수가 70초과인 날
data.thi_70 <- data.thi[data.thi$불쾌지수 > 70]
head(data.thi_70)
dim(data.thi_70)

 

월 평균 일교차 그래프 그리기

ggplot(data=data.group_avg, aes(x=as.numeric(월), y=avg)) 
	+ geom_line() 
	+ geom_point(size=2, color='red')
	+ ggtitle('월 평균 일교차')
  	+ ylab('기온')
  	+ xlab('월')
 	+ theme(plot.title=element_test(hjust=0.5)) # 그래프 제목 위치(왼쪽:0, 가운데:0.5, 오른쪽:1)

 

문자형을 날짜형으로 변경

head(data.thi$일자)
str(data.thi$일자)

head(as.Date(data.thi$일자))
str(as.Date(data.thi$일자))

 

불쾌지수 그래프 그리기

ggplot(data=data.thi, aes(x=as.Date(일자), y=불쾌지수))
    + geom_line()
    + ggtitle('일별 불쾌지수')
    + xlab('일자')
    + ylab('불쾌지수')
    + geom_hline(hintercept=70, linetype='dashed', size=1, color='red') # y=70인 수평선 긋기, 선유형:점선, 선두께:1, 선색깔: 빨간색

 

 


 

11강. 유동인구 데이터 분석 따라하기_1

데이터 수집

데이터스토어(회원가입 후 이메일 인증 필요) > 서울 성별 연령 유동인구  > 개인정보 3자 제공 동의 및 이용 신청 > 마이페이지-데이터 상품 이용신청 내역-파일 > 엑셀 프로그램을 통해 데이터 확인하기

 

사용할 패키지 설치 및 불러오기

install.packages('dplyr')
library(dplyr)

data.raw <- read.csv(file.choose(), header=T, fileEncoding='UCS-2LE') # 맨 마지막행 무시

 

데이터 확인하기, 변수 이름 변경

View(data.raw)
head(data.raw)
tail(data.raw)
str(data.raw)
dim(data.raw)

names(data.raw)
names(data.raw)[5:16] <- c('m10', 'm20', 'm30', 'm40', 'm50', 'm60over', 
			   'f10', 'f20', 'f30', 'f40', 'f50', 'f60over')
names(data.raw)

 

남녀별 유동인구 합계 변수 추가하기

data.use <- mutate(data.raw, 
		   m_total=m10+m20+m30+m40+m50+m60over,
		   f_total=f10+f20+f30+f40+f50+f60over,
		   mf_total=m_total+f_total)

data.use

 

 


 

12강. 유동인구 데이터 분석 따라하기_2

유동인구 상위 10개 지역?

data.arrange <- arange(data.use, desc(mf_total))
data.arrange10 <- head(data.arrange, 10)

 

구역별 남성/여성 유동인구가 가장 많은 연령층? 데이터 시각화

# 남성
m_max_which <- max_col(data.use[5:10]) + 4
names(data.use)[m_max_which]

# 여성
f_max_which <- max_col(data.use[11:16]) + 10
names(data.use)[f_max_which]

# 변수로 추가
data.major.age <- mutate(data.use, 
major_m = names(data.use)[m_max_wchich]
major_f = names(data.use)[f_max_wchich])

# 테이블화
m_age_table <- table(data.major.age$major_m)
m_age_table
f_age_table <- table(data.major.age$major_f)
f_age_table

# 시각화: 막대그래프
barplot(m_age_table, xlab='연령대', ylab='빈도수', ylim=c(0,800), main='남성 유동인구 막대그래프')
barplot(f_age_table, xlab='연령대', ylab='빈도수', ylim=c(0,800), main='여성 유동인구 막대그래프')

# 시각화: 그룹 막대그래프
age_table <- rbing(m_age_table, f_age_table)
colnames(age_table) <- c('20대', '30대', '40대', '60대이상')
bar.text <- barplot(age_table, beside=T, legend=c('man', 'woman'), 
	  	    xlab='연령대', ylab='빈도수', ylim=c(0,800), main='성별 유동인구 막대그래프')
text(bar.text, age_table, labels=age_table, pos=3) # x좌표, y좌표, 추가할 문자, 위치 1:below, 2:left, 3:above(default), 4:right

# 시각화: 파이차트 그리기
data.arrange10_t <- t(data.arrange10)
data.m_1 <- data.arrange10_t[5:10, 1]
pct <- round(data.m_1/sum(data.m_1)*100) # 세대별 비율
lbls <- paste(pct, '%', sep='') # 출력할 텍스트 값에 % 추가
lbls
pie(data.m_1, labels=lbls, main='남성 세대별 유동인구')