파이썬을 활용한 실용적인 데이터 탐색 및 검증

데이터 탐색 등 데이터를 다룰 때, 체계적인 탐색 및 검증 프로세스는 인사이트를 발굴하고 데이터 무결성을 보장하는 데 매우 중요합니다. 이번 포스팅에서는 Pandas와 Seaborn을 사용하여 도서 데이터를 탐색, 검증 및 요약해 보겠습니다.

1) 데이터 유형 검토, 2) 범주형 및 수치형 데이터 처리, 3) 시각화 방법을 알아보겠습니다. 아래 데이터를 다운로드하고 다음 코드를 사용하여 Python 환경에 로드하면서 따라할 수 있습니다.

import pandas as pd

books = pd.read_csv('D:/clean_books.csv')


1단계: 초기 탐색


첫 번째 몇 행 보기

.head()를 사용하여 데이터 구조를 빠르게 살펴보겠습니다.

books.head()


데이터 세트 개요

.info()를 사용하여 열 이름, null이 아닌 데이터 개수, 데이터 유형 등 데이터 세트에 대한 필수적인 기본 세부 정보를 확인합니다.

books.info()
----------------------------------------------------------

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 350 entries, 0 to 349
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   name    350 non-null    object 
 1   author  350 non-null    object 
 2   rating  350 non-null    float64
 3   year    350 non-null    int64  
 4   genre   350 non-null    object 
dtypes: float64(1), int64(1), object(3)
memory usage: 13.8+ KB


데이터 유형 확인

모든 열의 데이터 유형을 확인합니다.

books.dtypes
----------------------------------------------------------------
name       object
author     object
rating    float64
year        int64
genre      object
dtype: object


2단계: 상세 탐색


범주형 열

그룹 간 통계량 사용하여 범주형 데이터를 분석합니다. 예를 들어, 각 장르의 평균 rating과 year를 계산합니다.

books.groupby("genre")[["rating", "year"]].mean()


수치 요약

.describe()를 사용하여 숫자 열에 대한 요약 통계를 확인합니다.

books.describe()


데이터 유형 업데이트

‘year’ 열의 데이터 유형이 올바른지 확인합니다.

books["year"] = books["year"].astype(int)
books.dtypes
----------------------------------------------------------------------

name       object
author     object
rating    float64
year        int32
genre      object
dtype: object


3단계: 수치 데이터 시각화


등급에 대한 히스토그램

‘rating’ 분포를 시각화 해보겠습니다.

import seaborn as sns
import matplotlib.pyplot as plt

sns.histplot(books, x = "rating")
plt.show()


연도 및 장르별 상자 그림

출판 연도 분포를 시각화 해보겠습니다.

sns.boxplot(data=books, x="year")
plt.show()

장르별 출판 연도를 비교해보겠습니다.

sns.boxplot(data=books, x="year", y="genre")
plt.show()


4단계: 데이터 검증


데이터 유형 검증

열 데이터 유형을 다시 확인합니다.

books.info()
books.dtypes


범주형 데이터 검증

유효한 장르를 확인하고 그에 따라 행을 조건검색합니다.

valid_genres = ["Fiction", "Non Fiction"]
books[books["genre"].isin(valid_genres)].head()

잘못된 장르가 있는 행을 식별합니다.

~books["genre"].isin(valid_genres)
---------------------------------------------------------------

0      False
1      False
2      False
3      False
4       True
       ...  
345    False
346    False
347    False
348    False
349     True
Name: genre, Length: 350, dtype: bool


수치 데이터 검증

숫자형 열을 검사합니다.

books.select_dtypes("number").head()

출판년도 범위를 확인합니다.

books["year"].min(), books["year"].max()
------------------------------------------------------
(2009, 2019)


5단계: 데이터 요약


집계

그룹화되지 않은 데이터에 대한 집계 통계량을 생성합니다.

books[["rating", "year"]].agg(["mean", "std"])


열별로 특정 집계 적용

books.agg({"rating": ["mean", "std"], "year": ["median"]})


그룹화된 집계

그룹화된 데이터에 대해 명명된 요약 열을 생성합니다.

books.groupby("genre").agg(
mean_rating=("rating", "mean"),
std_rating=("rating", "std"),
median_year=("year", "median")
)


범주형 데이터 시각화

막대 그래프를 사용하여 장르별 평점을 비교합니다.

sns.barplot(data=books, x="genre", y="rating", palette="viridis")
plt.show()


결론

탐색, 검증, 시각화 기술을 결합하면 데이터 품질을 보장하는 동시에 귀중한 인사이트를 얻을 수 있습니다. 이러한 방법은 효과적인 데이터 분석 및 모델링을 위한 탄탄한 기반을 마련합니다. 감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다