파이썬의 지향점은 '간단한 코딩' 이다. 하지만 list만으로 데이터를 정제하기에는 무리가 있고, 이러한 요구사항을 충족하기 위해 numpy나 pandas같은 라이브러리들이 존재한다.

numpy에 대해 알아보자.

 

● Numpy란?

출처 : https://numpy.org/

까마득한 고등학생 시절 배웠던 배열을 구현하기 위한(편한) 라이브러리

기존 파이썬의 리스트는 for문을 통해 계산하는것과 같이 복잡한 과정이 필요했지만, numpy 활용으로 인해 리스트끼리의 간단한 계산이 가능하다.

 

import numpy as np

 

로 불러올 수 있고 배열간의 직접 계산이 가능하다.

 

a = np.array([1, 2, 3, 0, 0])
print(a)
>> array([1, 2, 3, 0, 0])


b = np.arange(4) 
print(b)
>> array([0, 1, 2, 3, 4])

c = a + b
print(c)
>> array([1, 3, 5, 3, 4])

 

이는 배열을 직접 지정하여 바로 계산하는 모습.

일반 list 형태였다면 for문을 통해 list n번째의 값을 꺼내서 각자 더해야하지만, numpy 덕분에 직접적인 계산이 가능하다.

 

- 어떻게 배열 형태를 출력 가능한지 확인하자.

a = np.array([['a','b','c'],['d','e','f'],['g','h','i']])

a[0,1]
>> 'b'


a[:,[0,1]]
>> array([['a', 'b'],
       ['d', 'e'],
       ['g', 'h']], dtype='<U1')


a[[0,1,2],[0,1,0]]
>> array(['a', 'e', 'g'], dtype='<U1')

첫 줄에서 선언한 a의 경우, 

[[ a, b, c],

[ d, e, f],

[ g, h, i]]

의 형태를 하고 있을 것이다.

 

a안의 요소를 검색하고 싶은 경우,

[[ 0,1,2],

[ 0,1,2],

[ 0,1,2]]

와 같이 검색이 가능하다.

 

검색 순서는 [axis = 0, axis = 1]의 조건이다.

* axis = 0 은 행 순서 기준, axis = 1 은 열 순서 기준 *

 

- numpy 팁

np.array([리스트]) = 파이썬에서 만들어준 리스트를 numpy배열로 만든다.

이때 만들어준 np[ ]안에는 조건문도 들어갈 수 있다. np에서 true인 경우에 출력도 가능하니 true, false인 경우에는 출력도 가능.

 

np.ndim(‘배열이름’) = 배열의 차원을 확인한다. (number dimension)     

 

a.shape = 배열 형태를 확인한다.(차원 개수만큼 수를 적용하여 튜플로 표시한다.)

 

a.dtype = 요소들의 자료형을 확인한다.(dimension type)

 

a.reshape(a,b) = 다른 형태의 배열로 바꾼다.

ex) np.array([[1,2,3],[4,5,6]])(2,3) 형태에서 = 배열로 칸이 줄어들어 수가 없어지는 경우는 불가.

    np.reshape(3,2)(3,2)의 형태 변환 가능, np.reshape(6,1)(6,1)의 변환 가능.    

    reshape(a,-1) 지정하면 현재 array의 최대 개수가 몇개인지 몰라도 끝번호에 맞춰줘서 변환이 용이하다.

 

 

 

numpy 조사를 하며 위키백과를 살짝 들여다보니 선형대 수학, 최근접 이웃 과 같은 아직 보기 힘든 자료들이 여럿 있었다. 언젠간 나도..!

오리엔테이션과 ZOOM 사용법 및 aivle-edu 사용법을 익히고, 이제는 실전에 들어갈 차례다.

수업은 파이썬으로 이루어진다. 앞으로 고 - 급 기술 블로거가 되어보자.

 

기본중의 기본

in = 특정 단어가 문장 안에 있는지

not in = 특정 단어가 문장 안에 없는지

