[anaconda]아나콘다, 주피터노트북

1. 아나콘다(Anaconda)란?

아나콘다는 파이썬의 배포판이다. 이때 배포판이란 ‘원래 프로그램 + 많이 쓰이는 유틸리티’를 의미한다. 즉, 아나콘다는 파이썬으로 데이터분석을 쉽게 할 수 있도록 하는 배포판으로, 파이썬 + 파이썬 라이브러리(numpy, pandas 등등)의 구성을 가진다.

2. 주피터 노트북(jupyter notebook)이란?

아나콘다에 포함되어 있는 파이썬 편집환경으로 데이터 분석할 때 많이 사용된다. 그 이유로는 주피터노트북은 데이터 분석에 대한 결과를 마크다운으로 바로바로 작성할 수 있어서 분석에 대한 발표가 용이하기 때문이다. 또한 pdf같은 파일로 변환도 용이해서 발표에 좋다.

  • 명령모드( Esc로 진입, Enter로 해제 )
    • a : 선택된 셀 위에 셀 추가
    • b : 선택된 셀 아래에 셀 추가
    • dd : 선택된 셀 삭제
    • x : 선택된 셀 잘라내기
    • z : 뒤로 돌리기
    • c : 선택된 셀 복사하기
    • v : 복사한 셀 붙이기
    • m : 마크다운 작성 실행
    • 숫자 : 마크다운 작성 + 숫자만큼의 제목 미리 타이핑해둠
  • 입력모드
    • shift + enter : 실행하고 다음 셀로 이동
    • ctrl + enter : 실행하고 현재 셀에 머무름
    • ctrl + shift + - : 셀 자르기

3. 아나콘다 제공 패키지

  • conda install 패키지명
  • conda update 패키지명
  • conda remove 패키지명
  • conda list
  • conda list 패키지명

4. 가상환경 생성 및 이용

4.1 가상환경이란?

만약 파이썬 3.9버전에서 A프로그램을 개발하고, 파이썬 3.8버전에서 B프로그램을 개발한다고 가정한다. 그러면 해당 파이썬 버전에 대한 두 개의 개발환경이 필요하다. 이를 위해서 PC자체를 두 개 준비하기에는 무리가 있으므로 하나의 PC에서 여러개의 개발환경을 구축할 수 있도록 하는 방식이 가상환경이다. 가상환경1에는 파이썬3.9, 가상환경2에는 파이썬3.8을 설치하면 하나의 PC로도 여러 개발환경을 이용할 수 있게 된다.

4.2 아나콘다에서 가상환경

기본적으로 아나콘다의 기본 가상환경은 base다. 기본상태에서 “conda info -e”를 이용해 가상환경 목록을 조회하면 base라는 이름의 가상환경 하나만 존재하는 것을 알 수 있다.

  • 가상환경 명령어
    • conda info -e : 가상환경 목록 조회
    • conda create -n 가상환경이름 python=파이썬버전 : 해당 파이썬버전으로 가상환경을 생성해줌
    • conda remove -n 가상환경이름 –all : 해당 가상환경 모두 삭제
    • conda activate : 가상환경 활성화
    • conda deactivate : 가상환경 비활성화
    • conda install 패키지명1, 패키지명2, … : 현재 가상환경에 해당 패키지들 설치
    • conda list : 현재 가상환경에 설치된 패키지 조회
    • conda remove -n 가상환경이름 패키지명 : 해당 가상환경 속 해당 패키지 삭제

5. Pandas(Numpy)

Pandas는 데이터 분석과 관련된 다양한 기능을 제공하는 패키지다. 보통 pd라는 별칭으로 호출한다( import pandas as pd ) 이때 pandas는 numpy라는 패키지를 이용하므로 numpy에 대한 내용도 같이 본다.(보통 import numpy as np 로 호출함)

