brunch

You can make anything
by writing

C.S.Lewis

by none Sep 16. 2019

Python을 이용한 데이터 분석 - 2

자료의 연산과 DataFrame

1편부터 순서대로 따라 하는 걸 추천한다. 하기 내용은 1편의 내용과 이어진다.


#데이터를 가공하자! Series 자료의 연산

score_A_class = pd.Series([80,75,67,32,43,55], index = dates)
score_B_class = pd.Series([74,55,62,14,23,47], index = dates)
score_A_class - score_B_class

예를 들어 A반과 B반의 성적의 차이를 구한다고 가정하자. 상기의 코드와 같이 작성하면 동일한 Series 형태의 자료를 연산할 수 있다. 

또한, 다른 변수에 연산 값을 저장하여 다양한 함수를 사용할 수 있다. (mean 함수는 평균값을 계산한다.) 위의 코드에서는 A반과 B반의 점수 차를 임시 변수에 저장한 뒤 평균을 구한다.


#표를 만들자! DataFrame의 생성

위의 연산에서는 두 변수(Series 형태)를 각각 생성했다. 하지만 대게 우리는 특정한 자료(표 형태로 이루어진)에서 정리하고, 분석하는 방법을 선택한다. 따라서 '표'와 같은 데이터 프레임을 생성하고 다루는 방법에 대해서 알아보자.


df_temp = pd.DataFrame({'A' : score_A_class, 'B' : score_B_class})
df_temp

다음과 같이 딕셔너리 형태(Google에 검색하자!)로 데이터 프레임을 생성하는데 앞에 'A', 'B'는 이름에 해당하고, 콜론(:) 뒤에 붙은 변수가 실제 저장되는 자료를 의미한다.


#DataFrame 사용방법

df_temp['A']

A의 값만 따로 호출할 수 있다.


df_temp[['A','B']]

특정 변수만 따로 호출할 수 있다.


df_temp.A - df_temp.B

다음과 같이 *변수명.컬럼*으로 호출하여 연산할 수 있다.



dif = df_temp.A - df_temp.B
df_temp['dif'] = dif
df_temp

새로운 자료를 추가할 수 있다. 예제는 'A와 B의 차'를 dif라는 컬럼으로 추가했다.


df_temp.columns

해당 코드는 데이터 프레임의 컬럼(열 제목)만 출력하여 보여준다. 초기에 데이터 프레임의 구조를 파악할 때 유용하다. 현재 df_temp라는 데이터 프레임 안에는 'A', 'B', 'dif' 세 가지 컬럼이 있다.


df_temp[df_temp.A > 70]

A의 값이 70이 넘는 자료만 선택하여 보여준다. 논리적인 연산도 손쉽게 가능하다. 이러한 논리 연산은 데이터 분석을 정교화할 수 있게 해 준다.


Pandas의 기초적인 자료 형태를 다루는 방법에 대한 튜토리얼이 이제 막 끝났다. 다음은 외부 데이터를 가져오는 방법에 대해서 작성해보고자 한다. Pandas를 외부 데이터와 연계하면 기존의 엑셀을 상당수 대체할 수 있다. 가장 큰 장점은 마우스 조작 대신에 키보드로 대부분의 업무가 해결이 가능하다. 대용량 데이터를 엑셀에서 다룰 때도 속도가 많이 느린 편인데, 비교적 느리다고 소문난(사실 인터프리터와 컴파일러 블라블라 너무 복잡한 이야기!) Python도 엑셀에 비하면 엄청난 속도를 자랑한다.


+ 브런치에서 소스코드 작성이 매우 불편한 것 같다. 특히 복사도 불편하고.. 하지만 코드는 직접 쳐야 실력이 느는법!



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari