KT에이블스쿨 7기

[KT AIVLE School 7기] 파이썬 데이터 처리

CodeForWelfare 2025. 4. 27. 23:23

파이썬 기초후 데이터 처리에 대해  교육이 진행 되었습니다.

AI를 하기 위해서는 데이터 처리가 제일 중요하고 시간이 많이 드는 부분이니 꼭 기본적인건 숙지하시길 바랍니다!


 

1. 데이터 처리 개요

이번 과정에서는 이렇게 배워간다!

  • CSV, 엑셀 파일을 읽어서 데이터프레임 만들기
  • 데이터프레임을 탐색하고 조회하는 방법 익히기
  • 데이터프레임을 수정하거나 결측치 처리하기
  • 데이터프레임 합치기와 병합하기

데이터 분석을 시작할 때 가장 기본이 되는 것이 바로 데이터프레임을 다루는 기술이다. 초반에 탄탄히 익혀두면 나중에 훨씬 수월해진다.


2. 데이터프레임 만들기

데이터프레임이란?

  • 테이블처럼 행과 열로 구성된 데이터 구조다.
  • 엑셀 시트처럼 생겼지만, 훨씬 강력한 조작이 가능하다.

판다스(Pandas) 라이브러리를 불러와야 시작할 수 있다.

import pandas as pd

직접 만들어보기

  • 리스트로 만들기
stock = [[94500, 92100], [96500, 93200]]
df = pd.DataFrame(stock)

리스트를 이용하면 간단하게 데이터를 넣을 수 있다.

  • 인덱스와 열 이름 지정해서 만들기
df = pd.DataFrame(stock, index=['2024-01-01', '2024-01-02'], columns=['High', 'Low'])

데이터를 구분하기 쉽게 인덱스(행 이름)와 컬럼(열 이름)을 설정할 수 있다.

  • 딕셔너리로 만들기
data = {'Name': ['Alice', 'Bob'], 'Score': [85, 90]}
df = pd.DataFrame(data)

딕셔너리로 만들면 key가 컬럼 이름이 된다.

파일에서 불러오기

  • CSV 파일 읽기
path = 'https://example.com/data.csv'
df = pd.read_csv(path)

파일에서 직접 불러와서 데이터 분석을 시작할 수 있다.

  • 인덱스 지정하기
df.set_index('year', inplace=True)

특정 열을 인덱스로 바꿔주면 데이터 조작이 편리해진다.

  • 인덱스 초기화
df.reset_index(drop=True, inplace=True)

필요할 때는 인덱스를 다시 숫자 순서로 초기화할 수 있다.


3. 데이터프레임 탐색하기

데이터를 불러왔으면, 전체적인 모습을 먼저 파악해야 한다.

주요 탐색 메서드

df.head()        # 앞부분 보기
df.tail()        # 뒷부분 보기
df.info()        # 전체 요약 정보
df.describe()    # 통계 정보 요약

어떤 데이터가 들어있는지 빠르게 훑어볼 수 있다.

주요 속성들

  • df.shape: (행 수, 열 수)
  • df.columns: 열 이름 목록
  • df.index: 인덱스 목록
  • df.dtypes: 각 열의 데이터 타입

정렬하기

df.sort_values(by='Score', ascending=False)
df.sort_index(ascending=True)

정렬해서 원하는 순서로 데이터를 볼 수 있다.

고유값과 최빈값

df['Name'].unique()
df['Name'].value_counts()
df['Name'].mode()

데이터가 어떤 값들로 구성돼 있는지 알 수 있다.

기본 집계 메서드

df.sum()
df.mean()
df.max()
df.min()
df.count()

숫자형 데이터라면 합계, 평균 등도 바로 계산할 수 있다.


4. 데이터프레임 조회하기

필요한 부분만 쏙쏙 골라서 보고 싶을 때 사용하는 방법이다.

특정 열 조회

df['Score']
df[['Name', 'Score']]

특정 범위 열 조회

df.loc[:, 'Name':'Score']

연속된 열을 가져올 때는 loc와 슬라이싱을 사용한다.

조건으로 조회하기

df[df['Score'] > 80]
df[(df['Score'] > 80) & (df['Name'] == 'Alice')]
df[df['Name'].isin(['Alice', 'Bob'])]
df[df['Score'].between(80, 90)]

조건을 걸어 필요한 데이터만 추려낼 수 있다.


5. 데이터프레임 변경하기

데이터를 가공하거나 새롭게 열을 추가하는 방법이다.

열 이름 변경

df.rename(columns={'Name': 'StudentName'}, inplace=True)
df.columns = ['StudentName', 'Score']

열 이름을 바꿔주면 가독성이 훨씬 좋아진다.

열 추가

df['Passed'] = df['Score'] >= 60

성적을 기준으로 Pass/Fail 여부를 새 열로 만들 수 있다.

열 삭제

df.drop('Passed', axis=1, inplace=True)

필요 없는 열은 깔끔하게 삭제할 수 있다.


6. 결측치 처리하기

빈칸(NaN)이 있는 데이터는 반드시 처리해야 분석할 수 있다.

결측치 확인

df.isnull().sum()

어떤 열에 결측치가 몇 개 있는지 확인할 수 있다.

결측치 제거

df.dropna(axis=0, inplace=True)

결측치가 있는 행 전체를 없애는 방법이다.

결측치 채우기

df.fillna(0, inplace=True)
df['Score'].fillna(df['Score'].mean(), inplace=True)

0이나 평균값으로 채워 넣으면 데이터 손실을 줄일 수 있다.

앞/뒤 값으로 채우기

df.ffill(inplace=True)  # 바로 앞 값으로 채우기

연속 데이터에서는 바로 앞값을 가져오는 것도 좋은 방법이다.


7. 데이터프레임 합치기와 병합하기

복수의 데이터프레임을 연결하거나 합치는 방법도 알아야 한다.

합치기 (concat)

pd.concat([df1, df2], axis=0)  # 행 방향
pd.concat([df1, df2], axis=1)  # 열 방향

비슷한 구조의 데이터를 손쉽게 합칠 수 있다.

병합하기 (merge)

pd.merge(df1, df2, on='ID', how='inner')

SQL의 JOIN처럼 특정 컬럼을 기준으로 병합할 수도 있다.


마무리

 

수고 많으셨습니다! 처음 접하시면 어려울 수 있지만 데이터를 구하셔서 여러가지 방법으로 

연습 해보시는 걸 추천드립니다!

(질문은 댓글로 자유롭게 남겨주세요!)