본문 바로가기

머신러닝(ML)

Pandas란...

Pandas는 "관계형"또는 "레이블"이 있는 데이터를
쉽고 직관적으로 작업 할 수 있도록 설계된
빠르고 유연하며 표현적인 데이터 구조를 제공 하는
Python 패키지이다.

Spreadsheets or databases에 저장된 데이터와 같은 테이블 형식의 데이터( tabular data )로 작업 할 때 pandas가 적합한 도구이다. Pandas는 데이터를 탐색, 정리 및 처리하는 데 도움이 된다. Pandas에서는 데이터 테이블을 Data Frame이라고 한다.

출처 : www.w3resource.com

위 그림에서 처럼 Pandas = Series + Series + ... + Series 이다.

Pandas는 다양한 종류의 데이터에 적합하다.

  • SQL 테이블 또는 Excel 스프레드 시트에서와 같이 유형이 다른 열이있는 테이블 형식

  • 데이터 순서가 있거나 또는 없는 시계열 데이터

  • 행 및 열 레이블이 있는 임의 행렬 데이터 다른 형태의 관측 / 통계 데이터 세트

기타 Pandas의 자세한 내용은 아래 링크를 참조 한다.

https://pandas.pydata.org/pandas-docs/stable/getting_started/overview.html

 

Package overview — pandas 1.0.5 documentation

pandas is a Python package providing fast, flexible, and expressive data structures designed to make working with “relational” or “labeled” data both easy and intuitive. It aims to be the fundamental high-level building block for doing practical, r

pandas.pydata.org

Pandas 자료구조

기본적으로 Pandas는 위의 그림처럼 Series와 Data Frame이라는 자료구조를 사용합니다.

Series

import pandas as pd

# Series 정의하기
ds = pd.Series([4, 5, -5, 3])
print(ds)

0    4
1    5
2   -5
3    3
dtype: int64
# Series의 값만 확인하기
ds.values

array([ 4,  5, -5,  3])
# Series의 인덱스만 확인하기
ds.index

RangeIndex(start=0, stop=4, step=1)
# 인덱스를 바꿀 수 있다.
ds2 = pd.Series([4, 5, -5, 3], index=['d', 'b', 'a', 'c'])
print(ds2)

d    4
b    5
a   -5
c    3
dtype: int64
# python의 dictionary 자료형을 Series data로 만들 수 있다.
# dictionary의 key가 Series의 index가 된다
series_data = {'A': 35000, 'B': 67000, 'C': 12000, 'D': 4000}
ds3 = pd.Series(series_data)
print(ds3)

A    35000
B    67000
C    12000
D     4000
dtype: int64
# index 변경
ds3.index = ['a', 'b', 'c', 'd']
print(ds3)

a    35000
b    67000
c    12000
d     4000
dtype: int64

Data Frame

# Data Frame 정의하기
data = {'name': ['Na', 'Park', 'Kim', 'Lee', 'Hong'],
        'year': [2013, 2014, 2015, 2016, 2015],
        'points': [1.2, 1.7, 3.2, 2.4, 2.7]}
df = pd.DataFrame(data)

print(df)

   name  year  points
0    Na  2013     1.2
1  Park  2014     1.7
2   Kim  2015     3.2
3   Lee  2016     2.4
4  Hong  2015     2.7
# 행 방향의 index
df.index

RangeIndex(start=0, stop=5, step=1)
# 열 방향의 index
df.columns

Index(['name', 'year', 'points'], dtype='object')
# 값 얻기
df.values

array([['Na', 2013, 1.2],
       ['Park', 2014, 1.7],
       ['Kim', 2015, 3.2],
       ['Lee', 2016, 2.4],
       ['Hong', 2015, 2.7]], dtype=object)
# 각 인덱스에 대한 이름 설정하기
df.index.name = 'Num'
df.columns.name = 'Info'

print(df)

Info  name  year  points
Num                     
0       Na  2013     1.2
1     Park  2014     1.7
2      Kim  2015     3.2
3      Lee  2016     2.4
4     Hong  2015     2.7
# DataFrame을 만들면서 columns와 index를 설정할 수 있다.
df2 = pd.DataFrame(data, columns=['year', 'name', 'points', 'penalty'],
                  index=['one', 'two', 'three', 'four', 'five'])
print(df2)

       year  name  points penalty
one    2013    Na     1.2     NaN
two    2014  Park     1.7     NaN
three  2015   Kim     3.2     NaN
four   2016   Lee     2.4     NaN
five   2015  Hong     2.7     NaN

# Data로 정의되는 dictionary와 columns의 순서가 달라도 자동으로 정의된다.
# 하지만, data에 포함되어 있지 않은 값은 NaN으로 표시된다.

# NaN값은 처리 되지 않는 데이터다.
# 해당 data가 필요하다면 추가적으로 값을 넣어줘야 한다.
# describe() 함수는 DataFrame의 계산 가능한 값들에 대한 계산 값을 보여준다.
df2.describe()

	    year	    points
count	5.000000	5.000000 # 개수
mean	2014.600000	2.240000 # 평균
std	    1.140175	0.795613 # 표준편자
min	    2013.000000	1.200000 # 최소값
25%	    2014.000000	1.700000 # 25th percentile
50%	    2015.000000	2.400000 # 50th percentile
75%	    2015.000000	2.700000 # 75th percentile
max	    2016.000000	3.200000 # 최대값

지속적으로 업데이트 예정임.