-
[Pandas] 02 Series - 메소드코린이 유치원/Pandas 2022. 6. 20. 22:11
01 주요 메소드
정렬
- 시리즈이름.sort_index(): index명 기준으로 정렬
- 시리즈이름.sort_values(): 값을 기준으로 정렬
- 공통매개변수
- ascending : True(기본값) - 오름차순, False - 내림차순
- inplace: True- 원본정렬, False(기본값) - 정렬결과를 새로운 Series에 담아서 반환
메소드 설명 head([정수])/ tail([정수]) 원소를 정수개수만큼 조회. 기본값 5 value_counts() 고유한 값의 빈도수 조회(DF 지원 x)
normalize = True 지정시 상대 빈도수로 조회index index명 조회 shape, size 원소개수 조회(메소드가 아니라 변수) dtype 데이터타입 조회 count() 결측치 제외한 원소 개수 sort_values() 값으로 정렬
ascending = True(오름차순)
ascending = False(내림차순)sort_index() index로 정렬
ascending = True(오름차순)
ascending = False(내림차순)unique() 고유값들 조회(DF지원 X) nunique 고유값 개수 조회 isin([값 리스트]) 원소가 값 리스트안의 값들 중 하나와 같으면 True 다르면 False인 boolean Series 반환 import pandas as pd s1 = pd.Series(range(0, 100, 10)) # 시리즈 생성 s1
head/tail 조회
s1.head() # 앞의 5개 원소 조회 s1.tail() # 뒤의 5개 원소 조회
value counts
s2 = pd.Series(['A', 'A', 'AB', 'O', 'B', 'O', 'AB', 'B', 'AB', 'B', 'O', 'O', 'A']) s2.value_counts() # 각각의 범주값들이 몇개씩 있는지 조회 s2.value_counts(normalize = True) # 상대 빈도수 조회
unique/nunique
s2.unique() # 범주형 변수 구성하는 고유값 반환 s2.nunique() # 고유값의 개수 반환
isin
s2.isin(['A', 'AB']) # [ ]의 값인 들어있는 인덱스는 True, 아니면 False를 반환 s2[s2.isin(['A', 'AB'])] # [ ]의 값이 들어있는 값만 반환
메소드 설명 min(), max(), sum(), mean(), median(), std(), var(), mode(), indxmax(), indxmin() 결측치가 있을 경우 빼고 계산
최소값, 최대값, 합계, 평균, 중앙값, 표준편차, 분산, 최빈값, 최대값 index, 최소값 indexdescribe() 요약 통계량 제공
수치형: 기술 통계값
범주형(문자열): 고유값 개수등 빈도수 관련 정보quantile(q = 분위) 분위수 계산. q 생략 시 0.5(중앙값) isnull()/ notnull() 결측치 체크
각 원소의 결측치여부를 Series로 리턴fillna(변환값) 결측치를 한번에 특정값으로 변환 dropna 결측치 제거 (DataFrame은 행/열을 지운다.) astype(데이터타입) 데이터 타입 변경. 결측치 있으면 오류 발생 평균
- 전체 데이터들의 합계를 총 개수로 나눈 통계량
- 데이터셋의 데이터들은 평균값 근처에 분포되어 데이터셋의 대표값으로 사용
- 이상치의 영향을 많이 받음
중앙값
- 분포된 값들을 작은값 부터 순서대로 나열한 뒤 그 중앙에 위치한 값
- 이상치에 영향을 받지 않아 평균대신 집단치 대표값으로 사용
표준편차/분산
- 값들이 흩어져있는 상태(분포)를 추정하는 통계량으로 분포된 값들이 평균에서부터 얼마나 떨어져 있는지를 나타내는 통계량
- 각 데이터가 평균으로부터 얼마나 차이가 있는지를 편차라고 함
- 분산: 편차 제곱의 합을 총 개수로 나눈 값
- 표준편차: 분산의 제곱근
최빈값
- 데이터 셋에서 가장 많이 있는 값
s4 = pd.Series([10,5,7,10,20,30,13,21,10000,7,14]) s4.mean() # 평균 s4.median() # 중앙값 s4.std() # 표준편차 s4.max() # 최대값 s4.min() # 최소값 s4.idxmax() # 최대값이 있는 index 반환 s4.idxmin() # 최소값이 있는 index 반환 s4.var() # 분산 import math math.sqrt(s4.var()) # 제곱근 사용한 표준편차 s4.qantile() # default 중앙값 s5 = pd.Series([10,5,7,10,20,30,13,21,7,14]) s5.quantile(q = [0.25, 0.5, 0.75]) # 사분위 - 0.25, 0.5, 0.75 s5.qunatile(a = [x/10 for x in range(1,10)]) # for문 이용해서 10분위수 s5.size # size: 총 원소 개수(결측치 상관없이)/ count(): Nan이 아닌 원소들의 개수
02 결측치
- 판다스에서 결측치
- None, numpy.nan, numpy.NAN
01 결측치 확인
- Numpy
- np.isnan(배열)
- Series
- Series객체.isnull(), Series객체.isna(): 결측치 - True, 결측치 아닌 값: False
- Series.notnull(), Series객체.notna(): 결측치 - False, 결측치 아닌 값: True
- DataFrame
- DataFrame객체.isnull(), DataFrame객체.isna()
- DataFrame객체.notnull(), DataFrame객체.notna()
import numpy as np import pandas as pd s1 = pd.Series([10, 5, 30, None, 100, np.nan, 120, 90, np.NAN]) s1
결측치확인
# numpy 함수 np.isnan(s1) # False - 값, True - 결측치 # Series함수 s1.isnull() # False - 결측치아닌값, True - 결측치 s2.isna() s1.notnull() # True - 결측치아닌값, False - 결측치 s1.notna() # True - 결측치아닌값, False - 결측치 # 결측치 개수 확인 s1.isnull().sum() # NA가 아닌 값의 개수
02 결측치 처리
- 제거
- dropna()
- 다른값으로 대체
- fillna()
- Pandas의 Series나 DataFrame의 원소를 변경하는 함수나 메소드 대부분은 원본 변경하지 X
- 원본 변경하려는 경우 inplace = True 매개변수 설정
s1.dropan() # null값 drop s1.dropna(inplace = True) # 원본 변경 s1.fillna(0) # Na를 0으로 대체 s1.fillna(s1.mean()) # 평균으로 대체 s1.fillna(s1.median()) # 중앙값으로 대체
'코린이 유치원 > Pandas' 카테고리의 다른 글
[Pandas] 03 DataFrame - 개념, 생성, 파일, 불러오기, 메소드 (0) 2022.06.20 [Pandas] 01 Series - 개념, 생성, 인덱싱, 슬라이싱 (0) 2022.06.20