Study/Python

[Python] 데이터 로드 및 전처리

truthyun 2021. 10. 15. 00:13
728x90
반응형

※ 아래 내용은 인프런 강의 공공데이터로 파이썬 데이터 분석 시작하기 강의로 부터 작성된 코드 요약본 입니다. 

 

공공데이터로 파이썬 데이터 분석 시작하기 - 인프런 | 강의

이디야는 스타벅스 근처에 입점한다는 설이 있었습니다. 과연 이디야와 스타벅스의 매장입지는 얼마나 차이가 날까요? 2013년부터 2019년까지 부동산 가격 변동 추세가 아파트 분양가에도 반영될

www.inflearn.com

 

1. 데이터를 로드하기 위해 pandas 라이브러리 불러오기

import pandas as pd

 

2. 데이터 로드

- 데이터 불러오기(인코딩)

df = pd.read.csv("데이터 경로")

# 한글이 포함된 파일의 경우 인코딩이 필요함
df = pd.read.csv("데이터 경로", encoding = "cp9494" 또는 "utf-8")

 

- 데이터 살펴보기

# 데이터프레임의 행과 열의 수
df.shape

shape함수를 통해 출력되는 숫자로 차례대로 행과 열의 개수이다.

# 데이터프레임에서 상단에 위치한 데이터 5개를 미리보기
df.head()
df.head(5)
# 데이터프레임에서 하단에 위치한 데이터 5개를 미리보기
df.tail()
df.tail(5)

 head와 tail 함수를 통해 상단, 하단에 위치한 데이터를 미리보기할 수 있다. 괄호 안에 숫자를 입력하면 숫자 만큼의 데이터를 미리보기할 수 있다.

 

- 데이터 요약하기

df.info()

info 함수를 통해 데이터의 형태, 각 변수에 데이터 수, 데이터 타입 등을 확인할 수 있다.

 

- 결측치 보기

# null 값 확인
df.isnull()

데이터 프레임에서 데이터가 null이 아니면 False, null이면 True를 출력한다. 

isnull 함수를 쓰면 전체 데이터 프레임을 통해서만 확인할 수 있기 때문에 각 변수에서 null값이 몇개 있는지 확인하기 위해 합계를 구해야 한다. 이는 True = 1, False = 0임을 이용한다.

df.isnull().sum()

 

위와 같은 방법으로 na인 데이터를 알아보고, 각 변수에 따른 개수를 확인할 수 있다

# NA값 확인
df.isna()
df.isna().sum()

 

- 데이터 타입 변경

예를들어 특정 변수의 값을 숫자(int)타입으로 변경하는 경우 아래와 같이 작성할 수 있다.

df["변수명"].astype(데이터 타입)
pd.to_numeric(df["변수명"])

위 방법에서 컬럼에 공백문자가 포함되어 있는 경우 데이터 타입 변경이 불가능하다. 따라서 to_numeric 함수에서 error 옵션을 'coerce'로 설정하여 값을 강제로 바꿀 수 있다. 다만 강제로 변환했을 때 NaN값이 포함되어 있기 때문에 모든 값의 dtype은 float64로 변환이 된다.

pd.to_numeric(df["변수명"], errors = 'eoerce')

 

- 변수 요약하기

df["변수명"].describe()

문자열 정보가 담긴 컬럼의 경우 아래와 같은 정보가 담겨있다.

count : 변수 내 데이터 개수
unique : unique한 값의 개수
top : 변수 내 가장 빈번하게 나타나는 문자
freq :변수 내 가장 빈번하게 나타나는 문자의 빈도 수

숫자 정보가 담긴 컬럼의 경우 아래와 같은 정보가 담겨있다.

count : 변수 내 데이터 개수
mean : 데이터의 평균 값
std : 데이터의 표준 편차 값
min : 데이터의 최솟값
25% : 데이터 내 1분위 수 
50% : 데이터 내 2분위 수 (중앙값)
75% : 데이너 내 3분위 수
max : 데이터 내 최댓값

 

- 문자열 데이터 수정하기

컬럼 내 문자열에서 특정 문자(A)를 포함된 문자열에서 다른 문자(B)로 수정하는 경우

df["변수명"].str.replace("A","B")

컬럼 내 문자열에서 특정 문자(A)를 삭제할 경우 

df["변수명"].str.replace("A","")

 

- 필요 없는 컬럼 제거하기

# axis = 0 : 행, axis = 1 : 열
df.drop(["변수명"], axis = )

axis 옵션에서 0일 경우 행을 기준으로 삭제되고, 1일 경우 열을 기준으로 삭제된다. 컬럼을 삭제할 경우 axis = 1을 입력한다.

 

- 컬럼을 기준으로 데이터 집계하기 - groupby

df.groupby(["기준 변수"]).연산함수

특정 컬럼을 기준으로 연산값을 구할 때 groupby함수를 사용한다.

df.groupby(["기준 변수"])["계산 할 변수"].연산함수

 

여기서 기준 변수는 2개 이상이 될 수 있다. 또한 groupby결과를 dataframe으로 나타내기 위해선 unstack함수를 사용한다

df.groupby(["기준 변수1", "기준 변수2"])["계산 할 변수"].연산함수.unstack()

위의 결과에서 행과 열을 바꿀땐 transpose 함수를 추가한다.

 

- 컬럼을 기준으로 데이터 집계하기 - pivot

pd.pivot_table(df, index = ["기준변수"], values = ["계산할 변수"], aggfunc = "연산")

groupby에서 처럼 기준 변수는 2개 이상일 수 있다.

pd.pivot_table(df, index = ["기준 변수1", "기준 변수2"], values = "계산 할 변수", gaafunc = "연산")

pivot_table은 결과가 자동으로 데이터프레임 형태로 출력된다.

728x90
반응형