-
#5: KT_AIVLE_SCHOOL : DX_4th : 2주차 : 데이터 다듬기KT_AIVLE_SCHOOL_DX_4th 2023. 8. 26. 22:16
# 4 에서는 <데이터 다루기> 강의는 무엇인지, 어떤 것을 배우는지 알아보았다.
https://datawithu.tistory.com/6
#5에서는 데이터 다듬기에서는 파이썬언어로 무엇을 배우는 지 알아보자
데이분석의 가장 기본이 되는 데이터 다듬기에서는 분석에 앞서 크게 2가지 패키지(package) /라이브러리에 대해서 배운다.
- 넘파이 (Numpy)
- 판다스 (Pandas)
1. 넘파이 (Numpy)
주요 함수와 사용법등은 ( -> 넘파이 관련 함수 링크 자리 예정)
* Numpy란 Numerical Python의 줄임말로
기본 리스트(값의 모음) 개념을 넘어서 수학적 계산이 필요해 만들어진 파이썬의 라이브러리이다.
벡터와 행렬 연산을 위한 편리한 기능을 제공하며 pandas와 matplotlib의 기반이다.
1 ) Array : 배열 : 행렬의 기본개념
넘파이의 기본은 array를 이해하는 것이다.
Array 배열은 쉽게 말하면 한 줄, 한 묶음 단위로 생각하면 편할 것 같다.
이때, 리스트 [ ]의 형태로 묶음단위를 나타내며, data type은 numpy.narray 라고 표기된다.
위의 표와 같이 2차원 array 의 경우 행렬 에서 (3, 4)로 행 3, 열 4를 갖는다.
기본적을 행단위가 분석시에는 좀 더 의미를 갖는 경우가 많은 것 같다.
=> 차후 데이터 분석시 행 / 인스턴스 로 의미단위가 되기 떄문이다.
2) 1~ N차원
차원을 늘려갈 때는 리스트[ ] 의 [ ]를 추가하는 방식으로 배열 차원을 높이면 된다.
# 1차원 리스트 형태 a = np.array([1,2,3,4]) # 2 차원 리스트 형태 b = np.array( [ [1,2], [3,4] ] )
Rank3이상, 즉 3차원이상부터는 (axis0,axis1,axis2) axis0, axis1, axis2 에서
axis0는 2차원의 depth로 이해하고 axis1과 axis2를 2차원 표로 생각하면 편한데,
이유는 단위수가 (axis0)이고, 분석 대상이 2차원의 표이기 때문이다.
3 ) 넘파이에서 사용되는 주요 메소드와 함수
import numpy as np 라이브러리 불러오기
dtype :데이터 타입
ndim : 차원수
shape : 행열모양 : 몇 행 몇 열
np.array() : 자료형(문자,딕셔너리,집합)을 배열로
np.reshape() : 행열의 배열 재구성
np.sum() : 합
np.mean() : 평균
np.std() : 표준편차
np.where(조건문, 참값, 거짓) :
4 ) 인덱싱 슬라이싱
인덱싱 [ 행 , 열 ]
슬라이싱 [ 어디부터 : 어디까지, : ]
기본적으로 파이썬의 인덱스는 0 1 2 3 4 5 6 ......
5) 배열 연산 : 사칙연산
np.add() : + : 더하기
np.subtract() : - : 빼기
np.multiply() : * : 곱하기
np.divdie() : / : 나누기
np.power() : ** : 제곱
np.sqrt() : 제곱근 루트
2.판다스 (Pandas)
주요 함수와 사용법등은 ( -> 판다스 관련 함수 링크 자리 예정)
1) 데이터 프레임
판다스의 핵심은 데이터프레임(DataFrame)을 이해하는 것이다.
이때 넘파이 배열과 다른 점은,
데이터 프레임은 여러 열에 대하여 인덱스외의 열 이름이 따로 있다는 것이다. => 열에 대한 속성 조회가 쉬워진다.
연도(year)같은 의미있는 값 열이 인덱스가 되면 분석이 용이해지는 장점도 있다.
또한 한 줄을 우리는 시리즈 라고 부른다.
2) 판다스 주요 메소드 & 함수
import pandas as pd 로 라이브러리 불러오기
pd.read_csv() : csv 파일 읽어오기
df = pd.DataFrame(data=, index=, columns= )
df.head() : 상위 행 조회
df.tail() : 하위 행 조회
df.set_index('열이름', inplace=True) : 열 하나를 인덱스로 지정 가능
df.reset_index(drop=False, inplace=True) : drop=True는 기존 인덱스열을 버림
df.rename(columns={ '기존' : ' 새로' ) : 열 이름 변경
3) 판다스 데이터 탐색시 사용하는 메소드 & 속성
df.info() : 인덱스, 열 , 값 개수, 데이터 형식, 널NaN갯수
df.describe() : 기초 통계량 : 평균, 표준편차, 4분위수
shape : 행 열 형태
index : 인덱스 정보
values : 값들 확인
columns : 열들 확인
dtypes : 데이터들 형식
4) 데이터 정렬 & 고유값 확인
sort_index( ascending= ) : 인덱스 기준 정렬
sort_values(by=기준열, ascending=) # 리스트형태로 [ 열1, 열2] 등에 대해 기준열를 순차적으로 정렬가능
unique() : 고유값 확인
value_counts() : 고유값과 갯수 확인, dropna=True옵션을 넣으면, Nan값제외
mode() : 고유값중 최빈값
집계 : sum(), mean(), max(), min(), count()
5) 데이터 프레임 조회 방식
loc ; location을 의미, 특정 열이름 등으로 조회하는 방식
iloc : integer location를 의미, iloc의 경우 숫자(01234 인덱스)로 조회하는 방식
df.loc[ 행 , 열 ] 이 기본 형태임을 기억하자
이때 열부분은 생략 가능하지만 행부분을 생략이 안된다
그래서 결국은 df.loc[ 행에 대한 조건 ] 만 남게 된다.
시리즈 : 데이터프레임에서 한 줄을 꺼내오면 나오는 자료구조
넘파이에 배열이 있다면, 데이터프레임은 시리즈이며 리스트[ ] 형태로 나타난다.
다만 시리즈는 딱 한줄, 2줄이상은 데이터 프레임이 된다.
6) 알아두면 유용한 조건 조회
*isin(리스트)
df.loc[ df['열']. isin([ a,b ,c ]) ] : abc가 있는 데이터만을 조건으로 조회
*between(값1, 값2) : 범위 지정 조회
7) 데이터 프레임 집계- groupby
df.groupby( '~별로 묶을 열', as_index=False )[[ '알고싶은 열' ]]. 집계함수()
- mean()/sum()/count()등의 집계함수를 꼭 써줘야 된다.
- as_index =False 옵션을 사용하길 이강래 강사님은 권장해주셨는데,
향후 시각화 라이브러리에서의 편의성이 있어서 그런다고 하셨다.
- 집계함수들을 한번에 쓰고 싶다면 .agg(['sum', 'mean',....]) 메소드를 이용하면 된다.
- agg( { total_bill':'mean ', tip':'sum}) 이런식으로 딕셔너리 형태로도 지정할 수도 있다.
8) 데이터프레임 변경
이름변경 : df.rename( columns={ : } )
열추가 : df['New'] = df[ '열'] + df[ '열']
지정위치열추가 : df.insert( 위치번호, df['New'], df[ '열'] + df[ '열'] )
열 삭제 : df.drop( '삭제 열' , axis=1 )
범주형 값 변경 : df.map( { '전' : '후'} )
범주형으로 변경 : cut() qcut()
- cut() : 등급범위별
- qcut() : 데이터 갯수별
9) 결측치
* 결측치 확인 / 유효값 확인
df.isna().sum() / notna()
df.info()
* 결측치 제거
df.dropna( subset=['특정열'], axis=0)
#axis=1은 열을 의미
* 결측치 채우기
df.fillna( 채울값 )
df.fillna(method='ffill) #앞의값으로 'bfill'은 뒤의 값으로 채우기
df.interpolate(method='liner') 선행보간법으로 채우기
10) 가변수화
= > 범주형데이터를 독립된 열으로 변환하여 컴터가 계산을 쉽게
pd.get_dummies(df, columns=, drop_first=True)
11) 데이터 프레임 합치기
.concat( [, , ], join='outer', axis=1 )
.merge( df1, df2, on='기준열', how='outer' )#딱 2개씩만 합치기 가능
이처럼 데이터다듬기에는 많은...것들을 알아보았다.
이렇게 데이터 다루기와 다듬기 세션이 끝났다.
다음편은 대망의 미니 프로젝트로 돌아오겠다.
'KT_AIVLE_SCHOOL_DX_4th' 카테고리의 다른 글
#7: KT_AIVLE_SCHOOL : DX_4th : 기자단이 되다. (1) 2023.08.28 #6: KT_AIVLE_SCHOOL : DX_4th : 3주차 : 미니프로젝트1 : 팀프로젝트 (0) 2023.08.26 #4: KT_AIVLE_SCHOOL : DX_4th : 1주차 : 데이터 다루기 (0) 2023.08.26 #3: KT_AIVLE_SCHOOL : DX_4th : Initiation : 나는 '에이블러' 다 (0) 2023.08.26 #2: KT_AIVLE_SCHOOL : DX_4th : Initiation : 최종 합격 후기 (5) 2023.08.26