IT/Python

Pandas(판다스) - 파이썬을 활용한 데이터 분석 기초 #4

디지털 은행원 이야기 2022. 9. 25. 11:05
반응형

Pandas

 

안녕하세요.

오늘은 판다스(Pandas)에 대해 알아보겠습니다.

먼저 Numpy 기반의 라이브러리인 Pandas 에 대해 위키백과에 나와있는 내용을 확인해보겠습니다.

pandas 는 데이터 조작 및 분석을 위한 Python 프로그래밍 언어 용으로 작성된 소프트웨어 라이브러리입니다. 특히 숫자 테이블과 시계열 을 조작하기 위한 데이터 구조와 연산을 제공합니다. 이것은 무료 소프트웨어이며 New BSD 라이센스입니다. pandas란 이름은 한 개인에 대해 여러 기간동안 관찰을 한다는 데이터 세트에 대한 계량 경제학 용어인 "패널 데이터"라는 용어에서 파생되었습니다. 또한 "Python 데이터 분석"이라는 문구 자체에서 따온 것입니다. Wes McKinney 는2007년부터 2010년까지 연구원으로 있을 때 AQR Capital에서 pandas를 만들기 시작했습니다.
-  Wiki 백과 중

 

간략하게 정리한다면 Pandas란 구조화된 데이터를 효과적으로 처리하고 저장할 수 있는 파이썬 라이브러리입니다.

특히, 배열의 계산에 특화된 Numpy를 기반으로 만들어져 다양한 기능들을 제공한다고 할 수 있습니다.

 

그렇다면 예제로 한번 알아보도록 하겠습니다.

먼저 Series입니다. Series는 Numpy array가 보강된 형태의 Data와 Index를 가지고 있습니다.

Index가 있으니 Series에디엍트 인덱스로 접근이 가능합니다.

import pandas as pd

data = pd.Series([1, 2, 3, 4])
data

#	Index		Data
#	  0		  1
#	  1		  2
#	  2		  3
#	  3		  4
#	dtype: int64

data = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
data['b']
# 2
#	Index		Data
#	  a		  1
#	  b		  2
#	  c		  3
#	  d		  4
#	dtype: int64

 

Series는 딕셔너리로 만들 수도 있습니다.

아래의 예제는 국가별로 인구수를 만명단위로 넣어놓은 형태입니다.

populiation_dict = {
    'korea' : 5180,
    'japan' : 12718,
    'china' : 141500,
    'usa' : 32676
}

population = pd.Serries(population_dict)

 

DataFrame 을 활용하면 여러 개의 Series를 모아 행과 열을 이룬 데이터를 만들 수 있습니다.

아래의 예는 DataFrame을 활용해 행과 열을 만들어 index, column 을 확인한 예제입니다.

populiation_dict = {
    'korea' : 5180,
    'japan' : 12718,
    'china' : 141500,
    'usa' : 32676
}

gdp_dict = {
    'korea' : 169320000,
    'japan' : 516700000,
    'china' : 1409250000,
    'usa' : 2041280000
}

gdp = pd.Series(gdp_dict)
country = pd.DataFrame({
    'population': population,
    'gdp': gdp
})

country.index
# Index(['china', 'japan', 'korea', 'usa'], dtype='object')

country.columns
# Index(['gdp', 'population'], dtype='object')

country['gdp']
type(country['gdp'])
# pandas.core.series.Series

 

Series 역시 Numpy 의 array 처럼 연산자를 사용할 수 있습니다.

1인당 GDP인 gdp_per_capita 라는 변수를 선언해 gdp 를 population 으로 나눠 country DataFrame에 넣어봤습니다.

마지막 열에 gdp per capita가 추가되는걸 볼 수 있습니다.

gdp_per_capita = country['gdp'] / country['population']
country['gdp per capita'] = gdp_per_capita

#	  Index				Data
#	  china			  9959.363958
#	  japan			  40627.457147
#	  korea			  32687.258687
#	  usa			  62470.314604
#	  dtype: float64


#	  		 Data	        population      gdp per capita
#	  china		 1409250000	141500		9959.363958
#	  japan		 516700000	12718		40627.457147
#	  korea		 169320000	5180		32687.258687
#	  usa		 2041280000	32676		62470.314604

# 만든 데이터 프레임 저장 및 불러오기
country.to_csv("./country.csv")
country.to_excel("country.xlsx")

country = pd.read_csv("./country.csv")
country = pd.read_excel("country.xlsx")

 

즉, Series 데이터는 하나의 컬럼 값으로 이루어져있고 Data Frame은 여러 개의 컬럼 값을 가질 수 있습니다.

바로 csv나 excel로 저장하고 불러올 수 있는것도 굉장히 유용하게 사용될 수 있을 것 같네요.

 

그럼 오늘은 여기까지하도록 하겠습니다.

감사합니다.

반응형