● 파일(영구적 보관) #객체는 모두 메모리에 만들어지고 전원꺼지면 다 사라진다.
- 논리적인 파일 구조: 파일 안에는 바이트들이 순차적으로 저장되어있고, 맨 끝에는 EOF(end-of-file)마커가 있다.
--- ㅁㅁㅁㅁㅁㅁㅁEOF
- 파일 사용 3단계:
Opening a file(읽거나 쓰기위해 파일을 사용할 수 있도록 연다.)/Using a file(열린 파일 읽거나 쓰기)
/Closing a file(파일닫기)
ex) inflle=open("xx.txt", "r") ------ infile.close() 열었던 파일 닫기 #꼭 닫아줘야한다.
#line.strip() : 공백문자를 없앤다. #line.split(",") : 줄을 쉼표별로 분리한다. ()면 띄어쓰기별로 분리.
=>a,b,c 이런식 ==> a,b,c 면 a가 1번째 줄, b가 2번째 줄 이런식.
ex) infile.readline() 이 계속해서 나오면 그 다음줄로 계속해서 넘어간다.
line= infile.readline() --> 이걸 while line!="" # 줄이 비어있지않으면 반복 으로 사용할 수도 있다.
- 파일에 데이터 쓰기
#import os.path #outfile.write(s) 문자열 s를 outfile에 쓴다.
- 데이터 추가하기 ##outfile 이라는 뜻은 새로운 파일을 만들어서 저장한다는 뜻이다.
outfile=open("phones.txt","a")
outfile.write("a 01032415151")
outfile.write("b 01032155151")
outfile.close()
- 줄바꿈 기호 삭제하기
infile=open("phones.txt","a")
for line in infile: line=line.rstrip() ##옆으로 쭈욱 나열된다. print(line)infile.close()
- 파일에서 단어 읽기(가장 많이 쓴다) for line in file 을 많이 쓸 것. 한 번 읽었으면 그 다음을 읽는다!!
infile=open("phones.txt","r")
for line in infile: ##아마 phones.txt는 한 문장 쓰고 다음 줄에 한 문장씩이었을 것. 그래서 line이 한 요소, 한 줄인 것!
line=line.rstrip() #문장들을 쭈욱 나열한다.
word_list=line.split() #쭈욱 나열한 문장들을 단어별로 쪼갠다.
for word in word_list: #반복
print(word)
infile.close()
● 외부 라이브러리
1. PIL(Python Imaging Library) 또는 필로우(Pillow) =그림판
– 이미지 처리 라이브러리를 찾는다면 PIL(Python Imaging Library)
– 필로우는 PIL와 호환성을 유지하면서 쉽게 사용할 수 있도록 한 라이브러리
– 파이썬의 Tkinter 모듈과의 호환성도 가지고 있음
2. 파이게임(Pygame)
– 파이썬으로 게임을 제작하기 위한 프레임워크
– 파이게임(Pygame)은 캔버스와 그래픽 그리기, 다채널 사운드 처리, 클릭 이벤트 처리, 충돌 감지 등의 작업을 지원
3. 넘파이(NumPy)
– 넘파이는 통계, 선형 대수, 행렬 계산, 금융 운용 등을 포함한 과학 계산과 수학 작업에 많이 사용되는 라이브러리
– 금융 시장 분석가나 회계 담당자는 넘파이(NumPy)을 사용하면 좋음.
4. 사이파이(SciPy)
– 파이썬의 ‘과학-수학’ 기능을 지원
– Linear algebra, optimization, integration, statistics, signal processing 등의 모듈 제공
– Scientific computing 과 관련된 수많은 기능들을 제공
– NumPy + SciPy 만으로 MATLAB 에서 제공하는 대부분의 계산 기능을 대체할
5. 판다스 (Pandas)
– 데이터를 가공하고 분석하기 위한 패키지
– 컬럼 이름과 행의 index 가 존재하는 엑셀의 표와 같은 자료형을 제공함
– Spreadsheets 나 relational databases 에서의 유연한 데이터 처리 기능들을 지원
6. Matplotlib
– 2차원 데이터 Plot을 그려주는 유명한 패키지
7. SciKit Learn
– Machine learning 관련
8. TensorFlow / PyTorch/ Keras
– Deep learning 관련
** 외부라이브러리 추가
- import 라이브러리이름 쳤는데 no module이면 cmd 가서 pip install 라이브러리이름
- pip list 컴퓨터에 설치된 파이썬 패키지 목록 확인
● 필로우 라이브러리
- 캔버스에 이미지 표시
- 이미지 회전: out=img.rotate(각도) tk_img=ImageTk.PhotoImage(out) #out 은 새로 만든 값
- 이미지 흐리게: out=img.filter
● Numpy라이브러리: 다차원 배열을 처리하는데 유용
ex) import numpy as np
a=np.zeros((2,2)) 결과: [[0.0.][0.0.]] #zeros 모두 0 #ones() 모두 1을 넣는다.
a=np.full((2,3),5) 결과: [[5 5 5],[5 5 5]] #full은 지정한 값만 #eye는 대각선으로 1, 나머진 0
a=np.array(range(20).reshape((4,5)) #0부터 19까지를 (4,5)배열
연산- 각 배열끼리 연산하는 것!
● requests 라이브러리: Web Scraping 웹사이트에서 HTML을 읽어와 필요한 데이터를 긁어오는 것
- 과정: 웹피이지를 읽어오는 과정 + HTML 문서에서 필요한 데이터를 뽑아내는 과정
(1) 읽어오는 과정
#resp=requests.get(사이트주소)
- 네이버에선 한글 출력 문제 없으나, 구글에선 있을 수 있다.
resp.encoding=None 으로 설정 후 resp.encoding="euc-kr"로 한글 인코딩 한다!
(2) 웹페이지 파싱(불러오는 과정)
- BeautifulSoup 모듈 사용. pip install BeautifulSoup
## BeautifulSoup 객체에서 특정 HTML 태그(들)을 찾기 위해 select() 메서드를 사용하는데,
이 메서드의 파라미터로 어떤 태크(들)을 찾을 지를 CSS 스타일의 Selector로 지정
예를 들어, select('.news li') 는 news 라는 CSS 클래스 안이 모든 li 태그들을 리턴
● pandas 라이브러리: 데이터 분석을 위해 널리 사용되는 라이브러리
1. 1차원
data=[1,3,5,7,9] s=pd.Series(data) 그러면 왼쪽은 0부터 시작하는 순서, 오른쪽은 값들이 수직으로 나열
2. 2차원
data={'year':[2016,2017,2018], 'GDP':[2,3,3], 'GDP Rate':[1,2,3]}
df=pd.DataFrame(data) 그러면 테이블 형식. 왼쪽은 순서, 상단은 year GDP GDP Rate, 빈칸은 값들 나열
3. 3차원
pd.Panel(data)
- 특정 조건 데이터 필터링: df[df['year']>2016] 이런 식으로 필터링
- 외부 데이터 읽고 쓰기: 읽기- df=pd.read_excel(경로/파일) 쓰기- df.to_파일형식(경로/파일)
● Matplotlib 라이브러리 =그래프 그리기
- from matplotlib import pyplot as plt
plt.plot([1,2,3],[110,130,120]) -> 1,2,3은 x축, 110,130,120은 y축
plt.xlabel('a') #x축 이름
plt.ylabel('b') #y축 이름
plt.title('c') # 표 이름
plt.legend(['d','f']) # 범례를 d,f 로
plt.show()
● 예제
1. 스페이스와 탭 숫자 세기
## input으로 파일이름을 받는 것 ##line.count() line 중에서 ()안에 있는 갯수를 센다. ##infile=open(path) 로 정리한다
2. 문자 횟수 출력(잘 이해가 안됨)
3. CSV 파일 읽기
4. 메뉴만들기
5. 웹페이지 파싱
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python-클래스와 객체, GUI(tkinter), 버튼, 엔트리, 캔버스 (0) | 2021.06.16 |
---|
댓글