Python에서 탐색적 데이터 분석이란 무엇입니까? 처음부터 배우기

게시 됨: 2021-03-04

탐색적 데이터 분석 또는 EDA는 간단히 말해 데이터 과학 프로젝트의 거의 70%를 구성합니다. EDA는 데이터에서 추론 통계를 얻기 위해 다양한 분석 도구를 사용하여 데이터를 탐색하는 프로세스입니다. 이러한 탐색은 일반 숫자를 보거나 다양한 유형의 그래프와 차트를 그려서 수행됩니다.

각 그래프 또는 차트는 동일한 데이터에 대해 서로 다른 스토리와 각도를 나타냅니다. 대부분의 데이터 분석 및 정리 부분에서 Pandas가 가장 많이 사용되는 도구입니다. 시각화 및 플로팅 그래프/차트를 위해 Matplotlib, Seaborn 및 Plotly와 같은 플로팅 라이브러리가 사용됩니다.

EDA는 데이터를 자백하게 하기 때문에 반드시 수행해야 합니다. 매우 우수한 EDA를 수행하는 데이터 과학자는 데이터에 대해 많이 알고 있으므로 구축할 모델은 우수한 EDA를 수행하지 않는 데이터 과학자보다 자동으로 더 우수합니다.

이 튜토리얼을 마치면 다음을 알게 될 것입니다.

  • 데이터의 기본 개요 확인
  • 데이터의 기술 통계 확인
  • 열 이름 및 데이터 유형 조작
  • 누락된 값 및 중복 행 처리
  • 이변량 분석

목차

데이터의 기본 개요

이 튜토리얼 에서는 Kaggle에서 다운로드 할 수 있는 Car Dataset을 사용할 것 입니다. 거의 모든 데이터 세트의 첫 번째 단계는 데이터 세트를 가져와서 모양, 열, 열 유형, 상위 5개 행 등의 기본 개요를 확인하는 것입니다. 이 단계에서는 작업할 데이터에 대한 간략한 요지를 제공합니다. 파이썬에서 이것을 하는 방법을 봅시다.

# 필요한 라이브러리 가져오기
pandas pd가져오기
numpy np가져오기
씨본sns 가져오기 #visualization
matplotlib.pyplot plt가져오기 #visualization
%matplotlib 인라인
sns.set(color_codes= True )

데이터 헤드 및 테일

데이터 = pd.read_csv( "경로/dataset.csv" )
# 데이터 프레임의 상위 5개 행을 확인합니다.
data.head()

head 함수는 기본적으로 데이터 프레임의 상위 5개 인덱스를 인쇄합니다. 또한 해당 값을 헤드로 우회하는 데 필요한 상위 인덱스 수를 지정할 수도 있습니다. 헤드를 즉시 인쇄하면 어떤 유형의 데이터가 있는지, 어떤 유형의 기능이 있으며 어떤 값이 포함되어 있는지 빠르게 확인할 수 있습니다. 물론 이것이 데이터에 대한 전체 스토리를 말해주지는 않지만 데이터를 빠르게 엿볼 수 있습니다. tail 함수를 사용하여 데이터 프레임의 하단 부분을 유사하게 인쇄할 수 있습니다.

# 데이터프레임의 마지막 10행을 출력
data.tail( 10 )

여기서 주목해야 할 한 가지는 함수 head와 tail이 모두 우리에게 상단 또는 하단 인덱스를 제공한다는 것입니다. 그러나 맨 위 또는 맨 아래 행이 항상 데이터의 좋은 미리보기가 되는 것은 아닙니다. 따라서 sample() 함수를 사용하여 데이터 세트에서 무작위로 샘플링된 행 수를 인쇄할 수도 있습니다.

# 5개의 임의의 행을 인쇄합니다.
데이터 샘플( 5 )

기술 통계

다음으로 데이터 세트의 기술 통계를 확인하겠습니다. 기술 통계는 데이터 세트를 "설명하는" 모든 것으로 구성됩니다. 데이터 프레임의 모양, 모든 열이 있는지, 모든 숫자 및 범주 기능이 있는지 확인합니다. 또한 이 모든 작업을 간단한 함수로 수행하는 방법도 살펴보겠습니다.

모양

# 데이터 프레임 형태 확인(mxn)
# m=행 수
# n=열 수
데이터.모양

