PYTHON

[Python]8. Pandas 라이브러리

CodeJaram 2023. 6. 22. 08:12

Python_09_Pandas 라이브러리

 

  1. Pandas 모듈: panel datas(행과 열로 구성된 데이터)

   -사용이유: 데이터를  표 형식으로 변환하여 데이터 분석에 편리함

 

   2. 데이터 구조

    1)1차원 배열 형태: Series

  • 인덱스(index)+값(value)
  • 컬럼명이 없음→컬럼명을 추가하면 2차원 배열 형태(DataFrame)임

 

  2)2차원 배열 형태: DataFrame

   -행과 열로 구성된  표와 같은 형태

 

<배열구조 비교>

 

3.  Pandas 모듈 import: import pandas as pd

 

4. Series 

1)생성하기

  • 리스트를 활용하여 Series 생성
  • 생성방법: pd.Series([list], index=[인덱스명])

-인덱스와 값이 1:1매칭→인덱스의 개수와 값의 개수가 동일해야 함

 

2)자료구조 확인

  • Series의 값 확인: 시리즈명.values
  • Series의 인덱스 확인: 시리즈명.index
  • Series의 데이터 타입 확인: 시리즈명.dtype

 

3)이름 지정

  • Series의 이름 지정: 시리즈명.name=”이름”

-데이터 출력 시 어떤 데이터인지 확인 가능함

 

  • Series index의 이름 지정: 시리즈명.index.name=”이름”

 

4)연산: 시리즈 데이터 구조는 넘파이 배열형태이므로 넘파이 배열과 같이 연산가능

5)인덱싱&슬라이싱

  • Series 인덱싱: 시리즈명[인덱스]

-인접하지 않은 여러 인덱스의 데이터 추출 →인덱스들을 리스트로 묶음

-시리즈명[[인덱스1, 인덱스2, 인덱스3]]

  • Series  슬라이싱: 시리즈명[시작값: 끝값+1]
  • boolean 인덱싱: 시리즈명[시리즈 조건]

-다중 조건인 경우 조건의 우선순위 지정: 시리즈명[(조건1)&(조건2)]

 

6)딕셔너리

  • 딕셔너리 자료형 Series로 만들기: pd.Series(딕셔너리 변수명)
  • 딕셔너리 →Series: key→index, value→value
  • 인덱스명이 같을 경우 연산됨
  • 인덱스명이 다른 경우 연산했을 때 NaN(Not a Number)출력
  • 결측치가 있는 데이터 처리하기
  • 비어있지 않은 데이터만 출력: 변수명.notnull()
  • 비어있는 데이터만 출력: 변수명.isnull()

6)데이터 처리

  • Series 데이터 추가: 시리즈명[‘추가할 인덱스명’]=’추가할 값’
  • Series 데이터 수정: 시리즈명[‘수정할 인덱스명’]=’수정할 값’
  • Series 데이터 삭제: del 시리즈명[인덱스값]

 

5. DataFrame

  • 행과 열로 구성된 2차원 형태의 데이터구조 ex)엑셀 표 형태
  • 1차원 Series 데이터들이 모여 2차원이 만들어진 형태

 

1)생성하기

  • 딕셔너리 활용하여 DataFrame 생성

    -생성방법: pd.DataFrame(딕셔너리명)

    -key: 컬럼명

    -value: value

    -index는 자동으로 지정되지만 사용자가 지정하려면 생성 시 index=[‘인덱스명’]

  • 리스트를 활용하여 DataFrame 생성하기

    -데이터 프레임에 들어가는 모든 값을 일일이 지정해야 함(value, index, column)

    -value가 될 중첩된 리스트 생성하기(2차원)

    -index가 될 리스트 생성하기(1차원)

    -컬럼명이 될 리스트 생성하기



2)데이터 프레임 전치: 전치할 dataframe명.T

   -출력값만 바뀌고 변수에 다시 대입해야 변경된 데이터가 저장됨

 

3)자료구조확인

   -값 확인: values

   -인덱스 확인: index

   -컬럼 확인: columns



