Intro

img

파이썬 라이브러리에서 판다스(Pandas)는 데이터 분석을 하기 위해 사용할 수 있는

유용한 라이브러리라고 말할 수 있다.

판다스는 데이터프레임(DataFrame)이라는 형식을 통해

데이터를 가공할 수 있다.

글을 본격적으로 서술하기 전에,

판다스는

import pandas as pd

라는 alias를 통해 pd로 선언이 가능하다.

오늘 이 글에서는 판다스 라이브러리의 간단한 기능에 대해서 말해 볼 것이다.


01. csv파일 DataFrame으로 읽기(read_csv)

csv파일을 DataFrame으로 읽어 들이려면 다음과 같이 선언할 수 있다.

df = pd.read_csv("파일경로", encoding = 'utf-8')

 

read_csv의 기본 형식은 아래의 판다스 공식 페이지에서 확인할 수 있다.

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

 

read_csv()에서 encoding 파라미터의 경우, 기본값이 utf-8로 설정되어 있다.

low_memory 옵션의 경우 대용량의 데이터를 불러오는 경우, 칼럼별 데이터 타입을 추측하는데 많은 

메모리 소비가 발생할 수 있기에, False로 설정하는 것이 좋다.

특히 특정 컬럼에 NaN 값이 포함되어 있거나 여러 형태의 자료형이 섞여 있으면 DtypeWarning이 발생하므로

이런 경우에도 low_memory옵션을 False로 설정하는 것이 좋다.


02. 서로 다른 데이터 프레임 결합하기(concat)

서로 다른 데이터 프레임을 결합하기 위해서는 concat()을 사용해야 한다.

pd.concat([df1, df2], axis = 1)

concat의 사용 예시는 다음과 같다.

concat 사용 시 주의해야 할 점은 결합할 데이터 프레임이 서로 같은 형태여야 한다는 것이다.

axis 옵션의 경우, 0 인 경우에는 데이터 프레임을 위 아래로 합치고,

1인 경우에는 데이터 프레임을 왼쪽 오른쪽으로 합친다.

찾아보니 join 옵션도 존재하는데 outer, inner로 선언이 가능하고

outer는 합집합, inner는 교집합을 의미한다.


03. 데이터프레임 병합하기(merge)

mergeconcat과는 다르게 각 데이터 프레임에 존재하는 고유의 키 값을 중심으로

데이터 프레임을 병합하는 기능을 수행한다.(어떻게 보면 SQL의 join과 비슷한 기능인 것 같다.)

merge의 사용예시는 다음과 같다.

result = pd.merge(df1, df2, on='id', how='left')

merge의 기본적인 사용 옵션에는 onhow가 존재하는데,

on은 어떤 키를 중심으로 데이터 프레임을 합칠지를 의미하고,

how는 어떤 방식으로 병합(join)을 수행할지를 의미한다.

how의 옵션에는 left, right, outer, inner, cross가 존재하며 디폴트 값은 inner이다.

이 옵션은 SQL의 조인 방식을 선택하는 것과 비슷하다.


04. NaN값이 들어있는 특정 행, 열 지우기(dropna)

데이터프레임의 특정 행이나 열에 NaN 타입의 데이터가 있을 경우, 코드 실행 중에 오류가 발생할 수 있다.

이를 위해서 dropna를 통해 NaN값이 들어있는 행이나 열을 지울 수 있다.

사용예시는 다음과 같다.

df = df.dropna(axis = 0)

여기서 axis를 0으로 선언하면 특정 행을 지우겠다는 의미이고,

1로 선언을 할 경우 특정 열을 지우는 것을 의미한다.


05. 데이터 프레임 자료형 변환(astype)

데이터 프레임을 만들었을 때, df.info()를 사용하면 각 컬럼 별 데이터 형식을 알 수 있다.

이 때 데이터 분석의 목적에 맞게 데이터의 형식을 변환해야 할 경우가 생길 수 있는데,

이것을 위해 astype을 사용할 수 있다.

astype의 사용 예시는 다음과 같다.

df['A'] = df['A'].astype('int64')

이것은 A라는 열의 데이터 형식을 int64 타입으로 변환하는 것을 의미한다.

최근에 데이터 가공을 하다가 알게 된 사실인데,

데이터프레임은 Datetime이라는 날짜를 저장하는 자료형도 존재한다.

그런데 만약 날짜가 저장된 열을 datetime이라는 형식으로 변환해야 할 경우,

df['날짜'] = df['날짜'].astype('int').astype('str')
df['날짜'] = pd.to_datetime(df['날짜']) #날짜 datetime으로 변환

이런 방식으로 변환을 해야 변환을 잘 이루어졌다.

df['날짜'] = pd.to_datetime(df['날짜'], format='%Y%m%d',errors='raise')

참고로 내가 사용한 다른 방법은 이것인데, 이렇게 format으로 년도, 월, 일을 지정할 수 있다.