본문 바로가기
스터디/데이터 분석 공부

통계교육원에서 초급 강의 수료!

by YOON TONG 2021. 8. 5.
반응형

10대 때는 학문적 호기심보다는 그 나이대에 해야하는거니까 학창시절을 보내고,

당시 돈도 많이 벌고싶고 경제학을 좋아해서 운 좋게 경제학과를 입학했으나,

공부 잘하는 친구들은 너무나 많았고

20대도 그냥저냥 시간을 때웠다고 해야하나.. 열심히 공부한것도 아니고 열심히 유흥을 즐긴것도 아니었다ㅠ

이렇다할 경험도 없고 흥미도 없이 지냈을 뿐..

관심분야가 없으니 부모님이 하라는대로, 남들이 많이 하는대로

그렇게 시험공부를 하고 취업을 했다.

 

남편을 만나 미국으로 오면서 열심히 놀고 쉬었닼ㅋㅋ

처음에는 적당히 할만한 직업이 뭐가 있을까 고민하다 초음파사(Sonographer)를 하려고 했으나

서류를 잘못써서 학비보조를 못 받게 되자 이때다싶어 또 놀았닼ㅋㅋㅋ

솔직히 다시 지원했으면 됐는데 스트레이트로 진행이 안되니 김빠져서 자포자기(?)한 꼴이닼ㅋㅋ

 

아직은 고졸인 남편이(ㅋㅋ) Computer science를 공부하는걸 보고

같이 미적분 공부도하고..(공부하면서 대학생때 왜 열심히 안 들었을까 후회함)

JAVA, Python, DB 이런게 도대체 뭔가 궁금해져서 인터넷에 찾아보기 시작했다.

 

코세라나 유데미같은 곳에서 온라인 강의를 들으면 수료증도 받을 수 있지만 영어강의라 사실 부담이 되었다.

통계교육원에서 제공하는 강의는 무료인데다가 강의도 제법 다양한 편이라 입문용으로 선택하게 되었다.

수료한 강의는 통계맛보기, 통계학의 이해, 데이터 분석을 위한 SQL입문, 파이썬 데이터분석 초급이다.

앞으로 들어볼까 고민하는 강의는 빅데이터와 통계, R기초와 활용, 엑셀로 배우는 통계분석 , 회귀분석, 시계열자료...

왜이리 많을깤ㅋㅋㅋ 

일단은 어제 Udemy에서 세일하길래 질렀으니 통계교육원꺼는 나중에 또 들어야겠다!!


[Python 데이터분석 초급]

1. 파이썬 시작하기

- 스크립트 언어 : 소스코드를 한줄씩 읽고 바로 실행하는 interpreter 방식인 Pyhon.

  vs. 컴파일 언어(JAVA, C++ / 전체 소스 코드를 컴파일해서 실행)

 

- 특징

  : 동적 데이터 type 결정 지원 => 원하는 값을 넣기만 하면 알아서 자료형type 결정해줌.(내가 지정할 필요없음) 

   고수준의 내장 객체 자료형 제공, 많은 수의 라이브러리 제공...

 

2. 파이썬 언어

- 변수: 데이터 값을 저장하기 위한 '공간' / 값을 입력하면 알아서 type결정(동적 결정)

- input() print() / 수치계산을 위해서는 type변환필요(str => int(정수)/float(실수))

- 함수에 대한 상세 설명: 주피터에서 Shift + Tab으로 확인

 

- 주석 : #, """""", ''''''

- 세미콜론(;) : 한 줄로 여러개의 변수 값 지정할 수 있음 ex). a:2 ; b:7 ; c:14

 

- 자료형 : 자료의 종료/타입을 식별하기 위함. 파이썬은 '동적 자료형 결정'이기에 type()으로 유형 확인 후 진행하면 됨.

- 내장 자료형의 종류 : 수치형, 문자열, 리스트, 딕셔너리 등

 

- 계산 실습) 섭씨 화씨 변환, BMI 계산, 전년대비 증감률 

 

3. 내장 자료형(수치형, 문자열)

<수치형>

- int(변수) > print(type(변수)) : str에서 int변경 가능

- 정수int, 실수float, 복소수complex(2+4j 의 형태)

 

<문자열>

- str(변수) > print(type(변수)) : int에서 str변경 가능(숫자 형태의 문자열)

- "", ''로 값 입력

- 시퀀스 자료형이기때문에 '인덱스'로 값 추출 가능 ex). print(a[:7])

- 문자열 함수

  ex). a= 내장 자료형

       print(a .split())

       ['내장', '자료형']

  upper(전부다대문자) lower(전부소문자) swapcase(대소문자변환) capitalize(첫글자만) title(각 단어 첫대문자)

  split() index() find()

 

- 데이터 정제 실습) 특정 문자 분리하기, 문자열 다듬기, 숫자 연산, 타입 변경

 

4. 내장 자료형(리스트, 튜플, 사전, 집합)

<리스트 자료형>

