Pandas

  • 표 형식의 데이터나 다양한 형태의 데이터를 다룸
  • 시리즈(Series) 클래스와 데이터프레임(DataFrame) 클래스를 제공
 

Series

  • 일련의 객체를 담을 수 있는 1차원 배열 같은 자료구조.
  • 1치원 배열과 달리 값뿐만 아니라 각 값에 연결된 인덱스 값도 동시에 저장.
  • 시리즈 객체는 라벨 값에 의해 인덱싱 가능하므로 인덱스 라벨 값을 키로 갖는 딕셔너리 자료형과 같다고 볼 수 있음.(in, items, key와 value 접근)

Series 구조

pandas.Series( data,
		index,
       	 	dtype,
       	 	copy)
data series를 구성할 데이터
index index 지정.
dtype 각 항목에 적용될 타입.

 

  • Series.values : Series 값 추출.
  • Series.index : index 값 추출.
  • Series.reindex: 값 재배열, 없는 인덱스는 NaN으로 나옴.

Series 예제
reindex 예제

 

 

 

 

 

 

 

 

 

 

 

Series. index 값 연산

Series 예제

 

Series 예제

 

Series는 [ ] 안에 조건을 넣어 값 추출 가능!

Series는 값을 추출해서 연산을 하지 않고 → Series 앞에 바로 연산 가능.

 

 

 

 

 

 

 

 

 

 

 

 

 

딕셔너리 객체를 Series로 변경

딕셔너리  → 시리즈 예제

 

Series 예제
Series 예제

 

 

 

 

 

 

 

 

 

 

Series Indexing

Series 객체를 Indexing 하는 방법.

Series Indexing 예제

  • 숫자 인덱싱: [ 0 : 2 ]  → 0에서 1까지 값 추출.
  • 문자 인덱싱: [ "부산" : "대구" ]  → 대구 인덱싱도 포함된 값 추출.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Series 데이터 갱신, 추가, 삭제

< 수정 >

"부산" 인덱스 데이터가 이미 존재할 때는

ds [ "부산" ] = 1.63

하면 값을 수정해준다! 

 

 

 

< 추가 >

서산 인덱스는 존재하지 않기 때문에

ds [ "서산" ] = 2.21

을 입력하면 새로 인덱스를 추가해준다!

 

 

 

< 삭제 >

삭제 - del, drop

→ del ds [ "대전" ]

→ ds.drop( "서울" )

 

 

 

 

 


DataFrame

  • 표 같은 스프레드시트 형식의 자료구조 - 각 칼럼은 다른 종류의 값을 담을 수 있음.
  • DataFrame은 Row, Column, Series 들로 구성되어있음. (Series는 각 Column에 있는 데이터)

import pandas as pd

df = pd.DataFrame(data, 
		  index = "", 
                  columns = "", 
                  dtype = "", 
                  copy = "")
data DataFrame을 생성할 데이터
index 각 Row에 대해 Label을 추가 (옵션)
coulumns 각 Column에 대해 Label을 추가 (옵션)
dtype dtype - 각 Column의 데이터 타입 명시 (옵션)

 

  • DataFrame.values : dataframe에 들어있는 값 추출
  • DataFrame.columns: dataframe에 들어있는 열 칼럼 추출.
  • DataFrame.index: dataframe에 들어있는 인덱스 값 추출.

 

DataFrame 예제

 

 

 

 

 

 

 

 

 

 

 

 

열 데이터  추가, 수정, 삭제

DataFrame 열 데이터 추가
DataFrame 열 데이터 추가

 

 

 

 

 

 

 

 

 

 

 

열 인덱싱

DataFrame 열 Indexing

 

  • 열 데이터프레임의 열 인덱스가 문자열 라벨을 가지고 있는 경우에는 순서를 나타내는 정수 인덱스를 열 인덱싱에 사용할 수 없음.
  • 원래부터 문자열이 아닌 정수형 열 인덱스를 가지는 경우에는 인덱스 값으로 정수를 사용할 수 있음.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

행 인덱싱

