본문 바로가기

IT 라이프

[Python] 판다스 (Pandas) 기초 - 데이터프레임(DataFrame)

반응형

 Pandas는 수집된 데이터들을 분석하기 전에 전처리를 하는 과정에서 사용되는 핵심적인 패키지입니다. 이번 포스팅에서는 Pandas가 과연 무엇인지, 어떻게 사용하면 되는지에 대해서 차근차근 알아보도록 하겠습니다.

 

판다스(Pandas)?

 PandasPython Data Analysis Library의 약어입니다. Python을 활용해 데이터 분석을 하기 위해서 사용하는 필수적인 패키지이죠. 통계 분석을 위해 많이 사용되는 R의 Dataframe을 벤치마킹하여 Python에서 사용할 수 있는 형태의 Dataframe을 제공해주는 라이브러리입니다. 

 판다스 데이터프레임 (Pandas DataFrame)을 활용하면 데이터를 표(Table) 형태로 처리할 수 있어서 수집된 데이터의 전처리 등 각종 데이터 핸들링을 쉽고 편하게 할 수 있습니다.

 

데이터 프레임 (DataFrame)

 판다스 데이터프레임 (Pandas DataFrame)은 다양한 데이터 타입을 이용하여 만들어낼 수 있는데요. (list, dictionary, series, ndarray 등). 개념적으로 데이터 프레임은 Series들을 하나의 열로 취급한 집합이라고 볼 수 있습니다. 데이터를 표의 형태로 처리하는 자료구조인데요. 보통 RDB 환경에서 SQL로 테이블을 컨트롤할 수 있는 수준의 기능들이 상당 부분 데이터프레임에 구현되어 있습니다.

DataFrame 생성 방법

 다양한 데이터 타입을 이용하여 만들어낼 수 있지만, 대표적인 두 가지 방법에 대해서 알아보도록 하겠습니다.

List 이용

 

import pandas as pd

frame = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
frame

Dictionary 이용

import pandas as pd

data = {
    'age' : [20,23,48],
    'height' : [183,192,175],
    'weight' : [77,83,65]
}
indexName = ['슈퍼맨','스파이더맨','배트맨']

frame = pd.DataFrame(data, index = indexName)
frame

DataFrame 조회 방법

열(Column) 조회

#열 조회
print ("■ 열 조회 - 1")
print (frame['age'])
print ("■ 열 조회 - 2")
print(frame.age)
더보기

■ 열 조회 - 1
슈퍼맨      20
스파이더맨    23
배트맨      48
Name: age, dtype: int64
■ 열 조회 - 2
슈퍼맨      20
스파이더맨    23
배트맨      48
Name: age, dtype: int64

특정 열의 특정 값을 조회하고 싶을 때는 아래와 같은 방법을 사용합니다.

print("\n<특정 열의 특정 값 조회>")
print(frame['age'][1])
print(frame.age[1])

행(Row) 조회

 행 조회는 열 조회와 조금 다르게 lociloc을 사용해서 조회 할 수 있습니다.

 

 우선 loc은 인덱스 네임(index name)으로 조회하는 방식입니다.

#행 조회
print ("\n\n<특정 행 조회>")
print (frame.loc['배트맨'])

print("\n\n<loc를 Seq로 조회할 경우>")
# print(frame.loc[0])   # 조회가 될까요? 주석을 풀고 살행해 봅시다.

 iloc은 인덱스 시퀀스(index sequence)를 사용해서 조회하는 방식입니다.

print("\n\n<iloc로 조회할 경우>")
print(frame.iloc[0])
# print(frame.iloc['배트맨'])  # 조회가 될까요? 주석을 풀고 살행해 봅시다.

 

DataFrame 수정 방법

열(Column) 추가하기

먼저 blood_type 이라는 컬럼을 추가하겠습니다.

frame_add_col = pd.DataFrame(frame,columns= ['age','height','weight','blood_type'])
frame_add_col

 컬럼이 추가된 것을 확인할 수 있는데요. 아직 데이터를 넣지 않았기 때문에 전부 NaN으로 표시되고 있습니다. 이제 데이터를 넣어줍시다.

frame_add_col['blood_type'] = ['A','B','O']
frame_add_col

행(Row) 추가하기

frame_add_index = frame_add_col.copy()
frame_add_index.loc['앤트맨'] = [25,170,50,'AB']
frame_add_index

행 · 열 삭제하기

 drop 메소드를 사용하면 행 또는 열을 삭제할 수 있습니다. axis 값은 행이면 '0', 열이면 '1'로 지정해주시면 됩니다.

print('remove age column:\n')
frame_add_col.drop("age", axis=1)

 그런데 이 경우 기존 프레임에서 적용되는 것이 아니라 삭제된 상태의 프레임을 리턴해줍니다. 그러므로 기존 프레임에 적용하기 위해서는 inplace = True 옵션을 추가로 주어야 합니다.

frame_add_index.drop('배트맨', axis=0, inplace=True)

 

반응형