250x250
Notice
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Today
Total
관리 메뉴

serendipity

Pandas 판다스 본문

Study/Big Data

Pandas 판다스

z 2021. 7. 10. 13:57
728x90

Pandas란 ? 

: 데이터를 읽고 정리하는데 최적화된 도구인 파이썬 데이터분석 라이브러리입니다. 

 

 


다음 종류의 데이터에 적합합니다.

- SQL 테이블 또는 Excel 스프레드 시트에서와 같이 이질적으로 유형이 지정된 열이있는 데이블 형식 데이터

- 정렬되고 정렬되지 않은 시계열 데이터

- 행 및 열 레이블이 포함 된 임의의 행렬 데이터 

- 다른 형태의 관찰 / 통계 데이터 세트

 

 

Pandas 사용

import pandas as pd
from pandas import Series, DataFrame

 


 

데이터 구조 (자료구조)

 

a. Series : 시리즈 

 

= 데이터가 순차적으로 나열된 1차원 배열의 형태 , 열 벡터 (Index 와 Value로 구성)

 

 

- 시리즈 생성

score = {'english':80, 'math':100, 'science':95} # 딕셔너리
>>> score # {'english': 80, 'math': 100, 'science': 95}

score_sr = pd.Series(score)  # series 함수를 이용하여 딕셔너리를 시리즈 구조로 변환
>>> score_sr 
english    80
math       100
science    95
dtype: int64

# index 확인하기
score_sr.index # Index(['english', 'math', 'science'], dtype='object')

# 데이터 값만 확인하기 values
score_sr.values # array([ 80, 100,  95])

 

- Index 명 입력 및 변경

data = Series([ '데이터분석가', 'inzeong' ], index = ['직업', '이름'])
>>> data 
직업 데이터분석가
이름 inzeong

# 이미 생성되어있는 index명 변경
data.index = ['직무', '성함']
>>> data.index # Index(['도시명', '사는사람', '나이'], dtype='object')

 

- 데이터 조회 (색인)

data = Series([1,2,3,4,5],index = ["서울","대전","대구","부산","광주"])
>>> data 
서울    1
대전    2
대구    3
부산    4
광주    5

# 서울 데이터 조회
data.at["서울"] # 1

# 서울, 부산 데이터 조회
data.at[["부산" , "서울"]] 
부산 4
서울 1

 

- NaN 데이터 처리

 

fill_value 옵션 : add와 같은 산술연산함수를 적용할 때 fill_value 옵션을 적용하여 NaN이 발생할 경우 특정 값으로 대입할 수 있습니다.

fillna 함수 : Series에 NaN값이 있을 경우,  fillna를 이용해 NaN을 입력값으로 변경할 수 있습니다.

 

>> data 
광주     NaN
대구    33.0
대전    22.0
마산     NaN
부산     NaN
서울    11.0
성남     NaN
전주     NaN
충주     NaN


data.fillna(0)
광주     0.0
대구    33.0
대전    22.0
마산     0.0
부산     0.0
서울    11.0
성남     0.0
전주     0.0
충주     0.0
dtype: float64

 

 

 

 

b. DataFrame (DF) : 데이터 프레임

 

= 인덱스가 같은 하나 이상의 Series가 모여진 데이터로 2차원 배열 , 여러개의 열로 이루어진 2차원의 백터 혹은 행렬

(data : 저장되는 데이터 / index : index에 대한 정보 / columns : 열에 대한 이름값 / dtype : 데이터에 대한 타입 명시)

 

 

- 데이터 프레임 생성

data = DataFrame([[180,75],[160,65],[170,75], [175,80]],
                  index = ["사람1","사람2","사람3","사람4"],
                  columns = ["키","몸무게"])

>> data

키	몸무게
사람1	180	75
사람2	160	65
사람3	170	75
사람4	175	80

 

- 인덱스 및 컬럼명 저장

data = DataFrame([[180,75],[160,65],[170,75], [175,80]])

#인덱스 저장
data.index = ["Man1","Man2","Man3","Man4"]