5.1 주요구성 클래스

  • Series : 행, 열과 같은 1차원 구조
    • Series로 만들기(튜플, 리스트, 넘파이배열(array)를 받는다)
        data = ["안녕","하세","요"]
        result = pd.Series(data)
      
    • index : 일반적인 index와 딕셔너리 key 성질을 합친 느낌이다. 디폴트값으로 0,1,2… 의 숫자값이 부여되고 따로 설정할 경우 딕셔너리의 key처럼 직접 인덱스명을 설정할 수 있다. 즉, 하나의 데이터는 index명과 index(정수0,1,2…) 두 가지 값을 가지는 것이다.
        data = ["안녕","하세","요"]
        result = pd.Series(scores, index=["첫번째","두번째","세번째"])
      
        result.index=[바꿀인덱스명들] # 모든 인덱스를 적어줘야 한다. 특정 인덱스명만 바꾸려면 다른 방식 이용해야 한다.
      
    • indexing : Series 원소 중 한 개만 호출
        Series객체명[index명 / index] # 이 방법은 기본적으로 index명으로 조회를 하게 된다. index명에 존재하지 않으면 그 뒤에 index에서 찾는다.
        # 예를 들어 index명이 100이고 index는 0 인 value값은 "Series객체명[100]"으로 호출해야 조회가 된다. 이때 index명대신 index로 조회하고 싶다면
        # "Series객체명.iloc[index]" 로 조회해야 한다. 즉, "Series객체명[100]" 과 "Series객체명.iloc[0]"는 같은 것이다.
      
      • fancy indexing : 조회할 인덱스들을 리스트로 묶어서 여러개 호출해 Series로 반환
          Series객체명[[index명1,index명2,index명3,...]]
        
    • slicing : Series 원소 중 일부분 잘라내기
        Series객체명[start index : end index : step] # start 이상 end 미만
        # 혹은
        Series객체명[start index명 : end index명 : step] # start 이상 end 이하
      

      이때 조심해야 할 것이 파이썬에서 list의 slicing은 deep copy지만, pandas의 Series의 slicing은 shallow copy로 원본이 바뀌면 슬라이싱한 부분도 같이 바뀌게 된다. 만약 deep copy하고 싶다면 copy()를 사용한다.

        s=pd.Series([1,2,3,4,5])
        s2=s[2:].copy()
        print(s,s2)
        # copy메서드로 deep copy 실행함
        print("_________________________________")
        s[3]=99
        print(s,s2)
      
    • boolean 연산 : True나 False를 이용해 True인 값들만 뽑아내는 방식. and,or,not 대신 &,|,~ 를 사용한다.
        import numpy as np
        s=pd.Series(np.random.randint(10,20,20))
        s[(s > 15) & (s < 18) ] # s에서 해당조건을 만족하는(True인) 값들만 반환
        np.where((s > 15) & (s < 18)) # s에서 해당조건을 만족하는 값들의 index값들을 array로 반환
      
    • head / tail 메서드 : 앞에서 혹은 뒤에서부터 지정한 개수만큼 반환(디폴트값 : 5개)
    • size 속성 : 데이터 개수 반환
    • dtype 속성 : value 타입 반환
    • astpye 메서드 : value 타입 변경해서 새로운 Series객체로 반환
    • sort_values 메서드 : 값을 기준으로 오름차순 정렬 후 새로운 Series객체로 반환
      • 매개변수 ascending = True / False 로 오름차순 / 내림차순 가능
    • sort_index 메서드 : index명을 기준으로 오름차순 정렬 후 새로운 Series객체로 반환
      • 매개변수 ascending = True / False 로 오름차순 / 내림차순 가능
    • isin 메서드 : iterable(리스트, 튜플 등)을 매개변수로 받아 해당 값들이 Series에 있는지 없는지 확인 후 True, False 값으로 Series객체 반환( (Series객체명==체크값1) (Series객체명==체크값2) … 와 같다 )
    • 통계 메서드
      • min() : 최댓값
      • max() : 최솟값
      • mean() : 평균값
      • median() : 중위값
      • sum() : 총합
      • std() : 표준편차
      • var() : 분산
      • quantile(q=[나눌위치들(ex. 0.1, 0.5)]) : 분위수로 나누기
      • describe() : 수치형 Series는 데이터개수,4분위수,min,max,평균,표준편차를 반환 / 범주형 Series는 데이터개수,최빈값개수,최빈값,고유값개수 반환
    • 결측치 메서드
      • 결측치 제외 개수 : count()
      • 결측치 확인 : notnull() / isnul() / np.isnan(“Series객체명”)
      • 결측치 제거 : dropna()
      • 결측치 다른값으로 대체 : fillna(대체할값)
        • inplace : True / False 를 통해 Series객체에 대체한 내용 적용시킬지 결정
  • Dataframe : 행렬과 같은 2차원 구조
    • columns 속성 : colum명 조회
    • index 속성 : index명 조회
    • shape 속성 : 행, 열 개수 조회
    • info 메서드 : 인덱스 정보, 컬럼 정보를 조회
    • 통계 메서드
      • min() : 컬럼별 최댓값
      • max() : 컬럼별 최솟값
      • mean() : 컬럼별 평균값
      • median() : 컬럼별 중위값
      • std() : 컬럼별 표준편차
      • var() : 컬럼별 분산
      • quantile(q=[나눌위치들(ex. 0.1, 0.5)]) : 컬럼별 분위수로 나누기
      • describe() : 요약 통계량 제공
    • 결측치 메서드
      • 결측치 제외 개수 : count()
      • 결측치 확인 : notnull() / isnul() / np.isnan(“Series객체명”)
      • 결측치 제거 : dropna()
      • 결측치 다른값으로 대체 : fillna(대체할값)
        • inplace : True / False 를 통해 Series객체에 대체한 내용 적용시킬지 결정

results matching ""

    No results matching ""