[Python.Pandas] Pandas 기본 - DataFrame, Series, Index의 이해
2020. 12. 15. 05:00ㆍPython과 머신러닝/Pandas 데이터 분석
1. 판다스란?
- 판다스란 구조화된 데이터의 처리를 지원하는 python 라이브러리이다.
- Python 계의 엑셀이라고 표현하면 가장 정확한 표현이라고 생각한다.
- NumPy와 통합하여 강력한 스프레드시트 처리 기능을 제공하는 라이브러리이다.
2. 용어 정리
- DataFrame : 전체 데이터를 데이터 프레임이라고 칭한다.
- Series : 하나의 Column을 Series라고 한다.
- Series란 Column vector 하나를 표현하는 object이다.
- list 형태로 데이터를 담아줄 수 있는 특징이 있다.
- NumPy의 List는 값만 출력이 된다면, Series는 자동으로 index도 함께 출력된다.
- 즉, Series는 Index/Data/Data type으로 구성된다.
- Index의 특징
- 일반적인 Index와 대부분 비슷하지만 몇 가지 다른 점만 정리한다.
- index는 숫자만 가능하지 않고, String(문자열) 일 수도 있다.
- index가 숫자여도 순서대로 정렬될 필요가 없다.
- 그리고 index는 중복될 수 있다.
- Index에게 기대했던 기본과 다른 특징들이 존재하는데, 그 이유를 예시를 통해 알아보자.
3. Index를 지정하지 않을 경우 예제
In [1]:from pandas import Series, DataFrame
import pandas as pd
import numpy as np
In [2]:list_data = [1,2,3,4,5]
In [3]:example_obj = Series(data = list_data)
example_obj #index를 따로 지정하지 않으면 0-base로 자동 생성된다.
Out[3]:0 1
1 2
2 3
3 4
4 5
dtype: int64
- 따로 index를 지정하지 않으면 0-base로 자동 생성된다.
4. Index를 지정하는 경우 데이터를 읽는 방법
In [4]:list_name = ['a', 'b', 'c', 'd', 'e']
list_name
Out[4]:['a', 'b', 'c', 'd', 'e']
In [5]:example_obj = Series(data = list_data, index=list_name)
example_obj # 지정해준대로 list의 index가 생성되는 것을 확인할 수 있다.
Out[5]:a 1
b 2
c 3
d 4
e 5
dtype: int64
In [6]:example_obj['a'] # 1을 출력하고 싶다면 index로 접근하면 된다
Out[6]:1
- 위와 같이 배열 형태로 index parameter를 지정해주면, index가 0-base의 숫자가 아닌 문자열로도 지정이 가능한 것을 확인할 수 있다.
- 데이터를 읽을 때에는, 약간 어색하지만 동일한 string의 index를 사용하여 값을 추출할 수 있다.
5. Series의 형변환
In [7]:example_obj_2 = example_obj.astype(float)
example_obj_2 # 이렇게 기존 데이터를 형변환할 수 있다.
Out[7]:a 1.0
b 2.0
c 3.0
d 4.0
e 5.0
dtype: float64
In [8]:example_obj_2['b'] = 3.2 # 새로운 값을 assign할 때도 동일한 방식으로 indexing한다.
example_obj_2
Out[8]:a 1.0
b 3.2
c 3.0
d 4.0
e 5.0
dtype: float64
- .astype(데이터형) 함수를 사용하면 기존 데이터를 원하는 데이터형으로 변형할 수 있다.
- 그리고 데이터를 assign하는 것도 string index로 참조하여 원하는 위치에 값을 대입하면 된다.
6. Pandas .index와 .values
In [9]:example_obj_2.index # .index property로 해당 Series의 index를 추출하여 볼 수 있다.
Out[9]:Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
In [10]:example_obj_2.values # .values property로 데이터의 값들만 추출하여 볼 수 있다.
Out[10]:array([1. , 3.2, 3. , 4. , 5. ])
- .index property로 해당 Series의 index를 추출하여 볼 수 있다.
- .values property로 데이터의 값들만 추출하여 볼 수 있다.
7. Dict 데이터를 Pandas Series object로 변환하기
In [11]:dict_data = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
dict_data
Out[11]:{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
In [12]:indices = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
indices
Out[12]:['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
In [13]:example_obj_3 = Series(dict_data, index=indices)
example_obj_3
Out[13]:a 1.0
b 2.0
c 3.0
d 4.0
e 5.0
f NaN
g NaN
h NaN
dtype: float64
- 기존 dict type의 데이터는 index 'a'~'e'만 존재한다.
- 실제 Series 데이터를 생성할 때 사용된 indices 배열은 'a'~'h'까지 존재한다.
- 그렇기 때문에 Series object로 변환될 때 'a'~'e'까지는 정상적인 값을 확인하여 대입하지만,
- 'f'~'h'는 NaN 값을 기본으로 넣어 Series object를 생성한다.
8. 관련 포스트
- 2020/12/16 - [Python과 머신러닝/Pandas 데이터 분석] - [Python.Pandas] DataFrame Series 추출, loc/iloc 이해하기
- 2020/12/17 - [Python과 머신러닝/Pandas 데이터 분석] - [Python.Pandas] DataFrame / Series 간 Operation 이해
- 2020/12/18 - [Python과 머신러닝/Pandas 데이터 분석] - [Python.Pandas] Selection과 Drop
'Python과 머신러닝 > Pandas 데이터 분석' 카테고리의 다른 글
[Python.Pandas] Map 함수 실전편 + .replace함수 사용하기 (0) | 2020.12.20 |
---|---|
[Python.Pandas] Lambda함수와 Map함수 이해하기 - Series.map (0) | 2020.12.19 |
[Python.Pandas] Selection과 Drop (0) | 2020.12.18 |
[Python.Pandas] DataFrame / Series 간 Operation 이해 (0) | 2020.12.17 |
[Python.Pandas] DataFrame Series 추출, loc/iloc 이해하기 (0) | 2020.12.16 |