일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 자바스크립트
- AWS
- Project
- tensorflow
- 다나와
- Scrum
- ECS
- DANAWA
- data analyze
- TypeScript
- analyzing
- Method
- javascript
- opencv
- 크롤링
- algorithm
- data
- visualizing
- adaptive life cycle
- python
- matplotlib
- pandas
- 프로젝트
- Crawling
- webcrawling
- Agile
- angular
- instance
- 애자일
- keras
Archives
- Today
- Total
LiJell's 성장기
16.python_NA_missing_duplicate_value 본문
반응형
Modified on Jan 10
# -- coding: utf-8 --
"""
Created on Tue Dec 28 14:56:05 2021
@author: hanju
"""
16. NA 결측치 처리, 중복값 제거 (significantly important)
- NA (결측치) 처리
- 숫자형 NA (float type), 문자형 NA
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
s1= Series([1,2,3,np.nan])
s1
# 0 1.0
# 1 2.0
# 2 3.0
# 3 NaN
# dtype: float64
s2 = Series(['a','b','c', np.nan])
s2
# 0 a
# 1 b
# 2 c
# 3 NaN
# dtype: object
1. NA 수정
s1.mean() #2.0 NAN 값 빼고 평균값 산출함.
s1.fillna(0) #fillna 사용한 치환 >> 제일 많이 활용함
'''
0 1.0
1 2.0
2 3.0
3 0.0
dtype: float64
'''
s2.replace(np.nan,'a')
'''
0 a
1 b
2 c
3 a
dtype: object
'''
s1.isnull()
'''
0 False
1 False
2 False
3 True
dtype: bool
'''
s1[s1.isnull()] = 0
'''
0 1.0
1 2.0
2 3.0
3 0.0
dtype: float64
'''
2. NA 로의 수정
s3 = Series(['서울','.','대전','.','대구','.','부산'])
s3.replace('.',np.nan)
3. NA를 이전 값/ 이후 값 수정
s3.fillna(method = 'ffill') # NA를 (바로직전 값)앞에 있는 값으로 치환
'''
0 서울
1 .
2 대전
3 .
4 대구
5 .
6 부산
dtype: object
'''
s3.ffill # NA를 (바로직전 값)앞에 있는 값으로 치환
'''
<bound method Series.ffill of 0 서울
1 .
2 대전
3 .
4 대구
5 .
6 부산
dtype: object>
'''
s4 = s3.replace('.',np.nan)
s4
'''
0 서울
1 NaN
2 대전
3 NaN
4 대구
5 NaN
6 부산
dtype: object
'''
s4.fillna(method = 'ffill')
s4.ffill()
'''
0 서울
1 서울
2 대전
3 대전
4 대구
5 대구
6 부산
dtype: object
'''
4. NA를 갖는 행, 열 제거
df3 = DataFrame(np.arange(1,17).reshape(4,4), columns=list('ABCD'))
df3
'''
A B C D
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
3 13 14 15 16
'''
df3.iloc[0,0] = np.nan
df3.iloc[1,[0,1]] = np.nan
df3.iloc[2,[0,1,2]] = np.nan
df3.iloc[3,:] = np.nan
df3
'''
A B C D
0 NaN 2.0 3.0 4.0
1 NaN NaN 7.0 8.0
2 NaN NaN NaN 12.0
3 NaN NaN NaN NaN
'''
df3.dropna() # NA 를 하나라도 포함된 행 제거
'''
Empty DataFrame
Columns: [A, B, C, D]
Index: []
'''
df3.dropna(how = 'any') # NA 를 하나라도 포함한 행 제거
'''
Empty DataFrame
Columns: [A, B, C, D]
Index: []
'''
df3.dropna(how = 'all') # @ 자주 씀/ 모든 값이 NA인 행을 제거 꼭 쓰기
'''
A B C D
0 NaN 2.0 3.0 4.0
1 NaN NaN 7.0 8.0
2 NaN NaN NaN 12.0
'''
df3.dropna(thresh = 2) # @ 자주 씀/ threshold( 한계점, 문지방) NA 아닌 값이 최소 2개 이상이면 제거하지 않음
'''
A B C D
0 NaN 2.0 3.0 4.0
1 NaN NaN 7.0 8.0
'''
df3.dropna(axis=1, how='any') # default axis = 0 이기 때문에 axis를 변경해서 사용 가
df3
df3.dropna(subset = ['C']) # (특정) C컬럼에 NA가 있는 행 제거 @ 실무 자주 씀
'''
A B C D
0 NaN 2.0 3.0 4.0
1 NaN NaN 7.0 8.0
'''
5. 중복값 처리
s5 = Series([1,1,2,3,4])
s5
'''
0 1
1 1
2 2
3 3
4 4
dtype: int6
'''
s5.unique() #유일한 값 확인
# array([1, 2, 3, 4], dtype=int64)
s5.duplicated() #중복된 값 확인 (boolean으로 반환)
'''
0 False
1 True
2 False
3 False
4 False
dtype: bool
'''
s5.drop_duplicates() # 중복 제거
'''
0 1
2 2
3 3
4 4
dtype: int64
'''
df4 = DataFrame({'A':[1,1,3,4], 'B':[10,10,30,40]})
df4
'''
A B
0 1 10
1 1 10
2 3 30
3 4 40
'''
df4.drop_duplicates()
'''
A B
0 1 10
2 3 30
3 4 40
'''
df5 = DataFrame({'A':[1,1,3,4], 'B':[10,10,30,40], 'C':[100,200,300,400]})
df5
'''
A B C
0 1 10 100
1 1 10 200
2 3 30 300
3 4 40 400
'''
df5.drop_duplicates() # 모든 컬럼의 값이 일치하는 행 제거
'''Out[236]:
A B C
0 1 10 100
1 1 10 200
2 3 30 300
3 4 40 400
'''
df5.drop_duplicates(subset=['A','B']) #(앞쪽) A, B 칼럼 값이 같으면 삭제
'''
A B C
0 1 10 100
2 3 30 300
3 4 40 400
'''
df5.drop_duplicates(subset=['A','B'], keep='last') # 뒷쪽 살릴 때
'''
A B C
1 1 10 200
2 3 30 300
3 4 40 400
'''
반응형
'Bigdata > 파이썬_Python' 카테고리의 다른 글
18.python_visualization (0) | 2022.01.10 |
---|---|
17.python_datetime_expression (0) | 2022.01.10 |
15.python_stack_unstack_pivot_table (0) | 2022.01.08 |
14.python.drop_shift_rename (0) | 2022.01.07 |
13.python_merge_concat_join (0) | 2022.01.06 |
Comments