SlideShare a Scribd company logo
1 of 28
Download to read offline
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

What's hot

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

What's hot (20)

20141223 머하웃(mahout) 협업필터링_추천시스템구현
20141223 머하웃(mahout) 협업필터링_추천시스템구현20141223 머하웃(mahout) 협업필터링_추천시스템구현
20141223 머하웃(mahout) 협업필터링_추천시스템구현
 
SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8
 
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariochoTfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
 
Collection framework
Collection frameworkCollection framework
Collection framework
 
Java와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 SikuliJava와 Python의 만남: Jython과 Sikuli
Java와 Python의 만남: Jython과 Sikuli
 
Python on Android
Python on AndroidPython on Android
Python on Android
 
Gpg1
Gpg1Gpg1
Gpg1
 
Python programming for Bioinformatics
Python programming for BioinformaticsPython programming for Bioinformatics
Python programming for Bioinformatics
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 
Openface
OpenfaceOpenface
Openface
 
JVM 메모리 해부학
JVM 메모리 해부학JVM 메모리 해부학
JVM 메모리 해부학
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의
 
[발표자료] 190401 논문 정보 수집과 연구 동향 분석 세미나
[발표자료] 190401 논문 정보 수집과 연구 동향 분석 세미나[발표자료] 190401 논문 정보 수집과 연구 동향 분석 세미나
[발표자료] 190401 논문 정보 수집과 연구 동향 분석 세미나
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)
 
Linq to object using c#
Linq to object using c#Linq to object using c#
Linq to object using c#
 
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
2시간만에  자바 데이터처리를 쉽게 배우고 싶어요.2시간만에  자바 데이터처리를 쉽게 배우고 싶어요.
2시간만에 자바 데이터처리를 쉽게 배우고 싶어요.
 
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
파이썬 데이터과학 레벨2 - 데이터 시각화와 실전 데이터분석, 그리고 머신러닝 입문 (2020년 이태영)
 
Realm은 어떻게 효율적인 데이터베이스를 만들었나?
Realm은 어떻게 효율적인 데이터베이스를 만들었나?Realm은 어떻게 효율적인 데이터베이스를 만들었나?
Realm은 어떻게 효율적인 데이터베이스를 만들었나?
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
영상 데이터의 처리와 정보의 추출
영상 데이터의 처리와 정보의 추출영상 데이터의 처리와 정보의 추출
영상 데이터의 처리와 정보의 추출
 

Similar to 데이터 분석 1 - 소개

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

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

[PyCon KR 2018] 진실은 언제나 하나! : Python으로 만나보는 Digital Forensic
[PyCon KR 2018] 진실은 언제나 하나! : Python으로 만나보는 Digital Forensic[PyCon KR 2018] 진실은 언제나 하나! : Python으로 만나보는 Digital Forensic
[PyCon KR 2018] 진실은 언제나 하나! : Python으로 만나보는 Digital Forensic
 
파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)
 
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
집단 지성 (Programming collective intelligence) 스터디: Chapter 4 - Searching & Ranking
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 release
 
파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝
 
The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)The beginner’s guide to 웹 크롤링 (스크래핑)
The beginner’s guide to 웹 크롤링 (스크래핑)
 
System+os study 1
System+os study 1System+os study 1
System+os study 1
 
Nlp study1
Nlp study1Nlp study1
Nlp study1
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
 
소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기[H3 2012] 오픈소스로 개발 실력 쌓기
[H3 2012] 오픈소스로 개발 실력 쌓기
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리
 
웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)웹기술 이해 (프론트엔드 기초)
웹기술 이해 (프론트엔드 기초)
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1
 
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
XECon+PHPFest2014 발표자료 - ElasticSearch를 이용한 통합검색 구축방법 - 김훈민
 
딥러닝을 활용한 뉴스 메타 태깅
딥러닝을 활용한 뉴스 메타 태깅딥러닝을 활용한 뉴스 메타 태깅
딥러닝을 활용한 뉴스 메타 태깅
 
KrKwic내용분석특강(november2006)
KrKwic내용분석특강(november2006)KrKwic내용분석특강(november2006)
KrKwic내용분석특강(november2006)
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
 

데이터 분석 1 - 소개

  • 1. 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. 목차 • 데이터 엔지니어링 소개 • 데이터 처리 과정 소개 • 실 세계 데이터 셋 소개 • 실습 환경 소개 및 구축 • 실 세계 데이터 셋 워밍업 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