파이썬 크롤링과 시각화를 공부하면서 정리한 내용들이다.
실습 개발 환경
구글에서 제공하는 코랩을 사용하여 실습하고 있다.
다운로드에 소요시간을 줄이고 파이썬 기반 개발을 가능하게 한다.
코랩 간단 사용법(실습에 앞서 기초 알기)
[파이썬 확장자]
.py 는 파일 한개를 뜻함(=모듈)
.ipynb 는 주피터, 코랩의 확장자
[코랩]
-셀 단위로 실행
-셀의 위치는 중요하지 않다
-코드셀:명령어 입력 영역,프로그램 실행
-텍스트셀: 설명을 작성하는 셀로 Enter사용은 Enter을 두번 누르거나 띄어쓰기 를 두번
Ctrl+Enter : 셀 실행
Ctrl+Shift+ Enter : 한줄 실행
[모듈]
API는 남들이 만든 것으로, 사용하면 된다.
모듈은 py파일로 만들어진다. 표준 모듈은 파이썬에 기본적으로 설치되어있는 모듈로 따로 설치없이 import 통해 사용할 수 있다.
(random, math, time, datetime 등)
함수는 객체가 필요없는 프린트 같은 것, 메소드는 객체가 필요하다.
객체.메소드() => 멤버함수라고도 한다.
데이터 시각화
데이터 분석의 결과를 사용자가 쉽게 이해할 수 있도록 표현하는 것
파이썬의 데이터 시각화는 다양한 라이브러리(패키지)가 존재한다.
matplotlib,seaborm,pyecharts,wordcloud 등 패키지를 사용할 수 있다.
[matplotlib 라이브러리(패키지)]
*만약 코랩사용자가 아니라면 cmd 창에서 따로 라이브러리를 다운받으면된다.
cmd > pip install matplotlib( 가끔 정상적 설치 잏에도 IDLE에서 사용이 불가능할 경우가 발생한다.IDLE는 시각화에 관한 성격?시각화가 주된 환경이 아니라 그런다. 코랩 사용하는걸 권장한다.)
-pyplot모듈
Figure :전체 영역,도화지 같은 것
AxesSubplot :좌표평면
Axis :축 (xaxis,yaxis)
-시각화 만드는 법 1. Figure 객체를 만든다 : pyplot모듈 안의 figure()함수 사용
2. 좌표평면을 만든다 : pyplot모듈 안의 add_subplot(행,열,번호)메소드 생성. 하나의 Figure객체 안에 여러개의 subplot이 있다.
좌표평면객체.plot() -->해당 객체에다가 그래프를 그려준다.
3. 그래프 그리기 : plot(x축값, y축값)함수
4. 보기 : show()
- plot()의 주요 옵션
매개 변수명 | 의미 | 종류 |
linestyle | 선형태 | 실선('-','solid') 대시('--','dached') 점선(':','dotted') |
linesidth | 선굵기 | 실수 (ex 3.1) |
color | 색상 | 'r' / 'b' HTML 색이름(color name) HEX코드 (#) |
- subplot(행,열)
여러개의 좌표평면을 한번에 만든다.
좌표들[행][열]로 각각의 좌표평면 객체에 접근할 수 있다.
axes[0][1].plot()
axes[0][1].legend() #범례
legend(['범례1','범례2'])
각각의 plot별로 범례를 설정
이때 plot()내부에 label을 설정해준다면 따로 값을 넘겨주지 않아도 표시된다(한글 입력시 폰트를 추가)
loc: 범례 위치를 설정
'best' 0
'upper right' 1
'upper left' 2
'lower left' 3
'lower right' 4
'right' 5
'center left' 6
'center right' 7
'lower center' 8
'upper center' 9
'center' 10
- 표준 모듈
math모듈
import math
print(math.pi) //3.14...
print(math.ceil(1.1)) #올림
print(math.floor(1.9)) #내림
print(math.trunc(1.9)) #버림
print(math.trunc(-1.5))
print(math.sqrt(25)) #제곱근 실수 형태
print(math.pow(5,2)) #값의 제곱근 5**2
random 모듈
#코랩에서 한줄실행시 print문 없이 예상결과 출력가능하다.연습코딩이 편리.(ctrl+shift+enter)로 확인하기!!
import random
#randint()
random.randint(1,2) #1~2중 한개 정수 리턴.
random.randrange(10)
random.randrange(2,10)
random.randrange(2,10,3) #한개의 난수를 발생하는데, 2 5 8 중에서 리턴함.
random.random() #0~1미만의 임의의 float값을 리턴 ->확률
#확률 처리 가능
if random.random() > 0.9:
print('hi')
#choice()
season=['봄','여름','가을','겨울'] #choice() 시퀀스 자료형을 매개변수로 받아 임의 값 리턴
random.choice(season)
#sample()
random.sample([1,2,3,4,5,6],3) #매개변수로 시퀀스 자료형과 sample 갯수를 받아서 임의 값을 리스트로 리턴함(중복 혀용하지 않음)
random.saple(range(50),3)
type(range(50))
c = list(range(3,50,3))
print(c)
#suffle() #리턴이 없어 값이 섞인다.
li=[1,2,3,4,5]
random.suffle(li)
li
로또 번호 자동 생성기
1~45 숫자중 6개 뽑아 오름차순 정렬
lottoNum = random.sample(range(1,46),6)
lottoNum.sort()
print(lottoNum)
time모듈
import time
print('실행중',end='')
for i in range(10):
time.sleep(1): #1초 멈춤
print('~',end='')
print('|n 프로그램 종료')
time.time() #1970년 1월1일0시0분0초 부터 현재까지 흐른 시간을 초로 나타냄
로또번호 생성 알고리즘의 시간측정하기
start = time.time()
random.sample(range(1,46),6)
end= time.time()
print('알고리즘이 걸린 시간: ',end-start)
start= time.time()
li=[]
while len(li) !=6:
temp = random.randint(1,46)
if temp in li: #중복값을 제거
continue
li.append(temp)
end = time.time()
print('두번째 알고리즘 걸린 시간:' ,end-start)
datetime 모듈
import datetime
#now()는 메소드이다 함수가 아니다.#객체.메소드()
#날짜와 시간을 반환한다.
print(datetime.datetime.now()) #모듈명.객체명.메소드명()
#함수직접만들기
def date(year,month,day): #date()함수 숫자를 날짜형식으로 변환한다.
date = '%04d-%02d-%02d'%(year,month,day)
return date
print(date(2021,1,1))
#위와 같이 함수를 직접만들지 않아도 만들어져 있는 date함수 이용하면 더 편리
print(datetime.date(2021,1,1))
#모듈에서 특정 함수만 improt
from random import randint,sample
print(randint(1,10))
print(random.random()) #0.0~1.0
sample([1,2,3,4,5],2) # ->list타입
from random import * #여러개 모듈을 사용할 땐 사용하지 말아야 한다(모호성때문에)
random() #0~1미만
randint(1,3) #1~3포함 정수
별칭을 부여해 사용하는 방법을 통해 개발을 효율적으로 할 수 있다. 많이 사용해보기
#as 키워드 활용하여 별칭을 부여할 수 있다
import random as rd
rd.randint(1,4)
'Python' 카테고리의 다른 글
파이썬 크롤링과 시각화 기본다지기(5) (0) | 2021.09.28 |
---|---|
파이썬 크롤링과 시각화 기본다지기(4) (0) | 2021.09.23 |
파이썬 크롤링과 시각화 기본다지기(3) (0) | 2021.09.21 |
파이썬 크롤링과 시각화 기본다지기(2) (2) | 2021.09.21 |
IDLE로 간단한 그림판 실습하기 (0) | 2021.03.21 |