보시다시피 이 데이터 프레임에는 11914개의 행과 16개의 열이 있습니다.

# 컬럼명을 출력
data.columns

데이터 프레임 정보

# 열 데이터 유형과 누락되지 않은 값의 수를 인쇄합니다.
data.info()

보시다시피 info() 함수는 모든 열, 해당 열에 있는 null이 아닌 값 또는 누락되지 않은 값의 수와 마지막으로 해당 열의 데이터 유형을 제공합니다. 이것은 모든 기능이 숫자이고 모든 기능이 범주형/텍스트 기반인지 확인하는 좋은 빠른 방법입니다. 또한 이제 모든 열에 누락된 값이 있는 정보가 있습니다. 결측값으로 작업하는 방법은 나중에 살펴보겠습니다.

열 이름 및 데이터 유형 조작

각 열을 주의 깊게 확인하고 조작하는 것은 EDA에서 매우 중요합니다. 열/기능에 포함된 모든 유형의 콘텐츠와 panda가 해당 데이터 유형을 읽는 내용을 확인해야 합니다. 숫자 데이터 유형은 대부분 int64 또는 float64입니다. 텍스트 기반 또는 범주형 기능에는 '객체' 데이터 유형이 할당됩니다.

날짜-시간 기반 기능이 할당됩니다. Pandas가 기능의 데이터 유형을 이해하지 못하는 경우가 있습니다. 그런 경우에는 '객체' 데이터 유형을 느리게 할당합니다. read_csv로 데이터를 읽는 동안 열 데이터 유형을 명시적으로 지정할 수 있습니다.

범주형 및 숫자형 열 선택

# 모든 범주 및 숫자 열을 별도의 목록에 추가합니다.
범주형 = data.select_dtypes( '객체' ).columns
숫자 = data.select_dtypes( '숫자' ).columns

여기서 우리가 '숫자'로 전달한 유형은 모든 종류의 숫자가 있는 데이터 유형이 있는 모든 열을 선택합니다(int64 또는 float64).

열 이름 바꾸기

# 열 이름 바꾸기
data = data.rename(columns={ "엔진 HP" : "HP" ,
"엔진 실린더" : "실린더" ,
"전송 유형" : "전송" ,
"Driven_Wheels" : "드라이브 모드" ,
"고속도로 MPG" : "MPG-H" ,
"MSRP" : "가격" })
데이터 헤드( 5 )

이름 바꾸기 기능은 이름을 바꿀 열 이름과 새 이름이 있는 사전을 가져옵니다.

누락된 값 및 중복 행 처리

누락된 값은 실제 데이터 세트에서 가장 일반적인 문제/불일치 중 하나입니다. 결측값을 처리하는 방법은 여러 가지가 있으므로 그 자체로 방대한 주제입니다. 일부 방법은 더 일반적인 방법이고 일부는 처리할 데이터 세트에 더 구체적입니다.

결측값 확인하기

# 누락된 값 확인
data.isnull().sum()

이것은 모든 열에서 누락된 값의 수를 제공합니다. 누락된 값의 백분율도 확인할 수 있습니다.

# 결측값의 백분율
data.isnull().mean()* 100

누락된 값이 있는 열이 많은 경우 백분율을 확인하는 것이 유용할 수 있습니다. 이러한 경우 결측값이 많은 열(예: >60% 결측값)은 그냥 삭제할 수 있습니다.

결측값 대입

#숫자 열의 결측값을 평균으로 대입
데이터[숫자] = 데이터[숫자].fillna(데이터[숫자].mean().iloc[ 0 ])

#모드별 범주형 열의 결측값 대입
데이터[카테고리] = 데이터[카테고리].fillna(데이터[카테고리].mode().iloc[ 0 ])

여기서 우리는 단순히 숫자 열의 결측값을 각각의 수단으로, 범주형 열의 결측값을 모드로 추정합니다. 그리고 우리가 볼 수 있듯이 이제 결측값이 없습니다.

이것은 값을 대치하는 가장 원시적인 방법이며 보간, KNN 등과 같이 보다 정교한 방법이 개발되는 실제 사례에서는 작동하지 않습니다.

중복 행 처리

# 중복 행 삭제
data.drop_duplicates(inplace= True )

이것은 중복 행을 삭제합니다.

