s03_crawling3.py
생성import urllib.request as ur
from bs4 import BeautifulSoup as bs
# 데이터를 읽어들일 URL
news = 'https://news.daum.net'
soup = bs(ur.urlopen(news).read(), 'html.parser')
print(soup)
print('-'*3)
# 머리 기사 제목 추출하기
print(soup.find_all('div',{'class':'item_issue'}))
print('-'*3)
# 반복문으로 기사 제목 모두 추출하기
for i in soup.find_all('div',{'class':'item_issue'}):
print(i.text)
print('-'*3)
# <img> 태그에 접근
for i in soup.find_all('img')[:5]:
# get(): 지정한 속성의 값 반환
print(i.get('src'))
print('-'*3)
# <a> 태그만 추출
for i in soup.find_all('a')[:5]:
print(i.get('href'))
# 웹에서 읽어온 정보를 파일에 저장
f = open('links.txt','w')
# 이슈 기사의 링크만 추출
for i in soup.find_all('div',{'class':'item_issue'}):
f.write(i.find_all('a')[0].get('href') + '\n')
print('작업을 완료했습니다')
f.close()
s04_crawling4.py
생성import urllib.request as ur
from bs4 import BeautifulSoup as bs
article1 = 'https://v.daum.net/v/20220329101906471'
soup = bs(ur.urlopen(article1).read(),'html.parser')
# 기사 본문을 파일로 저장하기
f = open('article_1.txt', 'w', encoding='UTF-8')
for i in soup.find_all('p'):
f.write(i.text)
print('작업을 완료했습니다')
f.close()
s05_crawling5.py
생성import urllib.request as ur
from bs4 import BeautifulSoup as bs
url = 'https://news.daum.net'
soup = bs(ur.urlopen(url).read(), 'html.parser')
# 기사 제목, 본문, 하이퍼 링크를 파일로 저장하기
f = open('article_total.txt', 'w', encoding='UTF-8')
for i in soup.find_all('div',{'class':'item_issue'}):
try:
# 제목을 추출해서 파일을 씀
f.write(i.text + '\n')
# URL 주소를 추출해서 파일에 씀
link = i.find_all('a')[0].get('href')
f.write(link + '\n')
# URL 주소에 해당하는 웹 문서를 열어 새 BeautifulSoup 객체로 저장
soup2 = bs(ur.urlopen(link).read(), 'html.parser')
# p 태그에서 본문만 추출
for j in soup2.find_all('p'):
f.write(j.text)
except:
pass
print('작업을 완료했습니다')
f.close()
pip install numpy
numpy.array()
numpy.random.randn(m,n)
numpy.zeros()
, numpy.ones()
(m,n)
등 모양을 배열형 인자로 전달numpy.arange()
.dtype()
.shape()
.reshape()
(1,12)
를 (2,6)
이나 (3,4)
로 재구성할 수 있지만 (3,5)
로 재구성 불가ch11-numpynpandas
생성하고 새 파일 s01_num.py
생성import numpy as np
data = np.array([10,20,30,40,50])
print(type(data))
print(data)
print('-'*3)
print(data.dtype) # int32는 32비트 정수형을 의미
print(data[1])
print('-'*3)
data = np.random.randn(2,3)
print(data)
print(data.shape)
print(data.dtype)
data1 = np.zeros(10)
print(data1)
print(data1.dtype)
print('-'*3)
data2 = np.zeros((2,3))
print(data2)
print(data2.dtype)
print('-'*3)
data3 = np.zeros((2,3),dtype=np.int32)
print(data3)
print(data3.dtype)
print('-'*3)
s02_num2.py
생성import numpy as np
data1 = np.ones(8)
print(data1)
print(data1.dtype)
print('-'*3)
data = np.arange(10,121,10) # 10부터 120까지, 10씩 증가
print(data)
print(data.dtype)
print(data[2])
print(data[5:8]) # 인덱스 5부터 7까지 출력
print('-'*3)
data[7:10] = 800 # 인덱스 7부터 9에 800을 저장
print(data)
print('-'*3)
data2 = data.reshape(2,6)
print(data2)
s03_num3.py
생성import numpy as np
# 2차원 배열 생성
data = np.array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]])
print(data)
print('-'*3)
print(data[2][3])
print('-'*3)
print(data[0][1:])
print('-'*3)
print(data[0])
print('-'*3)
# data[[1,2]]는 data에서 인덱스 1,2인 행의 데이터 값을 가짐
print(data[[1,2]])
print('-'*3)
# data[1]은 인덱스 1의 행 데이터를 의미
data[1] = 100
print(data)
print('-'*3)
# data[:]은 data의 모든 요소를 의미
data[:] = 200
print(data)
.sum()
.mean()
.max()
.min()
.argmax()
.argmin()
s04_num4.py
생성import numpy as np
data = np.array([[80,78,90,93],[65,87,88,75],[98,100,68,80]])
print(data.sum())
print(data.mean())
print(data.max())
print(data.min())
print('-'*3)
# 각 열(axis=0)의 요소 값 중 최댓값을 구해서 얻은 배열을 반환
print(data.max(axis=0))
# 각 행(axis=1)의 요소 값 중 최댓값을 구해서 얻은 배열을 반환
print(data.max(axis=1))
print('-'*3)
# 배열 객체 data에서 각 열에 대해 요소가 최댓값을 가지는 인덱스 배열 반환
index1 = np.argmax(data,axis=0)
print(index1)
# 배열 객체 data에서 각 행에 대해 요소가 최솟값을 가지는 인덱스 배열 반환
index2 = np.argmin(data,axis=1)
print(index2)
numpy.insert()
s05_num5.py
생성import numpy as np
a = np.arange(10) # 0~9를 요소로 하는 배열 객체 생성
print(a)
print('-'*3)
# 배열 a의 인덱스 3의 요소에 10의 값을 삽입
b = np.insert(a,3,10)
print(a)
print(b)
print('-'*3)
x = np.array([[1,1,1],[2,2,2],[3,3,3]])
print(x)
print('-'*3)
# 배열 x의 열 방향으로 인덱스 1의 요소에 모든 요소 값이 10인 행을 하나 삽입
y = np.insert(x,1,10,axis=0)
print(y)
print('-'*3)
# 배열 x의 행 방향으로 인덱스 1의 요소에 모든 요소 값이 10인 행을 하나 삽입
z = np.insert(x,1,10,axis=1)
print(z)
print('-'*3)
pip install pandas
pandas.Series()
.values
.index
s06_pandas.py
생성import pandas as pd
obj = pd.Series([5,-4,7,0,10])
print(obj)
print('-'*3)
obj = pd.Series([8,-20,-3,13,2])
print(obj.values)
print(obj.index)
# 인덱스 2에 해당되는 요소 값 호출
print(obj[2])
print('-'*3)
# 0부터 시작하는 숫자 인덱스 외에 문자열 인덱스를 설정
obj = pd.Series([10,20,30,40,50],index=['a','b','c','d','e'])
print(obj)
print(obj.index)
print(obj['c'])
print('-'*3)
print(obj[['d','a']])
print('-'*3)
print(obj[1:4]) # 내부적으로 숫자 인덱스가 있어서 숫자로도 호출 가능