- 객체를 순차적 저장 L = [1,2,3] 대괄호

  => '인덱싱, 슬라이싱'  

 - 리스트 함수

   count(값의 개수) append(값을 리스트의 새로운 요소로 추가) insert(위치, new값 //원하는 위치에 값 추가)

 

<튜플 자료형>

- 리스트와 비슷하게 순차적 저장 but 값 변경 불가 t = tuple(1,2,3) 소괄호

  => 순차적이기때문에 '인덱싱, 슬라이싱'

-  값이 여러개일때 활용

 

<딕셔너리 자료형>

- 사전처럼 key, value로 데이터 저장  d = { 'a':1 , 'b':2 } 중괄호

- 순차성/인덱스가 아닌 key로 값 저장하기 때문에 => 인덱싱,슬라이싱 X 

 

<집합set 자료형>

- 순서 없는 자료형 s = {1,2,3}  혹은 s = set("Hello")

- s1, s2의 집합일 있을때

  교집합: print(s1 & s2) 

  합집합: print(s1 l s2)

  차집합: print(s1 - s2)

- 데이터의 중복 제거시 활용/통계관련 프로그래밍시 활용 : ex) s.remove(4) > print(s) 

 

-데이저 정제 실습) 튜플 자료형에 추가 수정 삭제 / 하나의 딕셔너리로 합치기 / 중복값 지우기 / 내림차순 정렬

>>> T = (1,2,3,4,5,6,7,8)
>>> L = list(T)                                   튜블 자료형은 값 변경이 불가능하니까 리스트 자료형으로 변경해주기
>>> print(type(L))
<class 'list'>
>>> print(L)
[1, 2, 3, 4, 5, 6, 7, 8]
>>>
>>>
>>> L(0) = 0
  File "<stdin>", line 1
    L(0) = 0
    ^
SyntaxError: cannot assign to function call
>>> L[0] = 0                                         리스트 자료형은 대괄호 사용하니까 주의!! 0번째 인덱스에 값 '0'추가하겠다.
>>> L.append(9)
>>> L.remove(8)
>>> print(L)
[0, 2, 3, 4, 5, 6, 7, 9]
>>> dic1 = {'a':1, 'b':2, 'c':3}
>>> dic2 = {'b':5, 'c':1, 'd':7}
>>> dic1.update(dic2)                         dic1에 dic2의 값 합치는건데
>>> print(dic1)
{'a': 1, 'b': 5, 'c': 1, 'd': 7}              중복된 값은 new값인 dic2에서 가져옴!! (반대로 dic2.update(dic1)이라면 a,b,c,d값 print됨
>>> data = [2012,2009,2014,2018,2011,2013,2015,2012,2015,2014]
>>> print(type(data))
<class 'list'>                                              data type 확인해보니 리스트네. 데이터 중복제거가능한 집합type으로 변경
>>> data = set(data)
>>> print(type(data))
<class 'set'>
>>> print(data)                                               집합type의 data를 출력하니 중복숫자 제거됐으니,
{2018, 2009, 2011, 2012, 2013, 2014, 2015}
>>> data = list(data)                                        다시 리스트type으로 변경해 출력하면 완성!!!
>>> print(data)
[2018, 2009, 2011, 2012, 2013, 2014, 2015]
>>> data = [6,4,8,5,1,2,9,15,45,0]
>>> data.sort()
>>> print(data)
[0, 1, 2, 4, 5, 6, 8, 9, 15, 45]
>>> data.reverse()
>>> print(data)
[45, 15, 9, 8, 6, 5, 4, 2, 1, 0]

 

5. 조건문 if

제어문: 원하는 결과를 얻기 위한 제어장치로 조건문, 반복문 등

 

- bool자료형 : True/False로 나뉘는 자료

- 관계연산자 = 비교연산자 

- 논리연산자 : and/or/not

- 조건문 : ex). 웹페이지 로그인시 안내메시지 창 

 

- 파이썬의 조건문

if score > 90:
      print('굿잡')
  if score < 90:
      print('보통이다')
if score > 90:
    print('굿잡')
else:
    print('보통이다')

- 실습)

age = int(input('나이를 입력하세요'))
together = int(input('부모님 동행여부를 입력하세요. 0: 미동행, 1:동행'))

if age >= 19:
    print('즐거운 관람되세요^^')
elif age < 19 and together == 1:
    print('부모님동행하에 즐거운 관람되세요^^')
else:
    print('미성년자 관람불가입니다.')



>>> 
= RESTART: C:/Users/AppData/Local/Programs/Python/Python39/if_example.py =
나이를 입력하세요5
부모님 동행여부를 입력하세요. 0: 미동행, 1:동행0
미성년자 관람불가입니다.
>>> 
= RESTART: C:/Users/AppData/Local/Programs/Python/Python39/if_example.py =
나이를 입력하세요5
부모님 동행여부를 입력하세요. 0: 미동행, 1:동행1
부모님동행하에 즐거운 관람되세요^^
>>> 
= RESTART: C:/Users/AppData/Local/Programs/Python/Python39/if_example.py =
나이를 입력하세요35
부모님 동행여부를 입력하세요. 0: 미동행, 1:동행0
즐거운 관람되세요^^
>>> 35살인데 왜.........부모님 동행여부를 체크하냐ㅠㅠㅠㅠ 바보야

 