행 단위로 인덱싱을 하고자 하면 항상 슬라이싱(slicing)을 해야 한다.

DataFrame 행 Indexing

 

 

 

 

 

 


데이터 입출력

read_csv csv 파일을 가져오는 함수 (구분자는 쉼표 [ , ])
read_table table 파일을 가져오는 함수 (구분자는 탭 [ \t ]) 
read_fwf 고정폭 (구분자 없음)
read_clipboand 클립보드, 웹 페이지의 표 읽어올 때 사용
read_excel 엑셀 파일에서 표 형식 데이터 읽기 
read_hdf HDFS 파일에서 데이터 읽기
read_html HTML 문서 내의 모든 테이블
read_json Json 문자열에서 데이터 읽기 

 

- read_csv

# CSV 파일 생성하기
%%writefile sample1.csv
c1, c2, c3
1, 1.11, one
2, 2.22, two
3, 3.33, three

%% : 매직라인 (빈번하게 쓰는 것을 정리하는 것

 

 

 

 

 

- read_table

%%writefile sample3.txt
c1        c2        c3        c4
0.179181 -1.538472  1.347553  0.43381
1.024209  0.087307 -1.281997  0.49265
0.417899 -2.002308  0.255245 -1.10515

 

 

 

 

 

 

 

 

 

 

 

 

 

파일 저장,  출력

 

 

 

 


행, 열 조회하기

  • 행을 조회하기 위한 행명(인덱스명) 입력
  • 배열 형태가 아닌 값을 입력하면 1차원 시리즈 형태가 리턴!
속성 설명
loc 인덱스 기준으로 행 데이터 읽기
iloc 행 번호를 기준으로 행 데이터 읽기

 

 

 

 

 

 

 

행 조회하기 - loc( )

 

함수  설명
df.loc [ "행 인덱싱 명" ] 1차원 시리즈 형식으로 값 리턴
df.loc [ [ "행 인덱싱 명" ] ]  2차원 데이터프레임 형식으로 값 리턴
df.loc [ [ '행 인덱싱 명', '행 인덱싱 명' ] ] 여러 (인덱스 명)을 입력하여 여러 행을 가져올 수 있음.
df.loc [ "행 인덱싱 명" : "행 인덱싱 명" ]  연속적인 행 가져오기 ex) a 행부터 ~ c행까지
df.loc [ [ True, False ... ] ] (blooean) 인덱스 개수와 동일한 True/False의 배열을 지정해 True인 행만 가져올 수 있음.

*df → 데이터프레임 명

 

 

 

 

 

 

Dataframe 행 조회하기
Dataframe 행 조회하기

 

 

 

 

 

 

 

 

 

 

 

 

열 조회하기 - loc( )

함수 설명
df.loc [ :, "열 인덱스 명" ]  해당 열만 가져옴. → 1차원 Series 값으로 가져옴.
df.loc [ :, [ "열 인덱스 명" ] ]  해당 열만 가져옴. → 배열 형태로 열을 입력하면 2차원 Dataframe 형태로 가져옴.
df.loc [ :, df.columns != '열 인덱스명' ] 특정 컬럼을 제외하고 값을 가져옴.
df.loc [ : , "행 인덱싱 명" : "행 인덱싱 명" ]  행 인덱싱 명 ~ 행 인덱싱 명까지의 값을 가져옴.
df.loc [ :, [ False, True, True ] ]  인덱스 개수와 동일한 True/False의 배열을 지정해 True인 행만 가져올 수 있음.

 

 

Dataframe 열 조회하기

 

 

 

 

 

 

 

+ iloc ( )

  • 인덱스 위치 값으로 데이터 추출
  • 순서를 나타내는 정수 기반의 2차원 인덱싱

 

iloc 함수 예제

'ABC 부트캠프 > 파이썬 라이브러리' 카테고리의 다른 글

10일차 - Matplotlib, Seaborn  (0) 2023.04.10
9일차 - Pandas 2  (0) 2023.04.02
7일차 - Numpy 2  (0) 2023.03.23
6일차 - Numpy 1  (0) 2023.03.21

댓글