4)데이터 처리

  • 데이터 추가: dataframe명['추가할 컬럼명']=[추가할 값]
  • 데이터 삭제

     -인덱스명으로 데이터 삭제: dataframe명.drop(‘인덱스명’ )

    -인덱스 번호로 데이터 삭제: dataframe명.drop(dataframe명.index[인덱스번호] )

 

    -행 단위로 삭제: dataframe명.drop()

    -열 단위로 삭제: axis=1로 변경하기

 

*drop() 함수의 axis(축)

  -axis=0 →행 방향 축

  -axis=1 →열 방향 축

 

  • 데이터 수정

    -컬럼명 수정

    -행 이름 수정

 

  • 변경사항 저장하기

     -변수에 다시 대입하기

     -inplace=True로 변경하기

4)인덱싱(컬럼명): 열 인덱싱만 가능

   -1차원 형태로 인덱싱(series로 출력하기): dataframe명['열 이름']

   -2차원 형태로 인덱싱(dataframe형태로 출력하기): dataframe명[['열 이름']]

   -두 개의 열 출력하기: 두 개의 열이름을 리스트로 묶어 인덱싱 예)df[['2010','2015']] 

 

5)슬라이싱(행 이름): 행 슬라이싱만 가능

   -인덱스 번호: dataframe명[시작값, 끝값+1]

   -인덱스명: dataframe명[시작 인덱스명, 끝 인덱스명]

 

6)인덱서

  • loc 인덱서: 인덱스명으로 데이터 추출

      -dataframe명.loc[행 데이터, 열 데이터]

     -행 데이터='시작 인덱스명': '끝 인덱스명'

     -열 데이터='시작 컬럼명': '끝 컬럼명'

 

  • iloc 인덱서: 인덱스 번호로 데이터 추출

 -dataframe명.iloc[행 데이터, 열 데이터]

     -행 데이터='시작 인덱스번호': '끝 인덱스번호+1'

    -열 데이터='시작 컬럼번호': '끝 컬럼번호+1'

 

7)boolean 인덱싱 

    -조건: 1차원 형태

    -dataframe: 2차원 형태

    -변수와 조건의 결과 형태가 동일해야함 

       예)df3['2010'][df3['2010']>=2500000]

    -변수명을 series 형태로 만들기: 인덱싱한 값을 변수로 작성 예)df3['2010']

 

[실습1]

  • 파일 불러오기: pd.read_확장자('불러올 파일명')
  • index_col: 컬럼을 인덱스로 바꾸기(도시->인덱스)
  • 한글 encoding 방식: EUC-KR/UTF-8/CP949

 

 

8)정렬

  • 인덱스 (index)기준

     -오름차순(기본값)

     -내림차순

  • 값(value) 기준

     -지정한 컬럼만 정렬

     -전체 데이터 정렬

     -여러 컬럼 기준 정렬



9) 병합

  • merge() 함수: 두 개의 DataFrame을 합칠 때 특정 컬럼의 값을 기준으로 합치는 함수

        -pd.merge(데이터1, 데이터2, on='기준이 되는 컬럼명', how='병합방식')

  •   병합방식 

     -inner join: 왼쪽 테이블과 오른쪽 테이블의 교집합 데이터만 출력 예)how=’inner’

     -left join: 왼쪽 테이블 출력+교집합 데이터 출력 예)how=’left’

     -right join: 오른쪽 테이블 출력+교집합 데이터 출력

     -full outer join: 전체 테이블 모두 출력(합집합)

 

 

  • concat() 함수: 두 개의 Dataframe을 합칠 때 축의 방향을 기준으로 합치는 함수

      -pd,concat([데이터1, 데이터 2, 데이터 3])

      -axis=0 기본값->행 방향으로 병합, 같은 컬럼명인 경우 겹쳐서 출력

       

-axis=0 기본값->열 방향으로 병합, 같은 인덱스인 경우 겹처서 출력




'PYTHON' 카테고리의 다른 글

[Python]9.Matplotlib  (0) 2023.06.23
[Python]7. Numpy 라이브러리  (0) 2023.06.20
[Python]6. 딕셔너리, 함수  (0) 2023.06.19
[Python]5. 반복문 실습  (0) 2023.06.15
[Python]4. 반복문  (0) 2023.06.11