\n = 줄 바꾸기, ‘’’문장’’’ = 문장에 적은 그대로 출력 가능

역슬래시 넣기 \\

print구문 내 ,마다(문장을 이어쓸 때마다) 특정 구문 넣기 == sep = ‘x’  ex) print(a,’123’,’12’,sep=’1’)

 

문자열 메소드

.format() = 변수를 불러올 수 있음. 보통 string안의 {}로 구현 가능

f’~’ = format인데, ~(문장) 안에 {} 넣고, {}안에 변수 설정함으로서 구현 가능.

format의 경우, {}안에 변수:.nf = 변수에 소수점 n개 기재

변수:,f = 변수에 1000단위쉼표 기재

변수:,.nf = 변수에 소수점n개 기재하고 1000단위 쉼표 기재

^n은 n개 공백을 주고 가운데 정렬

x^는 n개 공백을 다른 문자 x로 채우기

 

.upper() = 전체 대문자

.lower() = 전체 소문자

.capitalize() = 첫 번째 문자만 대문자

문자’.join(변수) = 변수(리스트 형태) 안의 값 사이에 문자를 넣어서 문자열로 결합시킴

.split() = () 안 문자를 기준으로 문장 분할하여 리스트로 만듦

         .split()[x] = x번째 리스트 항 출력

  @@ .split(x)[]이 문자열(‘’)을 리스트([])로, ‘’.join(x)이 리스트([])를 문자열(‘’)로

list(range(a,b,c)) 연속되는 번호를 리스트 안으로 구성 가능(a부터 b까지 c값만큼 증가)

.replace(‘바꿀 문자 대상’,’바꾼 문자’) == 문자열을 변경한다.

.lstrip() = 왼쪽 공백 없애기

.rstrip() = 오른쪽 공백 없애기

.strip() = 양쪽 공백 없애기

 

리스트

= []형태로 묶여있는 리스트. 어떤 것이든 다 들어갈 수 있다.(리스트 조차도 가능)

  ** ()는 튜플,  {}는 디렉토리

인덱싱 = 정수형 위치 인덱스로 원하는 요소를 조회하는 것 []값은 0부터 시작하고, -1부터 역순.

인덱싱으로는 문자 변경이 불가능하다.

슬라이싱 = 범위를 지정해서 일정 범위를 조회하는 것 [x:b]x번째부터 시작, b-1번째까지 슬라이싱

리스트 = 리스트는 불완전복사(그냥 대신 해주는 것 뿐)

리스트 = 리스트[:] 는 완전복사(범위를 지정해서 리스트에 실제 데이터를 추가해줌)

리스트는 평균을 구하는 함수가 없다.

.split(x)메소드 : x 문자를 구분자로, 문자열 분리후 리스트로 변환.(공백이 기본 구문자)

ex) x = [1,2,3,4,5,6,7,8]이면

x.split(‘,’)로 리스트로 변경 가능.(각 리스트 위치마다 문자 들어가겠지.)

 

x.join(s)메소드 : x를 구분자로, 요소들을 연결한 문자열로 변환한다.

Ex) x = [1,2,3,4,5,6,7,8]이면

(‘,’)join(x)로 ‘12345678’로 변경 가능.

****.split()은 ‘문자열’을 리스트로, ‘’.join()은 리스트을 ‘문자열’로 바꾼다. int는 의미 없다.

list(range(시작,끝,더해지는 수)) = 감소할때는 –로 가능 == 수를 나열하는 함수

 

문자열로 리스트 만들기 = list 함수

list_str = [‘PYTHON’]라는 문자열이 있으면

list(list_str)을 넣음으로서 [‘P’,’Y’,’…] 각 글자를 하나씩 쪼갤 수 있다.(리스트를 만드는 함수니까)

단, 문자만 가능하고 숫자는 불가능.(‘123456’)은 되는데 (123456)은 안된다.

 

.append() 메소드 = 리스트 맨 뒤에 하나를 추가한다. 원래는

x=x+[]겠지만, x.append()하면 바로 자료가 추가된다.

