728x90
반응형

판다스(Pandas)

 

    • 행렬 데이터를 처리하기 위한 다양한 함수를 지원하는 라이브러리
    • 파일 읽기, 저장, 행렬데이터 처리, 기본 시각화 등 지원
    • 데이터 전처리 과정에서 주로 사용됨

데이터 분석과정

 

  • 데이터 수집 > 데이터 전처리 > 데이터 가공(필요시 전처리) > 데이터 분석 탐색/시각화(필요시 전처리) > 필요시 모델 훈련(머신러닝 or 딥러닝) > 웹서비스 또는 분석 보고서
  • 책에 나온 일반적인 과정 : 데이터수집 > 전처리 > 분석 > 시각화로 설명되고 있다.
  • 분석과정은 회사에 따라 다르다.

판다스(Pandas) 설치

 

  • Anaconda Prompt에서 pip list로 pandas 설치 확인

  • jupyter notebook에서 import
import pandas as pd
  • 사용되는 데이터 파일 - 노란색 부분

 

컬럼 : 국적코드, 성별, 입국객수, 전년동기

행은 0행 부터 시작한다.

즉, 노란색 부분을 추출하려면 A열에서 C열, 1행에서 7행만 추출한다.

 

 

 

 

 

 

 

데이터 수집 시 확인 사항

 

  • 날짜 확인 : 기준일로 사용
    - 년월일시분이 나타나 있는게 좋다.|
    - 최소한 년월까지는 있어야 한다. 최소 12개의 데이터를 확보할 수 있기 때문이다.
  • 범주형 데이터 확인 : 예로 남자 또는 여자와 같은 데이터
    - 범주형 데이터가 많은 데이터가 좋다. 비교대상이 많아 지기 때문이다.
    - 비교대상이 많아지면 데이터로 보여줄 수 있는게 많아진다

데이터 읽어오기

 

  •  파일 위치 지정
    - 상대경로로 지정한다.
file_path = "./files/sample_1.xlsx"
  • 피일 데이터 추출하기
    - file_path : 파일지정(위치 포함)
    - header : 칼럼명으로 사용할 행의 위치(default - 0)
    - skipfooter : 행의 가장 밑에서부터 포함하지 않을 행의 갯수(default - 0)
    - usecols : 가지고 올 열의 범위(A분터 C까지의 열)(default - data가 있는 모든 열)
sample_1 = pd.read_excel(file_path,
                        header=1,
                        skipfooter=2,
                        usecols="A:C")

 

  • csv, excel, json많이 사용
  • csv는 순수한 text 파일로 처리 과정이 따로 안들어가서 가볍다. 즉, 용량을 더 많이 담을 수 있다.
  • excel 파일 자체에 다양한 처리 과정이 같이 들어가기 때문에 무겁다.

 

 

 

 

 

  • 데이터 조회하기
sample_1

 

  • DataFrame 정보 확인하기
    - DataFrame 타입 : 행렬을 저장 관리하는 타입
    - info()함수는 데이터의 결측치(nan,null) 데이터 확인 가능
    - RangeIndex : 전체 행(row)의 갯수 0 to 5 총 6개
    - 전체 행의 갯수와 각 컬럼의 갯수가 안맞으면 결측 데이터가 존재한다는 의미.
sample_1.info()

 

# Non-Null = not null null이 아닌 데이터의 갯수
#  Dtype = 데이터 타입
#  object 문자열
# int 숫자

0 to 5 총 6개

 

 

 

 

 

  • 데이터프레임 출력
    - 데이터 행/열이 많은 경우 -> 기본 상위 5개, 하위 5개를 추출해서 보여줌
    - 데이터 행/열의 갯수가 작으면 모두 보여줌

  • head() : 상위 데이터 조회
    - 상위 5개
    sample_1.head()​

    - 상위 1개
    sample_1.head(1)​

 

  • tail() : 마지막 데이터 조회
    - default : 5개
    - 하위 5개
    sample_1.tail()​

    - 하위 1개
    sample_1.tail(1)​

  • 기초 통계 데이터
sample_1.describe()

 

- count : 데이터 행의 갯수
- mean : 데이터 평균
- std : 표준편차
- min : 최솟값
- max : 최댓값
- 25%, 50%(중앙값), 75% : 4분위수 데이터
        → 4분위수 데이터를 이용해서 이상치(이상한) 데이터 확인

- 기초통계 데이터는 숫자값을 가지는 컬럼에 대해서만 확인

 

 

 

데이터 조회하기

 

  • key 입력하고 value 받아오기
    - 국적코드 데이터 조회하기
sample_1["국적코드"]

 

- dtype: object

  → 데이터 하나하나의 타입이 object이다.

 

 

 

 

 

 

  • 타입 확인
    - 데이터 전체의 타입
type(sample_1["국적코드"])

 

- Series : 튜플과 모양이 같다. (사용법도 동일)
- {"국적코드" : (데이터, 데이터, ...)}

 

 

 

  • 2차원 행렬 형태로 조회
sample_1[["국적코드"]]

type(sample_1[["국적코드"]])

 

- [[ ]] : 2차원의 행렬인 DataFrame 타입

 

 

 

  • 국적코드와 성별 모두 조회하기
    - 컬럼 2개이상 조회시 [[ ]] 2차원 행렬 형태로 조회해야함
sample_1[["국적코드","성별"]]

 

 

기준년월 컬럼 추가하기

 

  • 2019-11 값을 추가하기
sample_1["기준년월"] = '2019-11'
sample_1

데이터 필터링 하기

 

  • 필터링 : 조건에 맞는 값 조회하기
  • 성별 중에 여성인 데이터만 추출하기
condition = sample_1["성별"] == "여성" 
condition


  • default 값은  True
sample_1[condition == False]


  • 한 줄로 조회하기
sample_1[(sample_1["성별"] == "여성") == True]

 


  • 객체 주소 전달 방식
    - 둘다 같은 곳을 바라 본다
    - sample_1이 바뀌면 sample_2가 바뀌고 sample_2가 바뀌면 sample_1이 바뀜
sample_2 = sample_1

 

  • copy()
    - 메모리 복제방식 (신규로 동일하게 생성 됨)

    - 신규로 만들어진 메모리 주소를 받아옴 (서로 영향 안받음)
    - 주소를 넣는 방식이 아니라 메모리를 복제하는 방식
sample_2 = sample_1.copy()
728x90
반응형

+ Recent posts