혼공데분 with 파이썬 3,4장

cse 23·2023년 9월 13일
0

3.데이터 정제하기

03-1 불필요한 데이터 삭제하기

데이터정제: 데이터에서 손상되거나 부정확한 부분을 수정하고,불필요한 데이터를 삭제하거나 불완전한 값을 교체하는 작업
-> 데이터 분석 목적에 맞게 변환하는 데이터 랭글링,데이터 먼징의 일부로 수행가능

loc 매서드에 슬라이싱을 사용 -> 번호열부터 등록일자열까지 선택하여 새로운 데이터프레임을 만들수 있다.
불리언배열: 쉽게 원하는 열만 선택

columns 속성:판다스의 Index클래스의 객체
원소별 비교: Index 클래스를 비롯하여 배열 성격의 객체는 어떤값과 비교할때 자동으로 배열에 있는 모든 원소와 하나씩 비교.

Drop()매서드: 판다스에서 데이터 프레임의 행이나 열을 삭제(axis 매개변수를 1로 지정)
inplace 매개변수: Drop()매서드에 true로 지정하면 현재 선택한 데이터프레임을 바로 수정가능

dropna(): 기본적으로 NAN이 하나 이상 포함된 행이나 열을 삭제
ns_book2 = ns_book.drop([0,1]) -> 인덱스 0부터 1까지 2개 행을 삭제

[]연산자: 행을 선택할때 자주 사용-> 슬라이싱,불리언배열-> 행을 선택
불리언 배열사용해서 행 선택하기 -> 원하는 행은 True로 표시하고 제외할 행은 False로 표시한 불리언 배열을 만들어 사용

duplicated() 메서드: 판다스 데이터프레임의 중복된 행 삭제(기본적으로 데이터프레임에 있는 모든 열을 기준)

groupby()매서드: 책이 두권일때 하나로 합치는 방법
by매개변수: 행을 합칠때 기준이 되는 열을 지정

원본데이터 업데이트하기
1.duplicated()매서드로 중복된 행을 True로 표시한 불리언 배열을 만듦
2.1번에서 구한 불리언 배열을 반전시켜서 중복되지않은 고유한 행을 True로 표시
3.2번에서 구한 불리언 배열을 사용해 원본 배열에서 고유한 행만 선택합니다.

~연산자: 불리언 배열을 반전시킬때 사용
copy()매서드: 원본에서 고유 배열을 선택하여 데이터프레임을 만듦
set_index()매서드: 지정한 열을 인덱스로 설정할때
update():다른데이터프레임을 사용해 원본 데이터프레임의 값을 업데이트할때 사용
reset_index()매서드: 데이터프레임 인텍스를 재설정

data_cleaning(),일괄처리함수: 필요한 코드를 파이썬 함수로 만들어 저장하면 간단하게 함수를 호출하거나 파이썬 스크립트를 실행하여 데이터 정제과정을 단순화할수 있다.

03-2 잘못된 데이터 수정하기

info()매서드: 열마다 NAN이 아닌 값이 몇개나 있는지 확인가능

<누락된 값 처리하기>
isna() 메서드: 각행이 비어 있는지를 나타내는 불리언 배열을 반환
sum() 메서드: 이어서 호출하면 불리언 배열의 True 개수로 비어있는 행 개수를 얻을 수 있음
astype()메서드 :데이터 타입을 지정
loc 메서드 : 사용하면 누락된 값을 원하는 값으로 바꿀수 있음

fillna()메서드 : NAN을 다른 값으로 바꿀수 있게함
replace()메서드: NAN은 물론 어떤 값도 바꿀수 있는 편리한 메서드

첫째, 바꾸려는 값이 하나일때
replace(원래 값, 새로운 값)
둘째, 바꾸려는 값이 여러개일때
replcae([원래값1,원래값2],[새로운 값1,새로운 값2])
셋째, 열마다 다른 값으로 바꿀때
replace({열이름: 원래 값},새로운 값)

정규표현식(정규식):문자열 패턴을 찾아서 대체하기 위한 규칙의 모음

숫자 찾기: /d
regex 매개변수: 정규 표현식을 사용한다는 의미
r문자: 정규 표현식앞에 붙인 문자,파이썬에서 정규 표현식을 다른 문자열과 구분하기위해 접두사처럼.-> 반복될때 일일이 쓰는 대신 중괄호 사용.

문자착지:마침표(.): 정규식 표현식 문자

  • 문자: 0개이상 반복된다고 표시할수 있음
    역슬래시(/): 정규표현식에서 괄호는 그룹을 나타내는데 사용하므로 일반 문자라고 인식하게 할때 사용
    gt()메서드: 전달된 값보다 큰값을 찾음
    ex) ns_book5['발행년도'].gt(전달된값).sum()