.insert(위치,요소) = 리스트의 특정 위치에 요소 추가

.extend(리스트)  = 리스트 뒤에 리스트를 붙인다.

.len() = 리스트 길이(값 개수)를 구한다.

del 리스트명[요소 순서] = 리스트 내 특정 요소를 삭제한다

del 리스트명[a:b] = 리스트 내 특정 범위 요소를 삭제한다

.remove() = 리스트 내 입력한 요소를 삭제한다

.clear() = 리스트 전체를 삭제한다([]로도 가능)

.pop() = 리스트 내 요소를 삭제함과 동시에 변수선언시 변수에 요소를 추가한다.

.upper() = 리스트 전체 대문자로

.reverse() = 리스트 순서를 반대로

.sort() = 리스트 요소를 오름차순으로. (reverse = True 하면 내림차순)

list ( map(요소 타입, 리스트변수)) = 특정 리스트의 모든 요소를 기재한 요소 타입을 사용해서 변환시킨다.

a = list(map(int,a) 와 같은 형태로 많이 쓰인다.

- 주요 문제

a=[‘h’,’a’,’p’,’p’,’y’]를 대문자로 바꾸자.

a= ‘/’.join(a).upper().split(‘/’)

1. 리스트의 각 항마다 ‘/’를 추가시킨 문자열로 만든다. = join이 문자열로 바뀌는 것을 잊지 말자

2. 대문자화 시킨다.

3. ‘/’를 기준으로 각 항을 분리시킨 리스트를 만든다. = split는 리스트화 시킨다는 것을 잊지 말자

a.sort().reverse()가 되지 않는 이유는? = 리스트의 메소드는 반환이 아닌 변환을 한다. sort로 변환한 이후 아무것도 반환하지 않았기 때문에 reverse에 들어갈 수 있는 변수가 없는 것!

 

 

튜플

()로 묶어진다.

tuple()로 튜플 형태로 변환 가능.

튜플 자체는 크게 중요하지 않다. 하지만, 이후 enumerate() 함수 사용시 유용하니, 잊지 말자!

 

 

집합

{}로 묶어진다.

set()로 집합 형태로 변환 가능

집합 안의 같은 자료는 단수로 취급.

순서의 의미도 없다.

len() 함수 로 원소 개수 확인 가능

in연산자로 요소가 속해 있는지 확인 가능

.append()메소드 통해서 요소 추가 가능

.update([‘요’,’소’,’들’]) 메소드 통해 여러 요소 추가 가능

.pop(‘요소’)메소드 통해서 무작위로 요소 하나 삭제하며, 동시에 삭제한 요소를 반환시킬 수 있다.

.remove(‘요소’) 메소드로 요소 제거 가능하며, 없으면 에러난다.

.discard(‘요소’) 메소드로 요소 제거 가능하며, 없어도 에러 안난다.

.clear() 메소드로 모든 요소 삭제 가능

 

딕셔너리

집합기호를 사용하며, {}, key 값과 value값을 사용해서 value를 산출해낸다.

{ key : value }

dictonary[‘key값’]  통해서 value값을 찾아낸다(몇번째 요소인지는 중요하지 않다. = 기본형이 집합이니까!)

dictonary[‘key값’] = 새로운 값   으로 딕셔너리 요소 변경 가능.

key값에는 튜플까지는 와도 리스트가 오지는 못한다(key값은 변화하면 안되는데 리스트는 변화가 가능하므로)

물론 value값에는 리스트가 올 수 있음(변경 가능하므로)

dict()함수로 딕셔너리 형식으로 변환 가능

del dictonary[‘요소’] 로 지정한 요소 삭제 가능

dictonary = {}형태로 모든 요소 삭제 가능

.pop(‘요소’)메소드 통해서 무작위로 요소 하나 삭제하며, 동시에 삭제한 요소를 반환시킬 수 있다.

.popitem()메소드로 무작위 요소 삭제 가능. pop과 마찬가지로 key&value를 튜플 형태로 반환받는다.

.get(‘key’,’대응되는 value 없는 경우 변경하는 value값’) 메소드로 key값 넣고, 지정된 value 확인 가능

      ###.get()은 대응되는 value 없으면 그 값을 대신 넣어줄 수 있는 메소드이니 참고###

.keys()메소드로 전체 key 정보 반환

.values()메소드로 전체 value 정보 반환

.items()메소드로 전체 key&value 정보 반환

 

아직까지 다른 기술블로그처럼 복잡한 코드 작업은 필요 없어보인다.

하고 보니 초라하지만, 시작이 반이다. 벌써 절반이나 왔다. 화이팅!

DX과정은 조직 내 데이터를 활용해서 새로운 기술과 결합하고 유의미한 전략과 결정을 내리도록 돕는 과정이다.

그렇기에 데이터를 정제하고 유의미한 결과를 도출하여 시각화 하는 능력이 중요하다.

현업 DX 파트에서 종사하는 지인에게 물어보니 실무에서 이런 업무를 수행하기 위해서는 기본적인 코딩능력 외에도 전처리되지 않은 자료를 수집하거나, 시각화시켜서 팀원과 협업하는 등의 작업이 더욱 중요할 수 있다고 한다.

예전에 잠깐 들었던 빅데이터 수업에서는 대부분 코딩 수업만을 진행했는데, 에이블스쿨에서는 다행히 실제 사용 가능한 통계, 발표스킬, 비정형 자료 전처리 과정 등의 수업도 진행하는 것 같다.

 

​1. Data Science란 무엇인가?

다양한 산업체의 빅데이터를 가공하고, 분석하고, 활용하는 것을 말한다.

Data Scientist와 더불어 최근 Citizen Data Scientist라는 새로운 용어가 등장했다고 하는데, 크게 복잡한 개념은 아니고 특정 분야의 정보 소화력이 뛰어난 사람이라기 보다 일반 Data Scientist를 일컫는 개념인 듯 하다.

(특정 도메인 내 빅데이터를 활용하고 본인의 비즈니스 영역 결과를 개선한다는 설명이 있다.)

결국, 데이터를 기반으로 새로운 인사이트를 도출해내는 것이 데이터 사이언스라고 할 수 있겠다.

2. Data Science 발전 과정

6V로 나타낼 수 있다.

- Technology, Hardware, Infra관점에서는

Volume(크기) = 데이터의 방대한 양

Veloocity(속도) = 일반적으로 분석하기만 했던 데이터를 실시간으로 처리하는 과정

Variety(다양성) = 정형, 비정형, 반정형 데이터를 취급

- Business, Software, Analytics관점에서는

Veracity(진실성) = 수집하고 가공한 데이터들의 신뢰성

Value(가치) = 궁극적인 비즈니스 가치창출

Visualization(시각화) = 복잡한 결과의 시각화 표현

으로 말이다.

이는 과거 내부&정형&정적 데이터만 활용하던 방법에서 새로운 AI 기반 환경에서 개발하게 되며 발전하게 된 것으로, 향후 머신러닝과 딥러닝을 통해 학습 할 계획이다.

3. 상세 분석 프로세스

1) 분석 전문가의 분석 준비(경영진 및 실무자의 요구사항 수집)

