1. 파이썬과 Pandas의 데이터프레임을 이용하여 기초적인 통계 계산하기

문제 설명

자세히 보기

데이터 프레임

Pandas는 데이터를 처리하기 위해 Data Frame을 제공하는데,
이는 우리에게 익숙한 표(행과 열) 형태로 작성되어 다음과 같은 기능들을 제공합니다.
데이터 조회
데이터 변환
칼럼 추출
결측치 처리
등등…
다음 공식 documentation을 통해 관련 정보를 쉽게 얻으실 수 있습니다.
다음 데이터를 만든다고 가정하겠습니다.
id
name
weight
height
1
Park
70
167
2
Amy
60
158
3
Michael
80
175
4
Donald
102
181

열을 이용하여 만들기

import pandas # 데이터 초기화 df = pandas.DataFrame() # Column의 이름과 Data를 이용해 열 데이터 초기화 df['id'] = ['1','2','3','4'] df['name'] = ['Park','Amy','Michael','Donald'] df['weight'] = [70,60,80,102] df['height'] = [167,158,175,181]
Python
복사

행을 이용하여 만들기

import pandas # 데이터 초기화 df = pandas.DataFrame(columns=['id', 'name', 'weight', 'height']) # Column의 이름과 Data를 이용해 열 데이터 초기화 df.loc[0] = ['1','Park',70,167] df.loc[1] = ['2','Amy',60,158] df.loc[2] = ['3','Michael',90,175] df.loc[3] = ['4','Donald',102,181]
Python
복사
이 외에도 dict 자료형 등을 통해 DataFrame을 생성할 수도 있습니다.

행(Row)/열(Column) 추출하기

특정 열 선택하기

추출하는 방식은 다음과 같습니다.
DataFrame[['칼럼명1', '칼럼명2', ...]]
Python
복사
다음과 같은 데이터가 있다고 가정하겠습니다.
import pandas data = { 'A':[1,2,3,4,5], 'B':['a','b','c','d','e'], 'C':['apple','banana','grape','strawberry','peach'], 'D':[11,22,33,44,55] } df = pandas.DataFrame(data)
Python
복사
df에는 A, B, C, D 4개의 Column이 존재합니다.
여기서 원하는 칼럼을 선택하고 (예: B, C) 다음과 같이 추출하면 됩니다.
df[['B', 'C']]
Python
복사
대괄호가 두개 쌓여있기에 추출 결과는 다음과 같습니다.
B
C
a
apple
b
banana
c
grape
d
strawberry
e
peach

특정 행 선택하기

열 선택과 비슷하나, 인덱스 슬라이싱 기법을 사용합니다.
df[1:2] df[0:3] df['0':'3'] # 특정 행 범위 출력도 가능함
Python
복사

iloc 사용하기

iloc는 인덱싱을 위한 함수 중 하나입니다.
DataFrame.iloc[:, [ColumnIndex1, ColumnIndex2, ...]]
Python
복사
ColumnIndexN에는 내가 추출하고자 하는 컬럼의 인덱스 번호를 넣어주세요.
B, C를 추출하고자 하는 경우 인덱스는 각각 1, 2입니다.
여기서 range를 사용할 수도 있습니다.
test_range = list(range(3, 6)) DataFrame.iloc[:, test_range]
Python
복사

drop 사용하기

drop은 본래는 칼럼을 제거하는 역할을 수행합니다.
그러나 “나머지 칼럼을 제거하는” 방식으로 사용하여 추출할 수도 있습니다.
DataFrame.drop(['Column1', 'Column2', ...], axis=1)
Python
복사
B, C를 추출하고자 하는 경우 A, D를 drop하면 되겠죠?
추출하고자 하는 Column이 그렇지 않은 Column보다 많은 경우 유용합니다.

그룹화시키기

테스트 데이터는 밑의 블로그에서 작성된 내용입니다.
이 데이터를 그룹화 후 연산하기 위해 Groupby를 사용합니다.
Groupby의 동작 방식입니다.
1.
전체 데이터를 그룹별로 분할 : split
2.
mean(), sum(), count()등 같은 Aggregate function으로 연산 : apply Apply 단계에는 3가지 연산이 존재합니다.
Aggregation Split 된 그룹의 Average, Variation, Size 등 통계적인 값 계산
Transformation 한 그룹의 계산 결과를 Index Object처럼 추가
Filteration 특정 조건을 만족하는 Boolean Column을 생성해 그룹 새로 만듦
3.
연산결과를 다시 합침 : combine
각자 csv 파일을 가져와 DataFrame으로 전환하는 부분은 셀프! (tip: pandas.read_csv)
문법은 다음과 같습니다.
DataFrame.groupby(COL_GROUP)[COL_CALCULATE].function()
Python
복사
function에는 다양한 집계 함수가 들어갈 수 있습니다.
중심 경향을 계산하는 함수 mean 평균 median 중위수
id별 평균 키를 구하려면 다음과 같이 입력하면 되겠네요.
df.groupby("id")["height"].mean() df.groupby("id")["height"].median()
Python
복사
총 숫자를 계산하는 함수 count 개수 sum 합산
df.groupby("id").count()
Python
복사

Reference