>>> data
	0	1
Man1	180	75
Man2	160	65
Man3	170	75
Man4	175	80


#컬럼명 저장
data.columns = ["Height","Weight"]

>>> data

      Height Weight
Man1	180	75
Man2	160	65
Man3	170	75
Man4	175	80

* rename() 메서드를 이용하여 원본 객체를 변환하는 방법

data.rename( columns = {'Height':'키', 'Weight':'무게'}, inplace=True)

>> data
 
        키      무게
Man1	180	75
Man2	160	65
Man3	170	75
Man4	175	80

 

 

- 데이터 추가 (append)

#컬럼 추가
data["나이"] = [30,40,32,33]

>>> data
	Height  Weight  나이
Man1	180	 75	 30
Man2	160	 65	 40
Man3	170	 75	 32
Man4	175	 80	 33


# Series 또는 DataFrame에서 추가
data["BMI"] = data["Weight"] / ((data["Height"] / 100) * (data["Height"] / 100))

>>> data
      	Height  Weight  나이       BMI
Man1	180	75	30	23.148148
Man2	160	65	40	25.390625
Man3	170	75	32	25.951557
Man4	175	80	33	26.122449


#행 추가
listOfSeries = [pd.Series([187, 85, 34, 0], index = Data1.columns),
               pd.Series([183, 80, 32, 0], index = Data1.columns)]

data1 = data.append(listOfSeries)
>>> data1
	Height	Weight	나이	BMI
Man1	180	75	30	23.148148
Man2	160	65	40	25.390625
Man3	170	75	32	25.951557
Man4	175	80	33	26.122449
0	187	85	34	0.000000
1	183	80	32	0.000000

 

 

- 데이터 삭제 (drop)

 

* axis = 0 (행 기준 삭제) / axis = 1(열 기준 삭제)

#열 삭제
data2 = data1.drop("BMI", axis = 1)

>>> data2

	Height	Weight	나이
Man1	180	75	30
Man2	160	65	40
Man3	170	75	32
Man4	175	80	33
0	187	85	34
1	183	80	32

#행 삭제
data3 = data2.drop("Man1", axis = 1)

>>> data3

	Height	Weight	나이
Man2	160	65	40
Man3	170	75	32
Man4	175	80	33
0	187	85	34
1	183	80	32

 

 

- 데이터 조회

 

1. Column 조회

  • DataFrame명["속성명"]  을 통해 특정 속성명만 조회 가능하다.
  •  DataFrame명.속성명 을 통해 특정 속성명만 조회 가능하다.
>>> data
	키	몸무게	나이
사람1	180	75	30
사람2	160	65	40
사람3	170	75	32
사람4	175	80	33


# 키 Column 만 조회
>>> data["키"]

사람1    180
사람2    160
사람3    170
사람4    175


# 두 개 이상 컬럼 조회
>>> data[["키", "몸무게"]]
	키	몸무게
사람1	180	75
사람2	160	65
사람3	170	75
사람4	175	80

 

 

2. Index 조회

  • DataFrame명.loc["index명"] 을 통해 특정 index만 조회 가능하다.
  • DataFrame명.iloc[index번호] 를 통해 특정 index만 조회 가능하다.

인덱스 이름으로 행을 선택할 때에는 loc를 이용하고 , 위치로 인덱스를 사용할 때에는 iloc를 사용합니다.

>>> data2
	키	몸무게	나이
사람1	180	75	30
사람2	160	65	40
사람3	170	75	32
사람4	175	80	33


>>> data2.loc["사람1"]
키      180
몸무게    75
나이      30



>>> data2.iloc[1] #사람2의 정보만 출력
키      160
몸무게    65
나이      40

 

728x90

'Study > Big Data' 카테고리의 다른 글

Hadoop 하둡  (0) 2021.08.24
Matplotlib  (0) 2021.07.10
Numpy 넘파이  (0) 2021.07.10
구글 고급 애널리틱스  (0) 2021.07.08
구글 초보 애널리틱스  (0) 2021.07.08
Comments