2) AS-IS 분석 = 어느 정보를 분석할지 전략 수립

TO-BE 도출 = 주제별 포인트와 방향성을 분석

3) 분석 대상 수집 및 처리 = 데이터를 정의한다(주제별 데이터 정의와 데이터 품질 및 체크)

탐색적 데이터 분석 = 주제별 EDA수령 & 유의미한 인사이트를 도출한다.

고극 데이터 분석 = 최종 타겟 모델을 개발한다(모델 적합성 검증 및 시각화)

[이후 상세 분석 프로세스의 반복을 통해서 결과에 기반한 활용방안을 제안한다.]

대략 정리해보니 코딩능력은 기본이고 특정한 정보를 다룰 수 있는 시야를 넓히는 것이 중요한 것 같다. 에이블스쿨에서는 3번 과정 상세 분석 프로젝트를 상세하게 다룰 예정이라고 한다.

수업자료를 그대로 가져오는건 저작권에 걸릴 것 같아 나름 정리를 해봤는데 오히려 도움이 될지도 모르겠다는 생각이 든다.

물론, 아직 블로그를 꾸미는건 많이 힘들다.

 

바야흐로 K-DT의 시대라고 하지만... 예전에도 IT와 금융 사이에서 금융을 선택했기에 사실 고민을 많이 했었다.

