YOGAE

TODO: FIXME:

Pandas 간단 소개

21 Jan 2019

Pandas는 열 중심 데이터 분석 API입니다. 입력 데이터를 처리하고 분석하는 데 효과적인 도구이며, 여러 ML 프레임워크에서도 Pandas 데이터 구조를 입력으로 지원합니다.

기본 개념

Pandas의 기본 데이터 구조는 두 가지 클래스로 구현됩니다.

  • DataFrame은 행 및 이름 지정된 열이 포함된 관계형 데이터 테이블이라고 생각할 수 있습니다.
  • Series는 하나의 열입니다. DataFrame에는 하나 이상의 Series와 각 Series의 이름이 포함됩니다.

Series를 만드는 한 가지 방법은 Series 객체를 만드는 것입니다.

pd.Series(['San Francisco', 'San Jose', 'Sacramento'])

DataFrame 객체는 string 열 이름과 매핑되는 ‘dict’를 각각의 Series에 전달하여 만들 수 있습니다. Series의 길이가 일치하지 않는 경우, 누락된 값은 특수 NA/NaN 값으로 채워집니다.

city_names = pd.Series(['San Francisco', 'San Jose', 'Sacramento'])
population = pd.Series([852469, 1015785, 485199])

pd.DataFrame({ 'City name': city_names, 'Population': population })

데이터 액세스

cities = pd.DataFrame({ 'City name': city_names, 'Population': population })
print(type(cities['City name']))
cities['City name']
print(type(cities['City name'][1]))
cities['City name'][1]
print(type(cities[0:2]))
cities[0:2]

데이터 조작

NumPy는 유명한 계산과학 툴킷입니다. Pandas Series는 대부분의 NumPy 함수에 인수로 사용할 수 있습니다.

import numpy as np

np.log(population)

더 복잡한 단일 열 변환에는 Series.apply를 사용할 수 있습니다. Python map 함수처럼, Series.apply는 인수로 lambda 함수를 허용하며, 이는 각 값에 적용됩니다.

population.apply(lambda val: val > 1000000)

DataFrames 수정

cities['Area square miles'] = pd.Series([46.87, 176.53, 97.92])
cities['Population density'] = cities['Population'] / cities['Area square miles']
cities

Python Lambda

사용할 때는 아래와 같이 작성합니다.

lambda 인자 : 표현식

두 수를 더하는 간단한 함수

def hap(x, y):
	return x + y

(lambda x,y: x + y)(10, 20)

map()

map(함수, 리스트)
map(lambda x: x ** 2, range(5))

reduce()

reduce(함수, 순서형 자료)
reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])

filter()

filter(함수, 리스트)
filter(lambda x: x < 5, range(10))

Reference