인텔 AI 교육 - Module-17(데이터 처리)
(해당 자료들은 인텔 AI for Future Workforce내용을 학습하고 가공한 내용입니다.)
< Module - 17 >
#데이터 가져오기 및 처리
1. 데이터 가져오기
(1) urllib.request를 통해 가져오기
urllib.request를 통해 URL을 열고 데이터를 가져올 수 있다.
import urllib.request
# urllib.request.urlretrieve("해당 URL주소", "파일 저장명과 위치")
>>> urllib.request.urlretrieve("https://archive.ics.uci.edu/ml/machine-learning-databases/tae", "./[Dataset]_Module_17_iris.data")
(2) pd.read_csv를 통해 파일 불러오기
(1)번 방법을 통해 데이터를 파일로 가져오거나 이미 파일이 있다면 사용할 수 있다.
# df = pd.read_csv("파일명")
# 꼭 df로 받아와야 하는건 아니지만 보편적으로 df로 받아와서 사용
>>> df = pd.read_csv("./[Dataset]_Module_17_iris.data")
2. 오류 데이터 처리
(1) 비정상 값
상식적으로 존재하기 어려운 데이터들이 있을 때 사용하기 좋은 방법이다. 수학 점수를 예시로 학생들은 0점에서 100점 사이의 점수를 받아야 하는데, 점수가 음수이거나 100을 넘어서는 수가 있다면 비정상이라고 볼 수 있다. 이때는 이렇게 정리할 수 있다.
>>> df2 = df[df['Math Score'] >= 0]
>>> df3 = df2[df2['Math Score'] <=100]
최종적으로 df3에는 수학점수가 0이상, 100이하인 값들만 있게 된다.
(2) 누락 데이터
데이터를 수집하는 사람의 부주의나 데이터 설문조사가 불완전한 양식으로 인해, 또는 실제로 값이 없는 경우 누락된 데이터가 나타난다. 이때 처리할 수 있는 방법으로는
- 누락 데이터가 있는 행을 삭제한다.
- 누락 데이터에 0으로 일괄 처리한다.
- 누락 데이터에 평균을 넣는다.
등이 있다.
#누락된 행 삭제
>>> df2 = df.dropna(axis=0)
#누락된 값에 0 대입
>>> df = df.fillna()
#누락된 값에 평균 대입
>>> df['Mathematics score'] = df['Mathematics score'].fillna(df['Mathematics score'].mean())
#데이터 시각화
1. 박스플롯
전체 데이터로부터 얻어진 다섯 가지 요약 수치를 사용해서 그린다.
>>> plt.boxplot(df['petal_length'],labels=['petal_length'], showfliers=True,)
>>> plt.show()
'snowfliers'로 이상값을 표시할지 결정할 수 있다.
- 최소값
- 제 1사분위 수(Q1)
- 제 2사분위 수(Q2) - 중위수라고도 함
- 제 3사분위 수(Q3)
- 최대값
여기서 사분위 수는 데이터를 4등분한 것으로 전체 데이터의 25% 비율을 나타낸다. 위, 아래에 있는 점은 이상값으로 평균과 멀리 떨어진 점을 표시한다.
2. 히스토그램
표로 되어 있는 도수 분포를 그림으로 나타낸 것이다.
>>> plt.hist((df['sepal_length']), bins=8, range=(4, 8))
>>> plt.title('sepal_length')
'bins'는 막대를 몇개로 표현할지, 'range'는 x축의 범위를 지정한다.
3. 산점도
좌표계를 이용해 좌표상의 점들을 표시하여 두 개 변수 간의 관계를 나타내는 방법이다.
>>> plt.scatter( df['sepal_width'], df['sepal_length'], c='slategrey')
>>> plt.xlabel('sepal width')
>>> plt.ylabel('sepal length')
>>> plt.show()
'c'를 통해 점들의 색을 지정해줄 수 있다.
참고자료