데이터 분석 및 시각화

0taetae·2024년 12월 24일
post-thumbnail

📙Kaggle이란?

데이터 과학자와 머신러닝 실무자들의 온라인 커뮤니티

  • Datasets : 다양한 분야의 실제 데이터셋을 제공
  • Competitions: 기업이나 연구 기관에서 제시한 문제를 해결하는 대회를 개최
  • Code(Notebooks): 온라인에서 직접 코드를 작성하고 실행할 수 있는 환경을 제공
  • Disccussions: 전 세계의 데이터 과학자들과 지식을 공유하고 협력할 수 있음

📙데이터 분석과 시각화를 위한 대표적인 Library

  1. Numpy
    • 수치 계산을 위한 기본 라이브러리
    • 다차원 배열 객체와 이를 다루기 위한 도구를 제공
    • 선형 대수, 퓨리에 변환, 난수 생성 등의 기능을 포함
  2. Pandas
    • 데이터 조작과 분석을 위한 라이브러리
    • DataFrame 이라는 2 차원 데이터 구조를 중심으로 작동
    • 데이터 로딩, 정렬, 필터링, 그룹화, 병합 등의 기능을 제공
  3. Matplotlib
    • 기본적인 플로팅 라이브러리
    • 다양한 종류의 2D 그래프를 생성할 수 있음
    • 세부적인 커스터마이징 가능
    • Matplotlib.pyplot 모듈 : Matplotlib 라이브러리의 서브모듈로 그래프를
      빠르고 쉽게 생성할 수 있게 해주는 함수들의 집합
  4. seaborn
    • Matplotlib 을 기반으로 한 통계 데이터 시각화 라이브러리
    • Matplotlib 보다 더 현대적이고 세련된 디자인을 제공
    • 복합한 통계 그래프 등도 쉽게 구현 가능

📙데이터 분석 및 시각화 실습

💡1. 필요한 라이브러리 import

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from scipy import stats

💡2. 데이터 불러오기

data = pd.read_csv('')

💡3. 데이터 확인하기

# 상위 데이터 확인하기
data.head(10)
# 데이터 행과 열의 개수 확인
data.shape 
# 데이터 정보 확인
data.info()
# 데이터 요약
data.describe()

💡4. 결측치 확인하기

data.isnull().sum()

💡5. 필요한 칼럼 추가

# object 타입인 timestmap 칼럼을 datetime 타입으로 변환
data['timestamp'] = pd.to_datetime(data['timestamp'])
# 칼럼 추가
data['year'] = data['timestamp].dt.year

💡6. 데이터 분석

data['season'].value_counts(ascending=False)

💡7. 데이터 시각화

plt.figure(figsize=(가로,세로))  # 그래프 크기
sns.boxplot(x='범주',y='수치',data=데이터프레임)  # 박스플롯 생성
plt.xlabel('season') # x축 레이블 설정
plt.ylabel('cnt') # y축 레이블 설정 

💡8. 이상치 처리

  1. IQR : 사분위수를 이용

    def remove_outliers_iqr(df,column):
    Q1 = df[column].quantile(0.25)
    Q3 = df[column].quantile(0.75)
    IQR = Q3 - Q1
    lower_bound = Q1 - 1.5 * IQR
    upper_bound = Q3 + 1.5 * IQR
    return df[(df[column] >= lower_bound) & 	(df[column] <= upper_bound)]
    
    df_clean = remove_outliers_iqr(df, '칼럼명')
  2. Z-score : 평균과 표준편차를 이용

    • threshold : 이상치를 판별하는 기준값
    def remove_outliers_zscore(df, column, threshold=3):
    z_scores = np.abs((df[column] - df[column].mean()) / df[column].std())
    return df[z_scores < threshold]
    df = pd.read_csv('your_data.csv')
    df_clean = remove_outliers_zscore(df, 'your_column_name')

0개의 댓글