하지만 일을 하다보니, 집단이라는 틀 안에서 전문성을 쌓기보다 개인의 역량이 중요하다고 느꼈고, 금융 경력과 컨설턴트의 접목이 메리트로 다가왔기에 다시 IT에 도전하게 되었다.

● 에이블스쿨 소개

에이블스쿨은 싸피나 우테코처럼 K-DT교육의 일환으로, KT에서 진행하게 된다.

AI와 DX 2가지 트랙으로 나뉘는데 금융경력의 이점도 살리기에는 DX가 더 메리트 있다고 느껴서 DX에 지원했다.

위와 같은 트랙으로 이뤄져 있는데, AI트랙은 자소서, 코테, 인적성을 보고 DX는 자소서와 인적성만 치뤄서 초반 코딩테스트는 피해갈 수 있었다.

● 준비과정

- 자기소개서

자소서는 각 800자로

  1. 지원한 이유와 향후 계획
  2. 성장과 취업을 위해 노력해왔던 과정

과 같은 문항으로 구성되어 있다.

다행스럽게도 지원동기나 포부도 명확했고, 경력도 어느정도 갖추어져 있었기에 자소서는 막힘없이 쓸 수 있었다.

특이했던 점이라면 이전에 IT관련 교육을 들었던 경험이 있는지 기재한다거나, 특정 대학교 기준 자소서 추천 전형 정도가 있을 것 같다.

 

- 인적성

"막막했다."

똑똑한 머리도 아닌데다가 대기업 인적성을 뚫으려니 부담이 많이 됐다. 그렇다고 뭐 별 수 있나 해야지...

다른 블로그 후기를 찾아보니 시대고시 책을 많이 선호하셨고, 나는 4회독 정도 진행했다.

NCS기본이 없어서 해커스 NCS기본서도 같이 풀었는데 (정말 놀랍게도!) KT그룹 인적성 교재가 그닥 어렵지 않게 느껴져서 시험보기 전에는 큰 부담 없이 준비할 수 있었다.

물론 이후 본 시험에서 처참하게 찢어졌다^^. 체감상 5배 이상 어려운것 같았고, 감독관님 오류인지 시험이 한번 일시정지되기도 했어서 찢어졌다는 표현이 어울릴 정도로 멘탈 관리가 힘들었다.

쉽게 풀었다고 하시는 분들도 계시는데, 머리가 부러울 정도로 어려웠다...

너무 허겁지겁 풀어서인지 기억에 남았던건 별로 없고, 수추리 문제가 많이 나왔다는것 정도가 있을 것 같다.

그리고 중요한건, 펜이랑 종이를 쓰지 못한다는 점이다. 대신 화면 10시 방향에 조그마한 메모지와 계산기 기능을 제공해 주는데 체감이 윈도우 그림판과 많이 다르니, 혹시 4기를 준비하시는 예비 에이블러분들이 이 글을 보신다면

 

꼭! 프로그램 사전 확인 시간에 인적성 프로그램을 여러번 조작해보시길 추천드립니다.

나처럼 그냥 꺼버리지 말고...

● 합격발표

1주일 뒤 결과를 발표했고, 정말 다행히 합격통보를 받았다.

 

처음엔 의아했다. 시험도 못봤고, 아직 토익 점수도 없었기에 떨어질것 같아 다른 면접도 준비하던 중이었으니까.