잘못된 값 바꾸기
try~execept문 : 오류떄문에 함수 실행이 종료되지 않고 이어서 다음요소를 추출하도록 예외처리시켜줌

4장 데이터 요약하기

04-1 통계로 요약하기

기술통계(요약 통계): 테크니컬한 어떤것을 지칭하는것이 아니라 자료의 내용을 압축하여 설명하는 방법
탐색적 데이터 분석: 데이터 시각화를 아우르는 데이터 분석 방법

기술통계구하기
describe()메서드: 판다스는 데이터프레임에서 기본적인 몇가지 기술통계를 자동으로 추출해줌

평균: 데이터값을 모두 더한후 데이터 개수로 나눈 값
중앙값: 전체 데이터를 크기 순서대로 일려로 늘어 놓았을때 중간에 위치한 값
분위수: 순서대로 나열된 데이터를 일정한 간격으로 나누는 기준점
분산: 데이터가 평균에서 얼마나 멀리 퍼져있는지를 알려줌
표준편차: 분산의 제곱근으로 분산과 마찬가지로 데이터의 분포 정도를 알려줌
최빈값: 데이터에서 가장 많이 등장하는 값을 알려줌

count:누락된 값을 제외한 데이터 개수를 나타냄
mean: 평균을 구함
std:표준편차를 구함
min:최솟값을 구함
50%:중앙값을 구함
max:최댓값을 구함

평균구하기
평균=(a+b+c)/3

range()함수 : 하나의 숫자를 입력할 경우 0부터 입력된 숫자 직전까지 반복할수 있는 객체를 만들어줌
mean() 메서드: 판다스 데이터프레임과 시리즈 객체의 평균을 계산
drop_duplicates() 메서드: 대출건수열에서 중복된 값을 가진 행을 제거한후 중앙값을 구해봄
quantile() 메서드: 판다스에서 분위수 값을 계산할때
interpolation 매개변수: quantile()메서드가 중갑값을 계산하는 방법을 결정

보간: 두 지점 사이에 놓인 특정 위치의 값을 구하는 방법
var():판다스에는 분산을 계산
std()메서드: 판다스에서 표준편차를 계산할때 사용
mode()메서드: 판다스에서 최빈값을 계산

데이터프레임에서 기술통계 구하기
numeric_only 매개변수: 수치형 열만 연산할수 있기 때문에 해당 열엣만 적용되도록 True로 지정

mean(),average():넘파이에서 평균을 구할때
median():중앙값을 구할때
가중 평균: 평균을 구할떄 각 값의 중요도에 따라 가중치를 부여하여 계산하는 평균값

04-2 분포요약하기

산점도: 데이터를 화면에 뿌리듯 그리는 그래프(두 변수 혹은 두가지 특성 값을 직교 좌표계에 점으로 나타내는 그래프)
->맷플롯립: 파이썬에서 그래프를 그리는데 사용하는 대표적인 패키지
-> matplotlib.pyplot 패키지
scatter()함수: 산점도를 그림
show(): 그래프 출력

alpha 매개변수:0~1사이의 값으로 투명도를 지정할수 있음.

히스토그램: 수치형 특성의 값을 일정한 구간으로 나누어 구간 안에 포함된 데이터 개수를 막대 그래프로 그린것
hist()함수: 맷플롯립으로 히스토그램을 그릴때 사용
bins 매개변수: 데이터의 구간을 나눠 그려봄
histogram_bin_edges()함수: 히스토그램의 구간을 정확하게 확인하기 위해 넘파이에 제공하는 함수를 사용
randn()함수: 표준정규분포를 따르는 랜덤한 실수를 생성가능
seed()함수: 이 함수를 사용하면 유사난수를 생성가능


상자 수염 그림 그리기: 최솟값, 세개의 사분위수 ,최댓값 이렇게 다섯개의 숫자를 사용해 데이터를 요약하는 그래프를 그림.
1.사분위수를 계산 25%와 75% 지점을 밑면과 윗면으로 하는 직사각형을 그림
2.중간값, 즉 50%에 해당하는 지점에 수평선을 긋는다
3.사각형의 밑면과 윗면에서 사각형의 높이의 1.5배만큼 떨어진 거리안에서 가장 멀리있는 샘플까지 수직선을 긋는다
4. 이 수직선 밖에서 최솟값과 최댓값까지 데이터를 점으로 표시. 이 영역의 데이터를 이상치라고 부른다.

IQR:제1사분위(25%백분위수)와 제3사분위(75%백분위수)사이의 거리
boxplot()함수: 맷플롯립에서 상자수염그림을 그리는 방법

상자 수염 그림 수평으로 그리기
boxplot()함수의 vert 매개변수를 기본값 True에서 False로 바꾸기

수염 길이 조정하기
기본적으로 수염의 길이: IQR의 1.5배
whis 매개변수: boxplt()함수에서 이를 조정가능

0개의 댓글