Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 탐색적 데이터 분석

<시간/>

데이터 분석을 위해서는 탐색적 데이터 분석(EDA)이 첫 번째 단계여야 합니다. 탐색적 데이터 분석은 다음을 수행하는 데 도움이 됩니다.

  • 데이터 세트에 대한 통찰력을 제공합니다.

  • 기본 구조를 이해합니다.

  • 중요한 매개변수와 이들 사이의 관계를 추출합니다.

  • 기본 가정을 테스트합니다.

샘플 데이터 세트를 사용한 EDA 이해

파이썬을 사용하여 EDA를 이해하기 위해 웹사이트나 로컬 디스크에서 샘플 데이터를 직접 가져올 수 있습니다. 저는 Wine Quality 데이터 세트의 빨간색 변형에 대해 공개적으로 사용할 수 있는 UCI Machine Learning Repository에서 샘플 데이터를 가져오고 EDA를 사용하여 데이터 세트에 대한 많은 통찰력을 얻으려고 합니다.

판다를 pddf =pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv")df.head()로 가져오기 

jupyter 노트북에서 위의 스크립트를 실행하면 아래와 같은 결과가 나타납니다 -

Python의 탐색적 데이터 분석

시작하려면

  • 먼저 케이스에 필요한 라이브러리인 pandas를 가져옵니다.

  • pandas 라이브러리의 read_csv() 함수를 이용하여 csv 파일을 읽고 각 데이터는 구분자 “;”로 구분합니다. 주어진 데이터 세트에서.

  • pandas 라이브러리에서 제공하는 ".head" 함수를 사용하여 데이터 세트에서 처음 5개의 관측값을 반환합니다. pandas 라이브러리의 ".tail()" 함수를 사용하여 마찬가지로 마지막 5개의 관찰을 얻을 수 있습니다.

아래와 같이 ".shape"를 사용하여 데이터 세트에서 행과 열의 총 수를 얻을 수 있습니다. -

df.shape

Python의 탐색적 데이터 분석

info() 함수를 사용하여 포함된 모든 열, 유형 및 열에 값이 포함되어 있는지 여부를 찾으려면.

df.info()

Python의 탐색적 데이터 분석

위의 데이터를 관찰함으로써 우리는 결론을 내릴 수 있습니다 -

  • 데이터에 부동 정수 값만 포함됩니다.

  • 모든 열 변수는 null이 아닙니다(비어 있지 않거나 누락된 값).

pandas가 제공하는 또 다른 유용한 함수는 데이터의 개수, 평균, 표준 편차, 최소값 및 최대값, 수량을 제공하는 describe()입니다.

df.describe()

Python의 탐색적 데이터 분석

  • 위의 데이터에서 각 열의 평균값이 인덱스 열의 중앙값(50%)보다 작다는 결론을 내릴 수 있습니다.

  • "잔여 설탕", "유리 이산화황" 및 "총 이산화황" 예측 변수의 75%와 최대 값 사이에는 엄청난 차이가 있습니다.

  • 2개 이상의 관찰은 데이터 세트에 극단적인 값 편차가 있음을 나타냅니다.

종속 변수에서 얻을 수 있는 몇 가지 주요 통찰력은 다음과 같습니다. -

df.quality.unique()

Python의 탐색적 데이터 분석

  • '품질' 점수 척도에서 1은 맨 아래에 있습니다. 가난하고 10이 맨 위에 옵니다. 최고입니다.

  • 위로부터 우리는 관찰 점수 1(나쁨), 2 및 9, 10(최고) 점수 중 어느 것도 결론을 내릴 수 없습니다. 모든 점수는 3에서 8 사이입니다.

df.quality.value_counts()

Python의 탐색적 데이터 분석

  • 위의 처리된 데이터는 각 품질 점수에 대한 투표 수에 대한 정보를 내림차순으로 제공합니다.

  • 대부분의 품질은 5-7 범위입니다.

  • 3 및 6 범주에서 가장 적은 관찰이 관찰되었습니다.

데이터 시각화

결측값 확인하기 -

seaborn 라이브러리의 도움으로 화이트 위스키 csv 데이터 세트에서 누락된 값을 확인할 수 있습니다. 아래는 그것을 완성하는 코드입니다 -

 pdimport numpy로 pdimport numpy 가져오기 snsimport matplotlib.pyplot으로 plt%matplotlib inlinesns.set()df =pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning- 데이터베이스/와인 품질/winequality-white.csv", sep=";")sns.heatmap(df.isnull(), cbar=False, yticklabels=False, cmap='viridis')

출력

Python의 탐색적 데이터 분석

  • 위에서 보면 데이터 세트에 누락된 값이 없음을 알 수 있습니다. 만약 있다면 보라색 바탕에 다른 색 음영으로 표현되는 그림을 보았을 것입니다.

  • 누락된 값이 있는 다른 데이터세트를 사용하면 차이를 알 수 있습니다.

상관관계를 확인하려면

데이터 세트의 다른 값 사이의 상관 관계를 확인하려면 기존 데이터 세트에 아래 코드를 삽입하십시오 -

plt.Figure(figsize=(8,4))sns.heatmap(df.corr(),cmap='녹색',annot=False)

출력

Python의 탐색적 데이터 분석

  • 위에서 양의 상관관계는 어두운 음영으로 표시되고 음의 상관관계는 밝은 음영으로 표시됩니다.

  • not=True의 값을 변경하면 출력에 그리드 셀에서 기능이 서로 상관되는 값이 표시됩니다.

not=True로 다른 상관 행렬을 생성할 수 있습니다. 기존 코드에 아래 코드 줄을 추가하여 코드를 수정하십시오 -

k =12cols =df.corr().nlargest(k, 'quality')['quality'].indexcm =df[cols].corr()plt.Figure(figsize=(8,6))sns .heatmap(cm, annot=True, cmap ='비리디스')

출력

Python의 탐색적 데이터 분석

  • 위에서 우리는 밀도와 잔류 설탕 사이에 강한 양의 상관 관계가 있음을 알 수 있습니다. 그러나 밀도와 알코올의 강한 음의 상관관계가 있습니다.

  • 또한 유리 이산화황과 품질 사이에는 상관 관계가 없습니다.