import pandas


import pandas #주로 import pandas as pd로 작성하여서 간결하게 사용한다.
from pandas import DataFrame #pandas 안에 있는 DataFrame만 사용할 경우에는 이렇게도 불러올수 있다.

DataFrame 기본 사용법


frame = DataFrame(data, index, columns) #데이터프레임 생성

frame.values #데이터프레임 원소들을 반환
frame.columns #데이터프레임 열 이름 반환
frame.index #데이터프레임 행 이름 반환

frame.sum(axis = 1) #행 기준으로 원소들의 합계를 반환 (default = 0, 열 기준)
frame.mean(axis = 1) #행 기준으로 원소들의 평균을 반환 (default = 0, 열 기준)
frame.median(axis = 1) #행 기준으로 원소들의 중앙값을 반환 (default = 0, 열 기준)
frame.mode(axis = 1) #행 기준으로 원소들의 최빈값을 반환 (default = 0, 열 기준)

frame["컬럼명"].max() #column 열 기준으로 최댓값 반환
frame.loc["인덱스명"].max() #index 행 기준으로 최댓값 반환
frame["컬럼명"].min() #column 열 기준으로 최솟값 반환
frame.loc["인덱스명"].min() #index 행 기준으로 최솟값 반환

frame["추가할 컬럼명"] = 넣을 데이터 #컬럼 추가
del frame["삭제할 컬럼명"] #컬럼 삭제

frame.loc["추가할 인덱스명"] = 넣을 데이터 #인덱스 추가
frame = frame.drop("삭제할 인덱스명") #인덱스 삭제

결측값


frame = DataFrame([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]], columns = ["C1", "C2", "C3"]) #3 x 3 데이터 프레임 생성
frame.loc[["C1", "C3"], [0, 2]] = None #임의로 결측값을 넣음 (None 대신 numpy.nan도 가능)

frame = frame.dropna() #결측값이 있는 행 제거
frame = frame.dropna(axis = 1) #결측값이 있는 열 제거
frame = frame["컬럼명"].dropna() #특정 컬럼에서 결측값이 있는 행 제거

결측값 처리 방법

1. 제거(Deletion) : 일반적으로는 결측값을 제거하는 것이 가장 좋은 방법이다.
2. 대치(Imputation) : 결측값을 특정 값(최빈값, 중앙값, 평균)으로 대치하는 것이다.
3. 예측모델 : 회귀 분석 기술이나 기계 학습 방법 등을 활용하는 통계 방법

DataFrame Join (데이터프레임 합치기)


data_A = {"key" : [0, 1, 2], "name" : ["Hong", "Kim", "John"]}
frameA = DataFrame(data_A) #key와 name 칼럼을 가지고 있는 데이터프레임 생성

data_B = {"key" : [1, 2, 3], "age" : [21, 20, 24]}
frameB = DataFrame(data_B) #key와 age 칼럼을 가지고 있는 데이터프레임 생성

frameC = DataFrame.merge(frameA, frameB, left_on = "key", right_on = "key", how = "inner")

위에 코드에서 DataFrame.merge()를 통해서 데이터프레임을 합치는데, 두 데이터프레임에 있는 공통필드를 기준으로 데이터프레임을 합치는 방식이다.
1. left_on : 왼쪽 데이터프레임에서 공통필드를 작성해 주면 된다.
2. right_on : 오른쪽 데이터프레임에서 공통필드를 작성해 주면 된다.
3. how : "inner", "outer", "left", "right" 중에서 선택해서 작성하면 선택한 방식으로 데이터프레임이 합쳐지게 된다. 자세한 건 아래 그림을 참고하면 좋겠다.

DataFrame.merge(왼쪽 데이터프레임, 오른쪽 데이터프레임, left_on = "공통필드", right_on = "공통필드", how = "원하는 방식")

profile
Hello, World!

0개의 댓글