ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 10일차 - 통합 개발 환경 아나콘다와 주피터 노트북, bs4모듈과 requests, NumPy, Pandas
    AI 솔루션 개발자과정(Java, Python) 2022. 10. 21. 17:33

    통합 개발 환경

    개발을 위해 필요한 전반적인 환경을 제공하는 프로그램 또는 개발 환경 그 자체를 의미한다.

     

     

    가상 환경

    실제로 존재하진 않지만 있는 것처럼 보이는 환경이다.

     

     

    Anaconda Navigator

    앞으로의 실습을 위해 아나콘다를 설치해야한다.

    아나콘다에 대한 설명은 다음 나무위키에 정의된 내용과 같다.

     

    아나콘다 사이트에서 다운로드 할 수 있으며 사이트 주소는 다음과 같다.(https://www.anaconda.com/)

    사이트에 접속하면 바로 중앙에 다운로드 버튼이 있고, 컴퓨터 운영체제에 따라 자동으로 설정해준다.

     

     

    설치를 완료하면 Anaconda Navigator를 실행한다.

    실행되면 Environments를 클릭하여 새로운 개발 환경을 생성해준다. 화면 하단에 생성버튼이 있으며 이름은 원하는대로 설정하면 된다.

     

     

     

     

    생성이 끝났으면 앞으로 사용할 패키지를 설치하여야 한다.

    상단의 Installed를 클릭하여 Not installed로 변경하고

    앞으로 설치해야할 패키지들을 설치해야 한다.

     

    일단, 앞으로 사용할 책에서는 기재된 코드를 실행하기 위해서 다음 패키지들을 설치하라고 요구하고 있다.

    • bs4
    • requests
    • numpy
    • matplotlib
    • pandas
    • openpyxl

    해당 패키지를 검색하여 이름이 정확히 일치하는 패키지를 찾아 설치하면 된다.

    해당 패키지를 선택한 후 오른쪽 하단에 있는 Apply버튼이 활성화 되고 

    Apply 버튼을 누르면 해당 창이 나타나며 한번 더 누르게 되면 자동으로 설치가 된다.

    패키지들이 모두 설치 완료 되면 홈으로 이동한다.

    또한 Juppyter Notebook을 설치해야 하는데 상단에 개발환경이 내가 설정한 환경이 맞는지 확인해보고, 맞다면 설치한다.

     

    설치 완료된 후 실행하게 되면 다음 창이 인터넷으로 연결된다.

    이 화면을 대시보드 라고 부른다. 이 화면에서는 폴더 이동, 작성, 노트북 파일의 작성 관리 등을 할 수 있다.

     

    오른쪽 위에 있는 New 버튼을 이용하여 새로운 노트북 파일을 생성할 수 있다.

     

     

     

     

     

     

     

     

     

    노트북 파일을 생성하면 해당 화면이 나오는데, 상단에 있는 File버튼을 클릭하여 Rename을 클릭하면 파일명을 설정할 수 있다.

     

    또는 Jupyter 로고 옆에 있는 부분을 클릭하여 간단하게 변경 가능하다.

    노트북 생성 직후에는 이름이 Untitled로 설정되어있다.

     

     

     

     

     

     

     

     

     

     

     

     

    셀에서 해당 버튼을 눌러서 Markdown으로 변경하면 해당 셀은 메모 전용 셀으로 변경된다.

     

     

    마크다운 셀에서는 #을 붙여서 문장을 강조할 수 있다. #의 갯수에 따라서 점점 줄어든다.

     

     

     

     

     

    문장의 앞에 - 를 붙이면 실행 했을때 리스트형으로 만들 수 있다.

    셀을 실행하면 이처럼 가독성이 좋아진다.

     

     

     

     

     

    또한 Shift와 Enter를 동시에 누르면 해당 셀을 실행시키고, 동시에 다음 셸을 생성하여 줄을 변경해준다.

     

    실행시키면 셀의 왼쪽에 있는 대괄호 안에 숫자가 생기는데 이는 실행시킨 횟수를 의미한다.

     

     또한 상단에 가위모양 아이콘을 클릭하여 선택한 셀을 제거할 수 있다.

    종료는 파일을 세이브한 후 창을 닫고 대시보드로 이동한 다음 Running버튼을 클릭하면 현재 실행되고 있는 노트북 파일을 확인할 수 있다.

    이 파일을 Suntdown 버튼을 클릭하여 종료해야 완전히 종료할 수 있다.

     

     

    BeautifulSoup

    Requests 모듈을 이용하여 웹사이트의 정보를 요청하고,  BeautifulSoup모듈을 이용하여 요청받아온 정보를 분석한다.

    import를 이용하여 사용할 모듈을 불러오고, 정보를 요청할 웹사이트의 주소를 지정한다.

    요청한 정보를 변수에 저장한 후 요청한다.

     

    이 정보를 BeautifulSoup 모듈을 이용하여 분석해야 한다.

    하지만 정보가 너무 많아서 찾을 정보를 특정해야 한다.

     

    정보는 네이버 금융페이지에서 불러오려 한다.

     

    웹 사이트에서 F12버튼을 누르면 개발자 도구가 나오게 되고, 개발자도구 상단왼쪽에 있는 버튼을 누르게 되면 원하는 정보의 태그를 확인할 수 있다.

     

     

     

    원하는 정보 위에 마우스를 올려두면 이러한 창이 뜨는데, 여기서도 간단하게 태그를 확인할 수 있다.

     

     

     

     

     코스피 지수의 태그는 span이고 클래스는 num이므로,

    span.num을 특정하면 된다.

     

     

    select_one() 함수를 이용하여 가져올 정보를 특정한다.

     

    정보를 선택하는 함수는 다음과 같다.

    • select()는 관련된 모든 정보를 불러오고,
    • select_one은 한가지만 불러올 수 있다.

    select()로 불러오게 되면 모든 정보가 특정되므로, select_one()을 이용한다.

    select_one()함수는 태그가 겹치더라도, 가장 앞에있는 태그를 불러온다.

    select_one() 함수를 이용하여 가져올 정보를 특정한다.

     

    정보를 선택하는 함수는 다음과 같다.

    • select()는 관련된 모든 정보를 불러오고,
    • select_one은 한가지만 불러올 수 있다.

    select()로 불러오게 되면 모든 정보가 특정되므로, select_one()을 이용한다.

    select_one()함수는 태그가 겹치더라도, 가장 앞에있는 태그를 불러온다.

    이렇게 불러온 태그를 tag 변수에 저장하고

     

    print(tag) 로 출력하면 소스코드까지 같이 출력되는데, 코스피 지수만 보고싶다면 .text를 붙여서 출력한다.

    string과 text 모두 출력이 가능하지만 서로 다른점이 있다.

     

    span.dn 에서 span은 태그, dn은 클래스이다.

    중간에 있는 비교연산자는 오른쪽 태그가 왼쪽 태그에 속해있다.

    왼쪽태그가 오른쪽보다 더 상위태그이다. 라는 뜻이다.

     

    구분은 마침표나 샵으로 구분하는데, 태그 뒤에 마침표가 붙으면 클래스이고, 샵이 붙으면 id이다.

     

     

    판다스(pandas)

    판다스는 데이터의 구조를 분석하는 모듈이다.

    일반적으로 데이터의 가장 흔한 형태중 하나는 '행과 열'의 2차원 구조이다.

    판다스는 행과 열 형태로 데이터를 관리하는 클래스 DataFrame을 제공한다.

    이를 이용하면 데이터를 쉽게 관리할 수 있을 뿐 아니라, 행열 기반의 다른 형식으로 변환하는 작업 또한 쉽게 처리할 수 있다.

    행의 개수는 데이터의 개수를, 열의 개수는 데이터가 가진 항목의 수를 의미한다.

     

    데이터 프레임은 딕셔너리와 리스트 베이스로 만든다.

    판다스모듈을 pd라고 정의한 뒤 베이스를 만들어준다.

    판다스 모듈의 클래스 데이터프레임 이용하기 때문에 pd.DataFrame(베이스, 매개변수)로 작성한다.

    리스트를 기반으로 주식이름과 가격을 작성하였다.

    위 코드의 실행값은 이러하다. 

    그냥 실행하면 숫자로 이루어진 행열로 리스트가 반환된다.

    인덱스를 이용하여 지정해주면 열에 접근하고, .iloc[ ] 을이용하여 행에 접근할 수 있다.

    .iloc[x, y] 는 x행의 y열 즉 한칸에 있는 요소에만 접근하는 것이다.

     

    행이나 열을 지정하여 한번에 바꾸는것도 가능하며 행열을 추가하는것도 가능하다.

    행이나 열의 인덱스 숫자가 행이나 열의 개수를 넘어서면 행열을 추가한다.

     

     

    NumPy 모듈

    NumPy는 대규모인 수학 함수 라이브러리를 가지고 있으며, 연산 기능이 충실하다.

    인공지능을 구현할 때에는 벡서, 행렬을 자주 다루므로 NumPy는 매우 유용한 툴이다.

    배열은 NumPy의 array() 함수를 사용함으로 파이썬의 리스트로 부터 간단하게 만들 수 있다.

    결과값은 리스트 형식의 배열로 나타내는데, 파이썬과 다른점은 요소가 쉼표(,)로 구분되지 않는다.

    결과값을 보면 요소 사이에 쉼표가 없다.

    또한 2차원의 배열을 만들 수 있는데, 위 형식은 리스트 내부에 리스트가 들어있으므로 2차원 배열이다.

     

     

    배열을 생성하는 다양한 함수

    배열을 생성하는 함수는 zeros(), ones(), arange() 등이 있다.

    •  zeros(x) = 0이 x개 저장된 배열
    •  ones(x) = 1이 x개 저장된 배열
    •  arange(x) = 0부터 x까지의 숫자가 저장된 배열

     

    shape() 함수는 몇행 몇열인지 a의 형태를 표시해주는 함수이다.

     

     

     

     

     

     

     

     

     

    NumPy는 배열간의 연산도 지원한다.

    각 배열과 수치간에 연산을 실시한다.

    단, 행과 열의 형태는 동일해야 한다.

    함수의 인수나 반환값으로 NumPy 배열을 사용할 수 있다.

     

    입력값을 제곱하는 함수를 만든 뒤

    입력값으로 배열을 넣었을 경우, 함수의 결과로 배열이 제곱된다.

     

    NumPy는 여러가지 기능을 제공하는데,

    sum() 함수로 합계를, average() 함수로 평균을,

    max() 함수와 min() 함수로 최댓값과 최솟값을 구할 수 있다.

     

     

    matplotlib 모듈

    matplotlib 모듈은 그래프 그리기, 이미지 표시, 간단한 애니메이션 작성 등을 실시할 수 있다.

    matplotlib으로 그래프를 그릴 때는 NumPy의 linspace() 함수가 자주 사용된다.

    linspace() 함수는 어떤 구간을 일정한 간격을 가진 50개의 수로 이루어진 NumPy의 배열로 한다.

    이 배열을 그래프의 가로축 값으로 자주 사용한다. 

    num 키워드로 간격을 지정하여 늘리거나 줄일 수 있고, endpoint 키워드로 소숫점을 표시할지 생략할지 정한다.

    linspace()함수를 이용하여 x좌표 와 x에 2배를 곱하여 y좌표를 지정하여 그래프를 그렸다.

     

     

    label()함수를 이용하여 x축과 y축의 이름을 지정하고 사이즈를 설정할 수 있다.

     

    linestyle 키워드로 선의 스타일을 지정할 수 있고, 

    legend() 함수로 범례를 설정할 수 있다.

    grid() 함수로 그래프에 그리드를 표시할 수 있다.

     

     

     

     

     

     

     

     

     

     

     

     

    범례란 쉽게 말하자면 참고사항을 뜻한다.

    이 그래프의 범례는 왼쪽 상단에 있는 각 선의 색상을 나타내는 참고사항이다.

     

     

     

     

     

     

     

     

     

    scatter(x,y) 함수로 산포도를 표시할 수 있다.

     

    막대 그래프 그리기

    bar() 함수를 이용하여 막대 그래프를 표시할 수 있다.

    color 키워드로 막대의 색상을 지정할 수 있고, 순서대로 각 그래프에 따로 지정할 수 있다.

    xticks() 함수로 x 축의 이름을 변경한다.

     

     

Designed by Tistory.