EDA 05

조천룡·2023년 6월 3일

EDA

목록 보기
5/12
post-thumbnail

Pandas

Pandas 모듈

  • Python에서 R만큼 강력한 데이터 핸들링 성능을 제공하는 모듈
  • 단일 프로세스에서는 최대 효율
  • 코딩 가능하고 응용 가능한 엑셀로 받아들여도됨
  • 누군가는 스테로이드 맞은 엑셀로 표현함

Series

  • Pandas의 데이터형을 구성하는 기본은 Series이다.
  • 시리즈는 컬럼별로 한줄이 시리즈 데이터이다.
  • Series는 index, value로 이루어져있고, 한 가지 데이터 타입만 가질수있다.

날짜 데이터

pd.date_range("시작날짜",periods=출력할 일수)

pd.date_range("20210101",periods=6)
# 날짜가 20210101부터 6일만큼 출력됨

DataFrame

pd.Series() : index, value로 이루어져 있다.
pd.DataFrame() : index, value, column로 이루어져 있다.

# 임의로 데이터 만들기
data = random.randn(6, 4)
> 6 * 4 행열로 이루어진 표준정규분포에서 샘플링한 난수 생성
dates = pd.date_range("20210101",periods=6)

pd.DataFrame(data = data, index = dates, columns = [A, B, C, D])
위에 데이터가 6 * 4 이기때문데 인덱스 값 6으로 맞춰주고,
컬럼값 4 맞춰줘야 함 (안맞춰주면 오류 뜸)

데이터 프레임 정보 탐색

Pandas의 메서드라서 괄호 붙임

  • df.head() : 상단부터 데이터 출력 (기본값 = 5)
  • df.tail() : 하단부터 데이터 출력 (기본값 = 5)
  • df.info() : 데이터 프레임의 기본정보 확인
  • df.describe() : 데이터 프레임의 기술통계 정보 확인
    (각 컬럼별로 개수,평균,표준편차,최소값,최대값 확인)

Pandas 객체의 속성값이라 괄호 안붙임

  • df.index : 인덱스 값을 리스트 형태로 반환하여 보여줌
  • df.columns : 컬럼 값을 리스트 형태로 반환하여 보여줌
  • df.values : 벨류 값을 리스트 형태로 반환하여 보여줌

데이터 정렬

sort_values() : 특정 컬럼(열)을 기준으로 데이터를 정렬한다.

df.sort_values(by = "기준컬럼명")
df.sort_values(by = "B", ascending = True, inplace = True)
  • ascending = True 옵션 : 오름차순 정렬 (생략가능)
  • inplace = True 옵션 : 원본데이터도 수정하기

데이터 선택

한개 컬럼 선택 : 시리즈 타입으로 출력됨

df["A"]
> A 컬럼 선택

두 개이상 컬럼 선택 : 리스트 안에 넣어야 함

df[["A","B"]]

offset index

[n:m] : n부터 m-1 까지

[0:3] > 0~2까지(인덱스)

인덱스나 컬럼의 이름으로 slice 하는 경우는 끝을 포함한다.

["A":"C"] > A~C까지
["20210101":"20210104"] > 1일부터 4일까지 포함
["A","C"] > A와 C

loc[행의 인덱스,열의 인덱스]

loc : index 이름으로 특정 행,열을 선택한다.

loc[:, ["A","B"]] 
# 모든 인덱스와 A,B 컬럼 선택
loc["20210101", ["A","B"]] 
# 20210101 인덱스와 A,B 컬럼 선택

iloc[행의 인덱스,열의 인덱스]

iloc : 컴퓨터가 인식하는 인덱스 값으로 선택 (눈에 보이지는 않지만 0부터 인덱스값 존재)

iloc[3, 2] 
# 3행 2열 데이터 선택
iloc[3:5, 0:2] 
# 3, 4 행 0, 1 열 선택

조건으로 데이터 필터링 하는법

전체 데이터에 마스킹 해주면 조건에 맞는 데이터 출력 가능
ex) A컬럼에서 0보다 큰 숫자(양수)만 선택

# 조건만들기
df["A"]>0 (bool 타입으로 출력됨)

# 전체데이터에서 조건에 맞는 데이터로 출력됨
# 조건에 맞지않으면 NoN으로 출력
# 조건을 다시 데이터프레임에 씌우므로 마스킹 한다고 표현
df[df["A"]>0]

컬럼 추가

기존 컬럼이 있으면 수정, 없으면 추가됨
행 길이를 원래 데이터와 맞춰주지않으면 오류 발생함

df["E"] = ["one", "two"]

isin() : 특정 요소가 있는지 확인

df["E"].isin(["one"])
(bool타입으로 출력됨)

특정 컬럼 제거

  • del 키워드 이용하기(원본데이터도 자동 삭제됨)
  • drop() 메서드 이용하기(원본데이터 삭제 옵션 줘야함)
  • inplace = True
  • axis = 0 : 축 선택하기 0은 가로, 1은 세로 (default=가로)
del df["E"]
> E 컬럼 제거
df.drop(["행 인덱스"], axis = 0)

apply() : 함수 기능을 적용해주는 메서드

df["A"].apply("sum")
> A컬럼의 합계 출력

#여러개도 가능함
df[["A","B"]].apply("sum")

#numpy로도 가능함
df["A"].apply(np.sum)

ex) 양수,음수 구분 함수 만들기

# 구분 함수만들기
def plusMinus(num):
	return "plus" if num > 0 else "minus"
    
# 함수 적용하기
df["A"].apply(plusMinus)

# lambda 함수 이용하기
df["A"].apply(lambda num: "plus" if num > 0 
profile
10√2 Data

0개의 댓글