데이터과학과 Python
데이터과학이란?
- 데이터를 통해 주어진 문제를 해결하는 접근법
- 데이터 수집, 처리, 분석, 시각화 등을 모두 포괄
- 컴퓨터과학적 소양, 수리과학에서의 배경 지식, 분석 대상이 될 분야에 대한 기초 지식 필요
데이터과학을 위한 Python 라이브러리의 종류
Pandas
- DataFrame 구조를 이용한 결측치 제거, 데이터 병합 등 전처리 수행
import pandas as pd
NumPy
- 행렬, 다차원 배열 등 수학 연산을 주로 수행하는 라이브러리
import numpy as np
Matplotlib
- 주어진 자료를 플롯 혹은 차트로 시각화하기 위한 라이브러리
import matplotlib.pyplot as plt
Pandas와 DataFrame
라이브러리 사용법
import random
num = random.randint(1,6)
print(num)
: random 이라는 이름의 라이브러리 또는 모듈을 불러온 후 , random이 제공하는 함수 randint를 사용
외부 데이터셋 불러오기
df = pd.read_excel('파일명.xlsx')
df = pd.read_csv('파일명.csv', engine = 'python')
인덱스 열이 별도로 존재하는 경우
df = pd.read_excel('파일명.xlsx', index_col = 0)
DataFrame의 생성
1. Dictionary 이용
import pandas as pd
df_dict = dict()
df_dict['이름'] = ['김고려', '최안암', '박정보']
df_dict['GPA'] = [4.0, 3.9, 4.2]
df_dict['소속'] = ['정보대학', '공과대학', '자유전공학부']
df = pd.DataFrame(df_dict)
df
열 제목을 key, 값을 value로 갖는 dictionary로 Pandas에서의 DataFrame을 생성할 수 있음
⇒ 세로로 한 줄씩 생성함!!
2. List 이용
import pandas as pd
df_list = []
df_list.append(['김고려', 4.0, '정보대학'])
df_list.append(['최안암', 3.9, '공과대학'])
df_list.append(['박정보', 4.2, '자유전공학부'])
df = pd.DataFrame(df_list, columns = ['이름', 'GPA', '소속'])
df
각 행을 개별 원소로 갖는 list로 Pandas에서의 DataFrame을 생성할 수 있음
⇒ 가로로 한 줄씩 생성함!!

DataFrame에서 원하는 값 추출하기
loc를 이용한 값 선택
import pandas as pd
df.loc[[0,2], ['이름', 'GPA']]
- df.loc[행,열]과 같은 문법으로 사용
- 행 명칭과 열 명칭을 이용해 값 추출 가능
df.loc[::2, :]
인덱스가 짝수인 열만 추출
iloc를 이용한 값 선택
import pandas as pd
df.iloc[[0,2], [0,2]]
- df.iloc[행,열]과 같은 문법으로 사용
- 행 index와 열 index를 이용해 값 추출 가능
drop : 필요 없는 행 또는 열을 제거하기
df = df.drop(2, axis = 0) # 인덱스가 2인 행 제거
df = df.drop('GPA', axis = 1) # GPA 열 제거
df = df.drop([0,1], axis = 0) # 인덱스가 0,1인 행 제거
df = df.drop(['GPA', '소속'], axis = 1) # GPA 열과 소속 열 제거
axis = 0 : 행, axis = 1 : 열
concat : 데이터 단순히 붙이기
df_new = pd.concat([df1, df2], axis = 1) # 열을 붙이기 위한 concat
하단 코드와 같이 행을 concat하고 인덱스는 새로 설정할 수 있음
df_new = pd.concat([df1, df2], axis = 0)
df_new = df_new.reset_index(drop = True) # 인덱스를 리셋해 df_new 업데이트
- reset_index : 인덱스 초기화
- reset_index(drop = True) : 기존 인덱스 열이 새롭게 대체됨
- reset_index() : 새로운 인덱스 열이 추가됨
merge : 키 값을 기준으로 데이터 합치기
df_new = df1.merge(df2, how = 'left', on = '이름')
- LEFT JOIN
- 왼쪽 책장에 오른쪽 데이터를 밀어넣기
- 왼쪽에 없는 key를 가진 오른쪽 데이터는 합쳐지지 않음
- RIGHT JOIN
- 오른쪽 책장에 왼쪽 데이터를 밀어넣기
- 오른쪽에 없는 key를 가진 왼쪽 데이터는 합쳐지지 않음
DataFrame 내보내기
df.to_csv('파일명.csv')
Pandas와 데이터 필터링
소속 대학이 공과대학이 아니며 등록 학기가 3학기 이상인 학생만을 추출하기
cond1 = df['소속'] != '공과대학'
cond2 = df['등록학기'] >= 3
cond = cond1 & cond2
df_new = df.loc[cond]
Q) 상단 코드에서 & 대신 and를 사용해도 될까?
→ and는 단일 bool 자료형에서만 사용 가능하므로, 오류가 발생한다.
소속 대학이 정보대학이거나 평균 학점이 4.0 미만인 학생만을 추출하기
cond1 = df['소속'] == '정보대학'
cond2 = df['GPA'] < 4.0
cond = cond1 | cond2
df_new = df.loc[cond]
Q) 상단 코드에서 | 대신 or를 사용해도 될까?
→ 마찬가지로, 오류가 발생한다.
DataFrame에서의 정렬
df_new = df.sort_values(by = 'GPA', ascending = True)
- sort_values 를 이용하여 정렬 수행 가능
- ascending을 False로 설정하면 내림차순 정렬
df.shape의 사용
- df.shape → (행 개수, 열 개수)
- df.shape[0] → 행 개수
- df.shape[1] → 열 개수
'Python' 카테고리의 다른 글
| [Python] 군집화를 통한 데이터 특성 파악 (0) | 2025.10.02 |
|---|---|
| [Python] BeautifulSoup를 이용한 웹 크롤링 (0) | 2025.10.01 |
| [Python] 데이터 전처리 후 Matplotlib로 시각화 방법 (0) | 2025.09.30 |
| [Python] 재귀 호출과 그 응용 (0) | 2025.09.30 |
| [Python] 클래스와 객체지향 프로그래밍 (0) | 2025.09.30 |