6. 반복문 for, while

중복코드 사용때 활용

<for 반복문>

- 시퀀스 타입 : 리스트, 튜플, 스트링

for 아이템 in 반복가능 객체:
   실행코드
리스트, 튜플 문자열, 딕셔너리, 집합  수치형
L = [[1,2],[3,4],[5,6]]
for i,j in L :
    print(i+j)

3
7
11
for i in {1,2,3}
    print(i)

1
2
3
불가
continue range() => 인덱스로 접근
s = "Hello"
cnt = 0
for i in s:
    if(i == 'e'):
        print("i is e")
        continue
    cnt += 1

i is e
4

L = ['a',9,[1,2,3],('a','b')]
for i in ragne(len(L)):
    print(L[i])

a
9
[1,2,3]
('a', 'b')

<while 반복문>

무한루프, 조건문 + break보조 제어문, 조건문 + continue보조 제어문

 

- 실습)

data = []
for i in range(1,101):
    if i % 2 == 1:
        print(i, end=' ')                   # 1~100중 홀수 추출


while True:
    print()
    print('종료를 하려면 숫자1, 숫자2 모두 0을 입력하세요.')
    num1 = int(input('숫자1을 입력해주세요'))
    num2 = int(input('숫자2를 입력해주세요.'))

    if num1 ==0 and num2 ==0:
        print('종료되었습니다.')
        break
    print('두 수의 총합은', num1 + num2, '입니다.')

= RESTART: C:/Users/AppData/Local/Programs/Python/Python39/while True.py =

종료를 하려면 숫자1, 숫자2 모두 0을 입력하세요.
숫자1을 입력해주세요15426
숫자2를 입력해주세요.158523
두 수의 총합은 173949 입니다.

종료를 하려면 숫자1, 숫자2 모두 0을 입력하세요.
숫자1을 입력해주세요0
숫자2를 입력해주세요.0
종료되었습니다.
>>> 

 

7. 함수

8. 모듈

오픈소스 => 모듈(라이브러리)

<모듈의 이해>

- 모듈: 프로그래밍에 필요한 자료들. 

- import .모듈명     으로 불러오기

 - 호출 :  from모듈명 import 식별자 : 모듈 내 특별 식별코드 불러옴

 

<통계를 위한 모듈>

데이터 분석,통계 인공지능 데이터분석
Numpy, Pandas... Tensorflow, PyTorch,... BeautifulSoup, selenium

Numpy: 편리한 행렬 연산, 선형대수함수, 푸리에 변환,,,

SciPy: 넘파이 기반 동작, 선형대수 등 공학용

Matplotlib : 시각화모듈(막대그래프 등)

Pandas : 데이터 정제 및 분석

 

- 모듈 실습 : 로또 번호 생성기(실패함...다시해봐)

import random


lotto = []
while True:
    temp = random.random()
    temp = temp * 100
        if temp >= 1 and temp < 46:
            lotto.append(int(temp))
            lotto = set(lotto)
            lotto = list(lotto)

        if len(lotto) == 6:
            break

print(lotto)

 

9. 데이터 다루기

<데이터 수집 및 가공 방법>

 - 웹 크롤링 : 원하는 데이터 수집/가공/활용

 - request모듈 : http요청/응답 관련 기능

import requests
url = "https://www.daum.net"
req = requests.get(url)

print(req.text)

 - bs4모듈 : 홈페이지 내 데이터 추출. 웹 문서 구조를 안다면 손쉽게 활용. passer에 따라 명령 수행

- re모듈 : 정규표현식 사용. 문자열 검색 및 치환에 활용. 데이터 가공에 많이 사용. 

 

 

<데이터 수집 및 가공하기>

재생산 과정 : 탐색 > 수집 > 정제 >저장 > 활용

수집 데이터 선정 기준 : 수집가능성, 보안, 정확성, 수집 비용, 난이도

데이터 패턴 파악 > 일반화 > 수집

 

실습) N사 영화 페이지에서 영화 랭킹 가져오기, 통계교육원 공지사항 가져오기

 

10. 통계 및 데이터 분석을 위한 Numpy, Pandas 모듈

실습) 장르별 영화 빈도 분석하기, 

12. 데이터 시각화

1. 데이터 시각화 위한 모듈

matplotlib(가장 많이 사용되는 시각화 모듈)

 

 


프로그램이 작동을 하니까 신기해서 재밌게 따라했는데

모듈 내용 이후부터는... 그냥 완강이라도 하자라는 마음으로 듣기만 했닼ㅋㅋㅋ

개인적으로 파이썬보다 SQL이 더 쉽고 재밌었다.

반응형

댓글