본문 바로가기
프로그래밍 언어/Python

Python-파일, 라이브러리(필로우, Numpy, requests, pandas, Matplolib)

by Ing_til_death 2021. 6. 16.

파일(영구적 보관) #객체는 모두 메모리에 만들어지고 전원꺼지면 다 사라진다.

 

- 논리적인 파일 구조: 파일 안에는 바이트들이 순차적으로 저장되어있고, 맨 끝에는 EOF(end-of-file)마커가 있다.

--- ㅁㅁㅁㅁㅁㅁㅁEOF

 

- 파일 사용 3단계:

Opening a file(읽거나 쓰기위해 파일을 사용할 수 있도록 연다.)/Using a file(열린 파일 읽거나 쓰기)

/Closing a file(파일닫기)

 

ex) inflle=open("xx.txt", "r") ------ infile.close() 열었던 파일 닫기 #꼭 닫아줘야한다.

 

#print(inffile.readline())면 한 문장이 출력. 그 다음은 다음 문장 차례. #readlines()는 한 문장씩을 요소로 간주한다. infile[0]은 첫번째 문장.

#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. 문자 횟수 출력(잘 이해가 안됨)

 

##char는 뭐지?? 각 문자인 것 같은데.... freqs도 이해가...

3. CSV 파일 읽기

 

##1번과 2번을 유심히 보라. #줄을 쉼표 단위로 나누어 분리한다는 뜻이다. #각 줄의 필드 출력은 한 줄을 하나의 요소로 간주.

4. 메뉴만들기

 

 

5. 웹페이지 파싱

 

 

댓글