SlideShare a Scribd company logo
DataAnalysis
(Lecture 1 - Introduction)
1
Jaewook Byun
Ph.D. Assistant Professor, Department of Software, Sejong University
Associate Director, Auto-ID Labs, Korea
jwbyun@sejong.ac.kr , bjw0829@gmail.com
https://sites.google.com/view/jack-dfpl/home
목차
• 데이터 엔지니어링 소개
• 데이터 처리 과정 소개
• 실 세계 데이터 셋 소개
• 실습 환경 소개 및 구축
• 실 세계 데이터 셋 워밍업
2
데이터 엔지니어링 소개
• 기술의 시대
• 방대한 양의 데이터와 인공지능 기술을 활용한 서비스의 폭발적인 등장
3
Netflix icon: https://en.wikipedia.org/wiki/Netflix
Netflix screen recording: www.netflix.com
DeepMind icon: https://en.wikipedia.org/wiki/DeepMind
Deepmind Image: https://www.exoplatform.com/blog/2016/03/18/machine-crushes-go-world-champion/
DeepDream icon: https://southsouthwest.com.au/news/google-deepdream/
DeepDream image: https://deepdreamgenerator.com/
데이터 엔지니어링 소개
• 빅데이터란?
• 가트너 리포트: "2021년에는 620억개의 사물이 존재”
• 620억개의 사물과 79억명의 사람이 빠르게 만들어내는 이질적인 큰 규모의 데이터
4
Big Data
Variety Velocity
Volume
Data in 30 sec.
가트너 인용: https://www.gartner.com/en/newsroom/press-releases/2021-04-01-gartner-forecasts-
global-devices-installed-base-to-reach-6-2-billion-units-in-2021
빅데이터 icon: https://www.pngkit.com/bigpic/u2w7r5e6t4r5r5e6/
오른쪽 그림: https://pbs.twimg.com/media/CJpQUc2WUAQHztb.png
Internet in 30 sec.: https://www.digitalinformationworld.com/2014/05/Twitter-Facebook-GooglePlus-Instagram-Pinterest-Real-Time-Internet-infographic.html
데이터 엔지니어링 소개
• 기술 범람의 시대
5
이미지: https://mattturck.com/data2019/
데이터 엔지니어링 소개
• 데이터엔지니어링이란?
• 특정 목적의 서비스를 만들기 위해 빅데이터의 파이프라인을 설계 구축하는 것
• 데이터 수집, 데이터 가공, 데이터 저장 등
6
데이터 저장
데이터 가공
데이터 수집
Data processing, data collection and data storage icons: www.flaticon.com
빅데이터 icon: https://www.pngkit.com/bigpic/u2w7r5e6t4r5r5e6/
Netflix screen recording: www.netflix.com
Deepmind Image: https://www.exoplatform.com/blog/2016/03/18/machine-crushes-go-world-champion/
DeepDream 이미지: https://deepdreamgenerator.com/
데이터 엔지니어링 소개
• 본 강의의 소개
• 개념적
• 실 세계 오픈 데이터를 처리
• 특정 문제에 대한 적절한 자료구조 선택의 중요성 학습
• 데이터 파이프라인 설계 구축 과정의 숙달
• 실무적
• Java Collection Framework 학습
• Java Parallel Stream 학습
• 사전지식
• 자료구조
• 객체지향 프로그래밍
• Java 언어
• 실습환경
• Open JDK 15
• Eclipse IDE for Enterprise Java and Web Developers
7
데이터 처리 과정
• 데이터 수집
• 데이터 소스와 수집 방법이 다양함
• 데이터 소스
• 웹 데이터, 센서 데이터, 파일, 데이터베이스 등
• 데이터 수집 방법
• API 호출, 센서 신호, 파일 읽기, 데이터베이스 접근 등
8
Facebook은 개발자들에게 데이터를 API를 통해 제공함
/me?fields=email,id,name + 억세스 토큰
 본인의 email,id,name 획득