확인: Python 프로젝트 아이디어 및 주제

이변량 분석

이제 이변량 분석을 수행하여 더 많은 통찰력을 얻는 방법을 살펴보겠습니다. 이변량은 2개의 변수 또는 특성으로 구성된 분석을 의미합니다. 다양한 유형의 기능에 사용할 수 있는 다양한 유형의 플롯이 있습니다.

숫자의 경우 – 숫자

  1. 산포도
  2. 선 플롯
  3. 상관 관계에 대한 히트맵

범주형-숫자용

  1. 막대 차트
  2. 바이올린 플롯
  3. 떼 플롯

범주형-범주형의 경우

  1. 막대 차트
  2. 포인트 플롯

상관 관계에 대한 히트맵

# 변수 간의 상관관계를 확인합니다.
plt.Figure(figsize=( 15 , 10 ))
c= data.corr()
sns.heatmap(c,cmap= “BrBG” ,annot= True )

막대 그림

sns.barplot(data[ '엔진 연료 유형' ], data[ 'HP' ])

세계 최고의 대학에서 데이터 과학 인증받으십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 통해 경력을 빠르게 추적하십시오.

결론

우리가 보았듯이 데이터 세트를 탐색하는 동안 다루어야 할 많은 단계가 있습니다. 우리는 이 튜토리얼에서 몇 가지 측면만을 다루었지만 이것은 좋은 EDA에 대한 기본적인 지식 이상의 것을 제공할 것입니다.

Python, 데이터 과학에 관한 모든 것에 대해 배우고 싶다면 일하는 전문가를 위해 만들어졌으며 10개 이상의 사례 연구 및 프로젝트, 실용적인 실습 워크샵, 업계 멘토링을 제공하는 IIIT-B & upGrad의 데이터 과학 PG 디플로마를 확인하십시오. 전문가, 업계 멘토와의 1:1 학습, 최고의 기업과의 400시간 이상의 학습 및 직업 지원.

탐색적 데이터 분석의 단계는 무엇입니까?

탐색적 데이터 분석을 수행하기 위해 수행해야 하는 주요 단계는 다음과 같습니다.

변수와 데이터 유형을 식별해야 합니다.
기본 메트릭 분석
일변량 비그래픽 분석
일변량 그래픽 분석
이변량 데이터 분석
가변적인 변환
결측값 처리
이상치 처리
상관관계 분석
차원 축소

탐색적 데이터 분석의 목적은 무엇입니까?

EDA의 주요 목표는 가정을 하기 전에 데이터 분석을 지원하는 것입니다. 이는 데이터 패턴에 대한 더 나은 이해, 이상치 또는 비정상적인 이벤트의 감지, 변수 간의 흥미로운 관계의 발견뿐만 아니라 명백한 오류의 감지에 도움이 될 수 있습니다.

데이터 과학자는 탐색적 분석을 사용하여 생성한 결과가 정확하고 대상 비즈니스 결과 및 목표에 적절함을 보장할 수 있습니다. EDA는 또한 이해 관계자가 적절한 질문에 답하고 있는지 확인함으로써 이해 관계자를 지원합니다. 표준 편차, 범주형 데이터 및 신뢰 구간은 모두 EDA로 답할 수 있습니다. EDA 완료 및 통찰력 추출 후, 그 기능은 기계 학습을 포함한 고급 데이터 분석 또는 모델링에 적용할 수 있습니다.

탐색적 데이터 분석의 다른 유형은 무엇입니까?

EDA 기술에는 그래픽 및 정량적(비그래픽)의 두 가지 종류가 있습니다. 반면에 정량적 접근 방식은 요약 통계의 편집이 필요한 반면 그래픽 방식은 도식적 또는 시각적 방식으로 데이터를 수집해야 합니다. 단변량 및 다변량 접근 방식은 이러한 두 가지 유형의 방법론의 하위 집합입니다.

관계를 조사하기 위해 단변수 접근 방식은 한 번에 하나의 변수(데이터 열)를 보는 반면 다변수 방법은 한 번에 두 개 이상의 변수를 봅니다. 단변량 및 다변량 그래픽 및 비그래픽은 EDA의 네 가지 형태입니다. 정량적 절차는 더 객관적인 반면 그림 방법은 더 주관적입니다.