탐색적 데이터 분석(EDA)은 데이터 과학 프로젝트에서 필수적인 단계로, 데이터를 이해하고 패턴을 발견하며 잠재적 문제를 식별하는 데 도움이 됩니다. 이 글에서는 두 개의 인기 있는 Python 라이브러리인 Pandas와 Matplotlib를 사용하여 EDA를 수행하는 방법을 살펴보겠습니다. Pandas는 데이터 조작 및 분석을 위한 강력한 라이브러리이며, Matplotlib는 데이터 시각화를 위한 다재다능한 라이브러리입니다. 데이터를 pandas DataFrame에 로드하는 기본, pandas 함수를 사용하여 데이터를 탐색하고, 데이터를 정제하며, 마지막으로 Matplotlib를 사용하여 데이터를 시각화하는 방법에 대해 다룰 것입니다. 이 글을 마치면 Pandas와 Matplotlib를 사용하여 Python에서 EDA를 수행하는 방법에 대한 탄탄한 이해를 갖게 될 것입니다.
라이브러리 및 데이터 가져오기
라이브러리 가져오기
Python 코드에서 pandas와 Matplotlib 라이브러리를 사용하려면 먼저 이들을 가져왴야 합니다. 이를 위해 import
문을 사용하여 라이브러리 이름을 지정하면 됩니다.
python import pandas as pd
import matplotlib.pyplot as plt
이 예에서는 데이터 과학 커뮤니티에서 흔히 사용되는 관례인 ‘pd’로 pandas를 가져오고, ‘plt’로 matplotlib.pyplot을 가져오고 있습니다. 이렇게 라이브러리를 가져옴으로써 데이터와 시각화를 다룰 수 있는 함수 및 메서드를 사용할 수 있습니다.
데이터 로딩
필요한 라이브러리를 가져온 후에는 데이터를 pandas DataFrame에 로드할 수 있습니다. Pandas는 CSV, Excel, JSON 등 다양한 파일 형식의 데이터를 로드하는 여러 가지 방법을 제공합니다. 가장 일반적인 방법은 read_csv
로, CSV 파일의 데이터를 읽고 DataFrame을 반환합니다.
python# Load data into a pandas DataFrame
data = pd.read_csv('path/to/data.csv')
이 예제에서는 ‘path/to/data.csv’에 위치한 CSV 파일의 데이터를 로드하고 ‘data’라는 변수에 저장합니다. ‘path/to/data.csv’를 데이터 파일의 실제 경로로 바꿀 수 있습니다.
pandas DataFrame에 데이터를 로드함으로써 pandas의 함수와 메서드를 사용하여 데이터를 쉽게 조작하고 분석할 수 있습니다. DataFrame은 2차원 테이블 형식의 데이터 구조로, 데이터를 구조화되고 체계적인 방식으로 작업할 수 있게 해줍니다. 데이터 선택, 필터링, 그룹화, 집계 및 시각화를 위한 기능을 제공합니다.
데이터 탐색
head()
및 tail()
head()
및 tail()
함수는 각각 데이터의 처음 몇 개와 마지막 몇 개의 행을 보여주는 데 사용됩니다. 기본적으로 이 함수들은 데이터의 처음/마지막 다섯 개 행을 표시하지만, 인수로 다른 수의 행을 지정할 수 있습니다.
python# View the first 5 rows of the data
print(data.head())
# 데이터의 마지막 10행 보기
print(data.tail(10))
info()
info()
함수는 DataFrame에 대한 정보를 제공하며, 행과 열의 수, 각 열의 데이터 유형 및 비어 있지 않은 값의 수를 포함합니다. 이 함수는 누락된 값을 식별하고 각 열에 적절한 데이터 유형을 결정하는 데 유용합니다.
python# Get information about the data
print(data.info())
describe()
describe()
함수는 DataFrame의 수치형 컬럼에 대한 요약 통계를 제공합니다. 이 함수는 개수, 평균, 표준 편차, 최소값, 최대값 및 사분위수를 포함합니다. 데이터 분포에 대한 빠른 개요를 얻는 데 유용합니다.
python# Get summary statistics for the data
print(data.describe())
value_counts()
value_counts()
함수는 컬럼 내 각 고유 값의 발생 횟수를 계산하는 데 사용됩니다. 이 함수는 데이터 내 특정 값의 빈도를 식별하는 데 유용합니다.
python# Count the number of unique values in a column
print(data['column_name'].value_counts())
이는 데이터를 탐색하는 데 사용할 수 있는 판다 함수의 몇 가지 예일 뿐입니다. 누락된 값을 확인하는 isnull()
, 특정 컬럼으로 데이터를 그룹화하는 groupby()
, 컬럼 간 상관 계수를 계산하는 corr()
등 특정 데이터 탐색 요구 사항에 따라 다른 많은 함수를 사용할 수 있습니다.
데이터 정제
isnull()
isnull()
함수는 DataFrame에서 누락된 값 또는 null 값을 확인하는 데 사용됩니다. 이 함수는 원본과 동일한 모양의 DataFrame을 반환하며, 데이터가 누락된 위치에 True 값을, 데이터가 존재하는 위치에 False 값을 반환합니다. sum()
함수를 사용하여 각 컬럼에서 누락된 값의 수를 계산할 수 있습니다.
python# Check for missing values
print(data.isnull().sum())
dropna()
dropna()
함수는 누락되거나 널 값을 가진 행이나 열을 제거하는 데 사용됩니다. 기본적으로 이 함수는 하나 이상의 누락 값이 포함된 모든 행을 제거합니다. subset
인수를 사용하여 누락 값을 확인할 열을 지정하고, how
인수를 사용하여 모든 값이 누락된 행만 제거할지 또는 누락된 값이 하나라도 있는 행을 제거할지 지정할 수 있습니다.
python# Drop rows with missing values
data = data.dropna()
drop_duplicates()
drop_duplicates()
함수는 DataFrame에서 중복된 행을 제거하는 데 사용됩니다. 기본적으로 이 함수는 모든 열에서 동일한 값을 가진 모든 행을 제거합니다. subset
인수를 사용하여 중복을 확인할 열을 지정할 수 있습니다.
python# Drop duplicate rows
data = data.drop_duplicates()
replace()
replace()
함수는 열의 값을 새 값으로 대체하는 데 사용됩니다. 대체할 이전 값과 그 값을 대체할 새 값을 지정할 수 있습니다. 이 함수는 맞춤법 오류나 일관되지 않은 서식과 같은 데이터 품질 문제를 처리하는 데 유용합니다.
python# Replace values in a column
data['column_name'] = data['column_name'].replace('old_value', 'new_value')
이는 pandas 함수를 사용하여 데이터를 정리하는 몇 가지 예일 뿐입니다. 특정 데이터 정리 요구 사항에 따라 사용할 수 있는 많은 다른 함수들이 있습니다. 예를 들어 fillna()
는 누락된 값을 특정 값이나 방법으로 채우는 데 사용되고, astype()
는 열의 데이터 유형을 변환하는 데 사용되며, clip()
은 이상치를 잘라내는 데 사용됩니다.
데이터 정제는 분석을 위한 데이터 준비에서 중요한 역할을 합니다. 이 과정을 자동화하면 시간을 절약하고 데이터 품질을 보장할 수 있습니다. 앞서 언급한 판다스 함수 외에도, 데이터 정제 워크플로를 간소화하기 위한 자동화 기술을 적용할 수 있습니다. 예를 들어, 누락된 값을 처리하고, 중복을 제거하며, 여러 데이터셋에 걸쳐 값을 교체하는 재사용 가능한 함수나 파이프라인을 만들 수 있습니다. 또한, 누락된 값을 지능적으로 채우는 추가 기술인 추정이나 일관되지 않은 서식을 식별하고 수정하는 정규 표현식을 활용할 수 있습니다. 판다스 함수의 힘과 자동화 전략을 결합하여 데이터를 효율적으로 정제하고 표준화함으로써 탐색적 데이터 분석(EDA)의 신뢰성과 정확성을 향상시킬 수 있습니다.
데이터 시각화
데이터 시각화는 데이터 과학의 핵심 구성 요소로서, 빠르고 쉽게 데이터로부터 인사이트를 얻을 수 있게 해줍니다. Matplotlib은 산점도, 선 그래프, 막대 차트, 히스토그램, 상자 플롯 등 다양한 데이터 시각화를 생성하는 데 사용되는 인기 있는 Python 라이브러리입니다.
다음은 Matplotlib을 사용하여 이러한 유형의 시각화를 생성하는 몇 가지 예입니다:
산점도
A scatter plot is used to visualize the relationship between two continuous variables. You can create a scatter plot in Matplotlib using the scatter()
function.
python# Create a scatter plot
plt.scatter(data['column1'], data['column2']) plt.xlabel('Column 1') plt.ylabel('Column 2') plt.show()
이 예시에서는 column1
을 x축에, column2
를 y축에 표시하는 산점도를 생성하고 있습니다. 또한 xlabel()
및 ylabel()
함수를 사용하여 x축과 y축에 레이블을 추가하고 있습니다.
히스토그램
A histogram is used to visualize the distribution of a single continuous variable. You can create a histogram in Matplotlib using the hist()
function.
python# Create a histogram
plt.hist(data['column'], bins=10) plt.xlabel('Column') plt.ylabel('Frequency') plt.show()
이 예시에서는 column
변수의 히스토그램을 10개의 구간으로 생성하고 있습니다. 또한 xlabel()
과 ylabel()
함수를 사용하여 x축과 y축에 레이블을 추가하고 있습니다.
상자 플롯
A box plot is used to visualize the distribution of a single continuous variable and to identify outliers. You can create a box plot in Matplotlib using the boxplot()
function.
python# Create a box plot
plt.boxplot(data['column']) plt.ylabel('Column') plt.show()
이 예시에서는 column
변수의 상자 플롯을 생성하고 있습니다. 또한 ylabel()
함수를 사용하여 y축에 레이블을 추가하고 있습니다.
이는 Matplotlib을 사용한 데이터 시각화로 수행할 수 있는 몇 가지 예시일 뿐입니다. 프로젝트의 특정 요구 사항에 따라 사용할 수 있는 다양한 다른 함수와 기술이 있습니다.
결론
탐색적 데이터 분석(EDA)은 데이터 과학 프로젝트의 핵심적인 단계이며, Python은 EDA를 효과적으로 수행하기 위한 강력한 도구를 제공합니다. 이 기사에서는 Pandas와 Matplotlib 두 가지 인기 있는 Python 라이브러리를 사용하여 데이터를 로드, 탐색, 정리 및 시각화하는 방법을 배웠습니다. Pandas는 데이터를 조작하고 분석하기 위한 유연하고 효율적인 방법을 제공하며, Matplotlib은 시각화를 생성하기 위한 다양한 옵션을 제공합니다. 이 두 라이브러리를 활용하면 데이터에서 통찰력을 빠르게 얻을 수 있습니다. 이 기사에서 배운 기술과 기술을 사용하여 자신의 데이터 세트에서 EDA를 수행하고 데이터 기반 의사 결정을 촉진하는 데 도움이 되는 가치 있는 통찰력을 발견할 수 있습니다.
Source:
https://dzone.com/articles/how-to-use-pandas-and-matplotlib-to-perform-explor