예)
페이스북 ICON: https://en.wikipedia.org/wiki/Facebook
데이터 처리 과정
• 데이터 수집
• 본 과정에서 사용되는 오픈 데이터셋
• Stanford Network Analysis Project (SNAP)
• 50개 이상의 네트워크 데이터셋 제공
• https://snap.Stanford.edu/data/
• 이메일 데이터
• http://snap.stanford.edu/data/email-EuAll.html
• 2003년 2005 사이에 이메일을 보낸 사실에 대한 기록
• 계정은 익명화 되어 숫자로 제공
9
# 데이터 명세
# 데이터 명세
# …
0 1
1 2
1 3
…
0
1
2
3
“계정 1이 계정 2에게 이메일을 보냄”
데이터 처리 과정
• 데이터 가공
• 데이터 저장을 위한 형태로 데이터를 가공
• 데이터 추상화, 데이터 파싱, 데이터 검증, 데이터 정제 등
10
# 데이터 명세
# 데이터 명세
# …
0 1
0 1
0
*1912ㄴ 5
0 8
0 11
0 20
0 48
0 430
…
데이터 명세 제거
중복 데이터 제거
누락 데이터 제거
결함 데이터 제거
“0 20”
처리할 데이터 “0”
“20”
토큰화 정수변환 0
20
데이터 처리 과정
• 데이터 저장
• 데이터를 특정 목적의 서비스를 만들기 적절한 형태로 유지함
• 메모리, 데이터베이스 등
11
# 데이터 명세
# 데이터 명세
# …
0 1
0 4
0 5
0 8
0 11
0 20
0 48
0 130
0 160
…
메모리
데이터베이스
리스트
스택
큐
해시
트리
관계형DB
문서형DB
그래프DB
0 130
이메일 설계도
데이터 추상화:
보낸 사람(정수)
받는 사람(정수)
프로시저 추상화:
…
이메일 객체
보낸 사람: 0
받는 사람: 8
변환기
실습 환경 준비
• Open JDK 15
• Microsoft Windows 10 기준
• 다운로드: https://jdk.java.net/archive/
12
압축을 푼 후 아래 폴더의 모습
C:Program Filesjavajdk-15.0.2
실습 환경 준비
• Open JDK 15
• 환경 준비 영상
• 유튜브: https://youtu.be/Zqi4ayfhEQc
13
실습 환경 준비
• Eclipse IDE for Enterprise Java and Web Developers
• Microsoft Windows 10 기준
• 다운로드: https://www.eclipse.org/downloads/packages/
14
실습 환경 준비
• Eclipse IDE for Enterprise Java and Web Developers
• 환경 준비 영상
• 유튜브: https://youtu.be/ivjPjcJpNes
15
실 세계 데이터 셋 추출 및 모델링 실습
• 실습을 위한 개념 소개
• 객체지향 프로그래밍: 개념을 추상화 해 놓은 클래스들의 객체들을 조합하여 목적을 이루어가는 것
• 파일 읽기
• 특정 위치의 파일을 한 줄 읽을 수 있는 BufferedReader 클래스를 객체화 하여 파일 읽기를 수행
• 한 줄 읽기를 반복하여 전체 파일 읽기를 수행
• Email 데이터 위치: http://snap.stanford.edu/data/email-EuAll.html
• 실 세계 데이터셋 위치: C:UsersSejongDAemail.txt 로 가정
16
BufferedReader r =
new BufferedReader(new FileReader(
“C:UsersSejongDAemail.txt"));
String line = r.readLine();
실 세계 데이터 셋 추출 및 모델링 실습
• 실습을 위한 개념 소개
• 파일 읽기
• BufferedReader 활용
17
생성자
Class FileReader() : 문자로 이루어진 파일을 읽을 수 있는 클래스
예외처리:
FileNotFoundException : 파일을 찾지 못하였을때 발생
FileReader f =
new FileReader(“C:UsersSejongDAemail.txt");
email.txt
파일시스템
실 세계 데이터 셋 추출 및 모델링 실습
• 실습을 위한 개념 소개
• 파일 읽기
• BufferedReader 활용
18
생성자
Class BufferedReader(Reader in) : 버퍼를 이용하여 효율적으로 문자열을
읽는 클래스
BufferedReader r = new BufferedReader(
new FileReader(“C:UsersSejongDAemail.txt"));
email.txt
Buffer
파일시스템
실 세계 데이터 셋 추출 및 모델링 실습
• 실습을 위한 개념 소개
• 파일 읽기
• BufferedReader 활용
19
# Directed graph (each unordered…
# Email network of a large Europe…
# Nodes: 265214 Edges: 420045
연산자(BufferedReader)
String ReadLine(): 텍스트의 한 줄을 읽어옵니다.만약 텍스트의 끝에 도달
하면 null 을 반환한다
예외처리:
IOException : I/O 에러 발생시 발생한다
String line;
line = r.readLine()
실 세계 데이터 셋 추출 및 모델링 실습
• 실습을 위한 개념 소개
• 파일 읽기
• BufferedReader 활용
20
String ReadLine(): 텍스트의 한 줄을 읽어옵니다.만약 텍스트의 끝에 도달
하면 null 을 반환한다
예외처리:
IOException : I/O 에러 발생시 발생한다
String line;
# Directed graph (each unordered…
# Email network of a large Europe…
# Nodes: 265214 Edges: 420045
line = r.readLine();
line = r.readLine();
연산자(BufferedReader)
실 세계 데이터 셋 추출 및 모델링 실습
• 실습을 위한 개념 소개
• 파일 읽기
• BufferedReader 활용
21
String ReadLine(): 텍스트의 한 줄을 읽어옵니다.만약 텍스트의 끝에 도달
하면 null 을 반환한다
예외처리:
IOException : I/O 에러 발생시 발생한다
String line;
# Directed graph (each unordered…
# Email network of a large Europe…
# Nodes: 265214 Edges: 420045
line = r.readLine();
line = r.readLine();
line = r.readLine();
연산자(BufferedReader)
실 세계 데이터 셋 추출 및 모델링 실습
• 실습을 위한 개념 소개
• 파일 읽기
• BufferedReader 활용
22
String ReadLine(): 텍스트의 한 줄을 읽어옵니다.만약 텍스트의 끝에 도달
하면 null 을 반환한다
예외처리:
IOException : I/O 에러 발생시 발생한다
String line;
# Directed graph (each unordered…
# Email network of a large Europe…
# Nodes: 265214 Edges: 42004
line = r.readLine();
line = r.readLine();
line = r.readLine();
line = r.readLine();
연산자(BufferedReader)
실 세계 데이터 셋 추출 및 모델링 실습
• 실습을 위한 개념 소개
• 데이터 파싱
• BufferedReader의 readLine 연산을 통해 얻어진 문자열을 프로그래밍 언어가 이해할 수 있는 형
태로 처리
23
# Directed graph (each unordered…
# Email network of a large Europe…
# Nodes: 265214 Edges: 420045
# FromNodeId ToNodeId
0 1
0 4
0 5
0 8
0 11
0 20
0 48
…
#으로 시작하는 데이터 설명 무시
boolean startsWith(“#”)
TAB(t)으로 문자열을 분리
String[] split(“t”)
0이 1에게 메일을 보낸 이벤트
배열의 요소를 정수형(Integer)로 변환
static int parseInt(“1”)
email.txt
실 세계 데이터 셋 추출 및 모델링 실습
• 실습을 위한 개념 소개
• 데이터 파싱
• BufferedReader의 readLine 연산을 통해 얻어진 문자열을 프로그래밍 언어가 이해할 수 있는 형
태로 처리
24
연산자(String)
boolean startsWith(String prefix) : 문자열이 특정 prefix 로 시작하면
true 를 반환한다
String line = r.readLine();
# Directed graph (each unordered pair of nodes is …
if(line.startsWith("#"))
continue;
true
실 세계 데이터 셋 추출 및 모델링 실습
• 실습을 위한 개념 소개
• 데이터 파싱
• BufferedReader의 readLine 연산을 통해 얻어진 문자열을 프로그래밍 언어가 이해할 수 있는 형
태로 처리
25
연산자(String)
String[] split(String regex) : 문자열을 주어진 정규표현식에 맞춰 분리
한다
String line = "0 1";
String[] splited =line.split("t");
splited[0]
splited[1]
‘0’
‘1’
‘0’ ‘t’ ‘1’
실 세계 데이터 셋 추출 및 모델링 실습
• 실습을 위한 개념 소개
• 데이터 파싱
• BufferedReader의 readLine 연산을 통해 얻어진 문자열을 프로그래밍 언어가 이해할 수 있는 형
태로 처리
26
연산자(Integer)
static int parseInt(String s) : 숫자형의 문자열 ‘s’ 를 10진수의 정수형
으로 반환한다
예외사항:
NumberFormatException : 숫자형의 문자열이 아닐때 발생한다
int num1 = Integer.parseInt("3");
int num2 = Integer.parseInt("5");
num1 + num2 8
int num = Integer.parseInt("a");
실 세계 데이터 셋 추출 및 모델링 실습
• 실습을 위한 개념 소개
• 데이터 추상화
• Java 클래스
• 데이터 추상화
• 프로시저 추상화
27
# Directed graph (each unordered…
# Email network of a large Europe…
# Nodes: 265214 Edges: 420045
# FromNodeId ToNodeId
0 1
0 4
0 5
0 8
0 11
0 20
0 48
…
email.txt
0이 1에게 메일을 보낸 이벤트
public class Email {
//데이터 추상화
int from; // 보낸 사람
int to; // 받는 사람
//프로시저 추상화
public Email(int from, int to){
this.from = from; this.to = to;
}
public String toString(){
return from + “->” + to;
}
}
Email e1 = new Email(0,1);
System.out.println(e1);
인스턴스화
콘솔 결과
0->1
콘솔 추상화 매개변수를 콘솔에 출력
실 세계 데이터 셋 추출 및 모델링 실습
• 실 세계 데이터 셋 추출 및 모델링 실습 수행
• 환경 준비 영상
• 유튜브: https://youtu.be/mjDkkk2T74U
28

More Related Content

PDF
데이터 분석 2 - 동기부여
Jaewook Byun
 
PDF
데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자
Jaewook Byun
 
PDF
데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자
Jaewook Byun
 
PDF
데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기
Jaewook Byun
 
PDF
데이터 분석 3 - Java Collection Framework와 ArrayList
Jaewook Byun
 
PPTX
TenforFlow Internals
Kiho Hong
 
PPTX
Python 활용: 이미지 처리와 데이터 분석
용 최
 
PDF
IPython
Kyunghoon Kim
 
데이터 분석 2 - 동기부여
Jaewook Byun
 
데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자
Jaewook Byun
 
데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자
Jaewook Byun
 
데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기
Jaewook Byun
 
데이터 분석 3 - Java Collection Framework와 ArrayList
Jaewook Byun
 
TenforFlow Internals
Kiho Hong
 
Python 활용: 이미지 처리와 데이터 분석
용 최
 
IPython
Kyunghoon Kim
 

What's hot (20)

PDF
20141223 머하웃(mahout) 협업필터링_추천시스템구현
Tae Young Lee
 
PDF
SpringCamp 2013 : About Jdk8
Sangmin Lee
 
PDF
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Mario Cho
 
PDF
Collection framework
ssuser34b989
 
PPTX
Java와 Python의 만남: Jython과 Sikuli
용 최
 
PPTX
Python on Android
용 최
 
PPTX
Gpg1
Kwang Jung Kim
 
PPTX
Python programming for Bioinformatics
Hyungyong Kim
 
PDF
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
Tae Young Lee
 
PPTX
Openface
jaeho kang
 
PDF
JVM 메모리 해부학
Greg Lee
 
PPTX
문과생 대상 파이썬을 활용한 데이터 분석 강의
Kwangyoun Jung
 
PDF
[발표자료] 190401 논문 정보 수집과 연구 동향 분석 세미나
Cyram Inc
 
PPTX
빠르게 활용하는 파이썬3 스터디(ch1~4)
SeongHyun Ahn
 
PPTX
Linq to object using c#
병걸 윤
 
KEY
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
Kenu, GwangNam Heo
 
PDF
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
Tae Young Lee
 
PDF
Realm은 어떻게 효율적인 데이터베이스를 만들었나?
Leonardo YongUk Kim
 
PDF
Ji 개발 리뷰 (신림프로그래머)
beom kyun choi
 
PPTX
영상 데이터의 처리와 정보의 추출
동윤 이
 
20141223 머하웃(mahout) 협업필터링_추천시스템구현
Tae Young Lee
 
SpringCamp 2013 : About Jdk8
Sangmin Lee
 
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Mario Cho
 
Collection framework
ssuser34b989
 
Java와 Python의 만남: Jython과 Sikuli
용 최
 
Python on Android
용 최
 
Python programming for Bioinformatics
Hyungyong Kim
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
Tae Young Lee
 
Openface
jaeho kang
 
JVM 메모리 해부학
Greg Lee
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
Kwangyoun Jung
 
[발표자료] 190401 논문 정보 수집과 연구 동향 분석 세미나
Cyram Inc
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
SeongHyun Ahn
 
Linq to object using c#
병걸 윤
 
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
Kenu, GwangNam Heo
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
Tae Young Lee
 
Realm은 어떻게 효율적인 데이터베이스를 만들었나?
Leonardo YongUk Kim
 
Ji 개발 리뷰 (신림프로그래머)
beom kyun choi
 
영상 데이터의 처리와 정보의 추출
동윤 이
 
Ad

Similar to 데이터 분석 1 - 소개 (20)

PDF
[PyCon KR 2018] 진실은 언제나 하나! : Python으로 만나보는 Digital Forensic
Donghyun Kim
 
PDF
파이썬 데이터 분석 (18년)
SK(주) C&C - 강병호
 
PDF
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
Ian Choi
 
PPT
I phone 2 release
Jaehyeuk Oh
 
PDF
파이썬으로 익히는 딥러닝
SK(주) C&C - 강병호
 
PPTX
The beginner’s guide to 웹 크롤링 (스크래핑)
Eunjeong (Lucy) Park
 
PPTX
System+os study 1
J J
 
PPTX
Nlp study1
Lee Gyeong Hoon
 
PPTX
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
중선 곽
 
PDF
소프트웨어 2.0을 활용한 게임 어뷰징 검출
정주 김
 
PDF
딥러닝 세계에 입문하기 위반 분투
Ubuntu Korea Community
 
PPTX
[H3 2012] 오픈소스로 개발 실력 쌓기
KTH, 케이티하이텔
 
PDF
리눅스 커널 기초 태스크관리
Seungyong Lee
 
PPTX
웹기술 이해 (프론트엔드 기초)
JoonHee Lee
 
PPTX
Open source engineering - 0.1
YoungSu Son
 
PDF
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XpressEngine
 
PDF
딥러닝을 활용한 뉴스 메타 태깅
if kakao
 
PPTX
KrKwic내용분석특강(november2006)
Han Woo PARK
 
PDF
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
Wonha Ryu
 
PDF
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
NAVER Engineering
 
[PyCon KR 2018] 진실은 언제나 하나! : Python으로 만나보는 Digital Forensic
Donghyun Kim
 
파이썬 데이터 분석 (18년)
SK(주) C&C - 강병호
 
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
Ian Choi
 
I phone 2 release
Jaehyeuk Oh
 
파이썬으로 익히는 딥러닝
SK(주) C&C - 강병호
 
The beginner’s guide to 웹 크롤링 (스크래핑)
Eunjeong (Lucy) Park
 
System+os study 1
J J
 
Nlp study1
Lee Gyeong Hoon
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
중선 곽
 
소프트웨어 2.0을 활용한 게임 어뷰징 검출
정주 김
 
딥러닝 세계에 입문하기 위반 분투
Ubuntu Korea Community
 
[H3 2012] 오픈소스로 개발 실력 쌓기
KTH, 케이티하이텔
 
리눅스 커널 기초 태스크관리
Seungyong Lee
 
웹기술 이해 (프론트엔드 기초)
JoonHee Lee
 
Open source engineering - 0.1
YoungSu Son
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XpressEngine
 
딥러닝을 활용한 뉴스 메타 태깅
if kakao
 
KrKwic내용분석특강(november2006)
Han Woo PARK
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
Wonha Ryu
 
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
NAVER Engineering
 
Ad

데이터 분석 1 - 소개

  • 1. DataAnalysis (Lecture 1 - Introduction) 1 Jaewook Byun Ph.D. Assistant Professor, Department of Software, Sejong University Associate Director, Auto-ID Labs, Korea [email protected] , [email protected] https://sites.google.com/view/jack-dfpl/home
  • 2. 목차 • 데이터 엔지니어링 소개 • 데이터 처리 과정 소개 • 실 세계 데이터 셋 소개 • 실습 환경 소개 및 구축 • 실 세계 데이터 셋 워밍업 2
  • 3. 데이터 엔지니어링 소개 • 기술의 시대 • 방대한 양의 데이터와 인공지능 기술을 활용한 서비스의 폭발적인 등장 3 Netflix icon: https://en.wikipedia.org/wiki/Netflix Netflix screen recording: www.netflix.com DeepMind icon: https://en.wikipedia.org/wiki/DeepMind Deepmind Image: https://www.exoplatform.com/blog/2016/03/18/machine-crushes-go-world-champion/ DeepDream icon: https://southsouthwest.com.au/news/google-deepdream/ DeepDream image: https://deepdreamgenerator.com/
  • 4. 데이터 엔지니어링 소개 • 빅데이터란? • 가트너 리포트: "2021년에는 620억개의 사물이 존재” • 620억개의 사물과 79억명의 사람이 빠르게 만들어내는 이질적인 큰 규모의 데이터 4 Big Data Variety Velocity Volume Data in 30 sec. 가트너 인용: https://www.gartner.com/en/newsroom/press-releases/2021-04-01-gartner-forecasts- global-devices-installed-base-to-reach-6-2-billion-units-in-2021 빅데이터 icon: https://www.pngkit.com/bigpic/u2w7r5e6t4r5r5e6/ 오른쪽 그림: https://pbs.twimg.com/media/CJpQUc2WUAQHztb.png Internet in 30 sec.: https://www.digitalinformationworld.com/2014/05/Twitter-Facebook-GooglePlus-Instagram-Pinterest-Real-Time-Internet-infographic.html
  • 5. 데이터 엔지니어링 소개 • 기술 범람의 시대 5 이미지: https://mattturck.com/data2019/
  • 6. 데이터 엔지니어링 소개 • 데이터엔지니어링이란? • 특정 목적의 서비스를 만들기 위해 빅데이터의 파이프라인을 설계 구축하는 것 • 데이터 수집, 데이터 가공, 데이터 저장 등 6 데이터 저장 데이터 가공 데이터 수집 Data processing, data collection and data storage icons: www.flaticon.com 빅데이터 icon: https://www.pngkit.com/bigpic/u2w7r5e6t4r5r5e6/ Netflix screen recording: www.netflix.com Deepmind Image: https://www.exoplatform.com/blog/2016/03/18/machine-crushes-go-world-champion/ DeepDream 이미지: https://deepdreamgenerator.com/
  • 7. 데이터 엔지니어링 소개 • 본 강의의 소개 • 개념적 • 실 세계 오픈 데이터를 처리 • 특정 문제에 대한 적절한 자료구조 선택의 중요성 학습 • 데이터 파이프라인 설계 구축 과정의 숙달 • 실무적 • Java Collection Framework 학습 • Java Parallel Stream 학습 • 사전지식 • 자료구조 • 객체지향 프로그래밍 • Java 언어 • 실습환경 • Open JDK 15 • Eclipse IDE for Enterprise Java and Web Developers 7
  • 8. 데이터 처리 과정 • 데이터 수집 • 데이터 소스와 수집 방법이 다양함 • 데이터 소스 • 웹 데이터, 센서 데이터, 파일, 데이터베이스 등 • 데이터 수집 방법 • API 호출, 센서 신호, 파일 읽기, 데이터베이스 접근 등 8 Facebook은 개발자들에게 데이터를 API를 통해 제공함 /me?fields=email,id,name + 억세스 토큰  본인의 email,id,name 획득 예) 페이스북 ICON: https://en.wikipedia.org/wiki/Facebook
  • 9. 데이터 처리 과정 • 데이터 수집 • 본 과정에서 사용되는 오픈 데이터셋 • Stanford Network Analysis Project (SNAP) • 50개 이상의 네트워크 데이터셋 제공 • https://snap.Stanford.edu/data/ • 이메일 데이터 • http://snap.stanford.edu/data/email-EuAll.html • 2003년 2005 사이에 이메일을 보낸 사실에 대한 기록 • 계정은 익명화 되어 숫자로 제공 9 # 데이터 명세 # 데이터 명세 # … 0 1 1 2 1 3 … 0 1 2 3 “계정 1이 계정 2에게 이메일을 보냄”
  • 10. 데이터 처리 과정 • 데이터 가공 • 데이터 저장을 위한 형태로 데이터를 가공 • 데이터 추상화, 데이터 파싱, 데이터 검증, 데이터 정제 등 10 # 데이터 명세 # 데이터 명세 # … 0 1 0 1 0 *1912ㄴ 5 0 8 0 11 0 20 0 48 0 430 … 데이터 명세 제거 중복 데이터 제거 누락 데이터 제거 결함 데이터 제거 “0 20” 처리할 데이터 “0” “20” 토큰화 정수변환 0 20
  • 11. 데이터 처리 과정 • 데이터 저장 • 데이터를 특정 목적의 서비스를 만들기 적절한 형태로 유지함 • 메모리, 데이터베이스 등 11 # 데이터 명세 # 데이터 명세 # … 0 1 0 4 0 5 0 8 0 11 0 20 0 48 0 130 0 160 … 메모리 데이터베이스 리스트 스택 큐 해시 트리 관계형DB 문서형DB 그래프DB 0 130 이메일 설계도 데이터 추상화: 보낸 사람(정수) 받는 사람(정수) 프로시저 추상화: … 이메일 객체 보낸 사람: 0 받는 사람: 8 변환기
  • 12. 실습 환경 준비 • Open JDK 15 • Microsoft Windows 10 기준 • 다운로드: https://jdk.java.net/archive/ 12 압축을 푼 후 아래 폴더의 모습 C:Program Filesjavajdk-15.0.2
  • 13. 실습 환경 준비 • Open JDK 15 • 환경 준비 영상 • 유튜브: https://youtu.be/Zqi4ayfhEQc 13
  • 14. 실습 환경 준비 • Eclipse IDE for Enterprise Java and Web Developers • Microsoft Windows 10 기준 • 다운로드: https://www.eclipse.org/downloads/packages/ 14
  • 15. 실습 환경 준비 • Eclipse IDE for Enterprise Java and Web Developers • 환경 준비 영상 • 유튜브: https://youtu.be/ivjPjcJpNes 15
  • 16. 실 세계 데이터 셋 추출 및 모델링 실습 • 실습을 위한 개념 소개 • 객체지향 프로그래밍: 개념을 추상화 해 놓은 클래스들의 객체들을 조합하여 목적을 이루어가는 것 • 파일 읽기 • 특정 위치의 파일을 한 줄 읽을 수 있는 BufferedReader 클래스를 객체화 하여 파일 읽기를 수행 • 한 줄 읽기를 반복하여 전체 파일 읽기를 수행 • Email 데이터 위치: http://snap.stanford.edu/data/email-EuAll.html • 실 세계 데이터셋 위치: C:UsersSejongDAemail.txt 로 가정 16 BufferedReader r = new BufferedReader(new FileReader( “C:UsersSejongDAemail.txt")); String line = r.readLine();
  • 17. 실 세계 데이터 셋 추출 및 모델링 실습 • 실습을 위한 개념 소개 • 파일 읽기 • BufferedReader 활용 17 생성자 Class FileReader() : 문자로 이루어진 파일을 읽을 수 있는 클래스 예외처리: FileNotFoundException : 파일을 찾지 못하였을때 발생 FileReader f = new FileReader(“C:UsersSejongDAemail.txt"); email.txt 파일시스템
  • 18. 실 세계 데이터 셋 추출 및 모델링 실습 • 실습을 위한 개념 소개 • 파일 읽기 • BufferedReader 활용 18 생성자 Class BufferedReader(Reader in) : 버퍼를 이용하여 효율적으로 문자열을 읽는 클래스 BufferedReader r = new BufferedReader( new FileReader(“C:UsersSejongDAemail.txt")); email.txt Buffer 파일시스템
  • 19. 실 세계 데이터 셋 추출 및 모델링 실습 • 실습을 위한 개념 소개 • 파일 읽기 • BufferedReader 활용 19 # Directed graph (each unordered… # Email network of a large Europe… # Nodes: 265214 Edges: 420045 연산자(BufferedReader) String ReadLine(): 텍스트의 한 줄을 읽어옵니다.만약 텍스트의 끝에 도달 하면 null 을 반환한다 예외처리: IOException : I/O 에러 발생시 발생한다 String line; line = r.readLine()
  • 20. 실 세계 데이터 셋 추출 및 모델링 실습 • 실습을 위한 개념 소개 • 파일 읽기 • BufferedReader 활용 20 String ReadLine(): 텍스트의 한 줄을 읽어옵니다.만약 텍스트의 끝에 도달 하면 null 을 반환한다 예외처리: IOException : I/O 에러 발생시 발생한다 String line; # Directed graph (each unordered… # Email network of a large Europe… # Nodes: 265214 Edges: 420045 line = r.readLine(); line = r.readLine(); 연산자(BufferedReader)
  • 21. 실 세계 데이터 셋 추출 및 모델링 실습 • 실습을 위한 개념 소개 • 파일 읽기 • BufferedReader 활용 21 String ReadLine(): 텍스트의 한 줄을 읽어옵니다.만약 텍스트의 끝에 도달 하면 null 을 반환한다 예외처리: IOException : I/O 에러 발생시 발생한다 String line; # Directed graph (each unordered… # Email network of a large Europe… # Nodes: 265214 Edges: 420045 line = r.readLine(); line = r.readLine(); line = r.readLine(); 연산자(BufferedReader)
  • 22. 실 세계 데이터 셋 추출 및 모델링 실습 • 실습을 위한 개념 소개 • 파일 읽기 • BufferedReader 활용 22 String ReadLine(): 텍스트의 한 줄을 읽어옵니다.만약 텍스트의 끝에 도달 하면 null 을 반환한다 예외처리: IOException : I/O 에러 발생시 발생한다 String line; # Directed graph (each unordered… # Email network of a large Europe… # Nodes: 265214 Edges: 42004 line = r.readLine(); line = r.readLine(); line = r.readLine(); line = r.readLine(); 연산자(BufferedReader)
  • 23. 실 세계 데이터 셋 추출 및 모델링 실습 • 실습을 위한 개념 소개 • 데이터 파싱 • BufferedReader의 readLine 연산을 통해 얻어진 문자열을 프로그래밍 언어가 이해할 수 있는 형 태로 처리 23 # Directed graph (each unordered… # Email network of a large Europe… # Nodes: 265214 Edges: 420045 # FromNodeId ToNodeId 0 1 0 4 0 5 0 8 0 11 0 20 0 48 … #으로 시작하는 데이터 설명 무시 boolean startsWith(“#”) TAB(t)으로 문자열을 분리 String[] split(“t”) 0이 1에게 메일을 보낸 이벤트 배열의 요소를 정수형(Integer)로 변환 static int parseInt(“1”) email.txt
  • 24. 실 세계 데이터 셋 추출 및 모델링 실습 • 실습을 위한 개념 소개 • 데이터 파싱 • BufferedReader의 readLine 연산을 통해 얻어진 문자열을 프로그래밍 언어가 이해할 수 있는 형 태로 처리 24 연산자(String) boolean startsWith(String prefix) : 문자열이 특정 prefix 로 시작하면 true 를 반환한다 String line = r.readLine(); # Directed graph (each unordered pair of nodes is … if(line.startsWith("#")) continue; true
  • 25. 실 세계 데이터 셋 추출 및 모델링 실습 • 실습을 위한 개념 소개 • 데이터 파싱 • BufferedReader의 readLine 연산을 통해 얻어진 문자열을 프로그래밍 언어가 이해할 수 있는 형 태로 처리 25 연산자(String) String[] split(String regex) : 문자열을 주어진 정규표현식에 맞춰 분리 한다 String line = "0 1"; String[] splited =line.split("t"); splited[0] splited[1] ‘0’ ‘1’ ‘0’ ‘t’ ‘1’
  • 26. 실 세계 데이터 셋 추출 및 모델링 실습 • 실습을 위한 개념 소개 • 데이터 파싱 • BufferedReader의 readLine 연산을 통해 얻어진 문자열을 프로그래밍 언어가 이해할 수 있는 형 태로 처리 26 연산자(Integer) static int parseInt(String s) : 숫자형의 문자열 ‘s’ 를 10진수의 정수형 으로 반환한다 예외사항: NumberFormatException : 숫자형의 문자열이 아닐때 발생한다 int num1 = Integer.parseInt("3"); int num2 = Integer.parseInt("5"); num1 + num2 8 int num = Integer.parseInt("a");
  • 27. 실 세계 데이터 셋 추출 및 모델링 실습 • 실습을 위한 개념 소개 • 데이터 추상화 • Java 클래스 • 데이터 추상화 • 프로시저 추상화 27 # Directed graph (each unordered… # Email network of a large Europe… # Nodes: 265214 Edges: 420045 # FromNodeId ToNodeId 0 1 0 4 0 5 0 8 0 11 0 20 0 48 … email.txt 0이 1에게 메일을 보낸 이벤트 public class Email { //데이터 추상화 int from; // 보낸 사람 int to; // 받는 사람 //프로시저 추상화 public Email(int from, int to){ this.from = from; this.to = to; } public String toString(){ return from + “->” + to; } } Email e1 = new Email(0,1); System.out.println(e1); 인스턴스화 콘솔 결과 0->1 콘솔 추상화 매개변수를 콘솔에 출력
  • 28. 실 세계 데이터 셋 추출 및 모델링 실습 • 실 세계 데이터 셋 추출 및 모델링 실습 수행 • 환경 준비 영상 • 유튜브: https://youtu.be/mjDkkk2T74U 28