하고자 하는 의지를 자소서에서 많이 어필했는데 그게 큰 가산점이 되었을지, 인원을 많이 뽑은 덕분인지(AI+DX 750명 가량)는 모르겠지만 나름 경쟁력 있는 사람이라는 생각이 들어 기쁘기도, 안심이 되기도 했다.

● 국민취업지원제도, 기타 질문

합격 이후 에이블스쿨 공식 오픈채팅방에 들어가게 되는데, 국민취업지원제도와 내일배움카드 발급에 대한 질문이 전체 질문 중 8할 이상이다.

선생님분들이나 담당자분들께서 골치아프실 것 같기도 하고, 유독 질문에 민감하신 분들도 계시니 많이 나왔던 질문만 간추리고자 한다.

1. 내일배움카드 발급 얼마나 걸리나요?

얼마 안걸립니다. 한 1주일정도 걸렸습니다. 전부 핸드폰으로 가능하니 지점 방문하지 말고 핸드폰으로 다 하시면 됩니다.(물론 캐바캐)

2. 국민취업지원제도 신청 얼마나 걸리나요?

캐바캐입니다. 저는 1주일, 다른 사람들은 1달 걸린다고도 합니다.

워크넷 가서 구직신청 하시고, "직업선호도검사L형" 진행하고 상담받으면 조금 더 수월하게 진행 가능합니다. 총 415문항 정도 되고, 빨리 체크하면 30분 정도 걸립니다.

최소 3영업일 간격으로 총 3번의 대면 면담이 필요하니, 합격통보 이후 최대한 빨리 신청해서 수업 도중에 빠지는 일이 없도록 합시다.

(마찬가지 캐바캐)

3. 취업지원제도 기간 내에 합격하면 어떻게 되나요?

4개월 이내 취업시 조기취업으로 남은 지원금의 절반 이상을 수령할 수 있고 6개월, 12개월 이후 취업 축하금(?) 도 받을 수 있습니다.

4. 수업기간 빼고 면접보러 가도 되나요?

취업과 관련된 일은 웬만한건 다 됩니다.

5. 취소하면 불이익 없나요?

수업 시작 이후 수업일수 180일 기준 1주일 이내에 K-DT 철회가 가능합니다. 하지만 이후에 마음이 바뀌면 철회가 아닌 취소가 되어 1인에게 1회 제공되는 K-DT무료 참여 혜택을 더이상 받을 수 없게 됩니다.

6. 훈련비 얼마나, 언제나오나요?

1형기준 국취제 50, 에이블 30(40으로 오른다는 소문 있음~  그냥 소문이었음 ㅠㅠ) 가량 나오고, 국취제는 빨리 나오는데 에이블은 조금 늦을수도 있습니다.

수업 결석이 있거나 시간이 모자라면 그만큼 차감되기도 합니다.

2형은 20만원 가량 나온다고 합니다.

7. 졸업해야 하나요?

졸업까지 수업연한이 2년 이상 남아있으면 안된다고 합니다. (대학 재학생 제외) 또, 미취업자여야 합니다.

8. 사업 운영중이면 안되나요?

특정 연 매출 넘어가거나 개업한지 1년 이내면 안됩니다.

9. KT 입사 티오는 어떻게 되나요?

그때 상황 봐야 아는 것 같습니다.

10. 대면수업도 있나요?

아직까지는 없다고 합니다.

11. 노트북 대리수령은 가능한가요?

가족이면 가능합니다.

이정도 질문이 될 것 같다. 에이블스쿨 공식 홈페이지에 더 자세하게 나와있으니, 다들 혼선 없이 준비하셔서 교육에 집중하셨으면 좋겠습니다.

 

자세한 질문은 여기에서!

https://aivle.kt.co.kr/home/brd/faq/main?mcd=MC00000056

 

AIVLE

KT AIVLE School에 대해 궁금한 점을 확인해 보세요 문의처 ktaivle@kt.com * 등록된 FAQ 정보가 없습니다.

aivle.kt.co.kr

에이블스쿨 소개자료.pdf
4.84MB

+ Recent posts