대부분의 데이터 세트는 2차원 데이터
= 행 x 열로 구성 ex) TABLE, 엑셀 시트
Why? 인간이 가장 이해하기 쉬운 데이터 구조, 효과적으로 데이터를 담는 구조
-> 판다스는 데이터를 효율적으로 가공/처리하는 기능 제공
판다스
- 넘파이 기반으로 작성
- 넘파이보다 유연하고 편리하게 데이터 핸들링 가능
- 고수준 API 제공
- 파이썬의 리스트, 컬렉션, 넘파이 내부 데이터 + CSV 같은 파일을 쉽게 DataFrame 으로 변경
- 핵심 객체 : DataFrame : 여러 개의 행과 열로 이뤄진 2차원 데이터를 담는 데이터 구조체
- Index, Series 객체 이해 필요
- Index : RDBMS의 PK처럼 개별 데이터를 고유하게 식별하는 Key 값
- Series vs DataFrame
Series | DataFrame(여러 개의 Series로 이뤄짐) | |
Column | 하나 | 여러개 |
Index | key 값을 가짐 | key 값을 가짐 |
판다스 시작 - 파일을 DataFrame으로 로딩, 기본 API
pandas 모듈 임포트
pd로 에일리어스(alias;가명)해 임포트하는 것이 관례
import pandas as pd
타이타닉 탑승자 데이터 파일
titanic_train.csv는 맨 위 줄 : 칼럼 명, 각각 필드는 콤마로 분리
DataFrame으로 로딩하는 API 제공
read_csv() : 칼럼을 콤마(,)로 구분한 파일 포맷
read_table() : 탭(\t)
read_fwf() : Fixed Width; 고정 길이
필드 구분 문자 기반의 파일 포맷도 DataFrame으로 변환 가능
sep 인자 사용
read_csv('파일명', sep=',') : 콤마로 필드 구분, 생략시 자동으로 콤마로 할당
read_csv('파일명', sep='\t') : 탭으로 필드 구분
read_csv(filepath, sep',',..)
filepath : 가장 중요한 인자, 나머지는 디폴트 값으로 할당됨
way 1
어떤 디렉터리에 파일 저장 -> read_csv(데이터 파일 경로명)
titanic_df = pd.read_csv("C:\Users\eewjd\Downloads\titanic_train.csv")
way 2
주피터 노트북과 파일이 모두 같은 디렉터리에 있음 -> read_csv('파일명')
titanic_df = pd.read_csv('titanic_train.csv')
첫 번째 행에 있는 칼럼 문자열이 DataFrame 칼럼명으로 할당됨
맨왼쪽에 파일에 기재돼 있지 않는 데이터값이 0부터 순차적으로 표시되어 있음
-> 판다스의 Index 객체로 DataFrame 내의 데이터는 생성될 때 고유의 Index 값을 가짐
head() : 맨앞 3개 행 반환, 디폴트 5개
shape : 행 열 튜플 형대로 반환
891행, 12열
print('DataFrame의 크기 :', titanic_df.shape)
DataFrame의 크기 : (891, 12)
info()
: 총 데이터 건수, 데이터 타입, null 건수를 알 수 있음
세부 설명
인덱스 범위 0 ~890로 행 891
칼럼 12 : 열 12
칼럼별 타입
891개 결측치가 아님
age칼럼 : 714개 결측치가 아님 -> 177개는 결측치라는 의미
칼럼 타입 요약 : float64 2개, int64 5개, object 5개
memory usage: 83.7+ KB :
titanic_df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PassengerId 891 non-null int64
1 Survived 891 non-null int64
2 Pclass 891 non-null int64
3 Name 891 non-null object
4 Sex 891 non-null object
5 Age 714 non-null float64
6 SibSp 891 non-null int64
7 Parch 891 non-null int64
8 Ticket 891 non-null object
9 Fare 891 non-null float64
10 Cabin 204 non-null object
11 Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
describe() : 요약통계량, object 타입 칼럼은 출력에서 제외
숫자형 칼럼의 개략적인 데이터 분포 확인 가능
PassengerID : 승객 ID 칼럼으로 의미 없음
Survived : 1,0 이뤄진 숫자형 카테고리 칼럼
Pclass : 1, 2, 3으로 이뤄진 숫자형 카테고리 칼럼
titanic_df.describe()
PassengerId Survived Pclass Age SibSp Parch Fare
count 891.000000 891.000000 891.000000 714.000000 891.000000 891.000000 891.000000
mean 446.000000 0.383838 2.308642 29.699118 0.523008 0.381594 32.204208
std 257.353842 0.486592 0.836071 14.526497 1.102743 0.806057 49.693429
min 1.000000 0.000000 1.000000 0.420000 0.000000 0.000000 0.000000
25% 223.500000 0.000000 2.000000 20.125000 0.000000 0.000000 7.910400
50% 446.000000 0.000000 3.000000 28.000000 0.000000 0.000000 14.454200
75% 668.500000 1.000000 3.000000 38.000000 1.000000 0.000000 31.000000
max 891.000000 1.000000 3.000000 80.000000 8.000000 6.000000 512.329200
시리즈.value_counts()
DataFrame과 리스트, 딕셔너리, 넘파이 ndarray 상호 변환
DataFrame <-> 파이썬의 리스트, 딕셔너리, 넘파이 ndarray
파이썬의 리스트, 딕셔너리, 넘파이 ndarray -> DataFrame 변환하기
DataFrame은 리스트,, 넘파이 ndarray와 다르게 칼럼면 가지고 있음
data는 리스트, 딕셔너리, 넘파이 ndarray 입력 받기
-> 생성 인자 columns은 칼럼명 리스트를 받아서 DataFrame 생성
DataFrame
: 행, 열로 이뤄진 2차원 데이터
: 2차원 이하의 데이터만 변환 가능
1차원 형태의 리스트, 넘파이, ndarray의 변환
'Machine Learning & Deep Learning > 파이썬 머신러닝 완벽 가이드(공룡책)' 카테고리의 다른 글
스태킹 앙상블 (0) | 2023.06.29 |
---|---|
불균형 데이터 처리, 언더 샘플링, 오버 샘플링 (0) | 2023.06.28 |
결정트리 (0) | 2023.05.29 |