코린이 유치원/Pandas
[Pandas] 03 DataFrame - 개념, 생성, 파일, 불러오기, 메소드
개나리반
2022. 6. 20. 23:46

01 DataFrame 개요
- 표(테이블 - 행렬)를 다루는 Pandas 클래스
- 데이터베이스의 Table이나 R의 data.frame이나 Excel의 표와 동일한 역할
- 분석할 데이터를 가지는 판다스의 가장 핵심적인 클래스
- 행이름: index, 열이름:column
- 행이름과 열이름은 명시적으로 지정 가능
- 명시적으로 지정하지 않으면 순번을 index, column명으로 사용
- 하나의 행과 하나의 열은 Series로 구성
- 직접 데이터를 넣어 생성하거나 데이터셋을 파일(csv, 엑셀, DB등)로부터 읽어와 생성
- Series는 외부러부터 못 읽어옴
02 DataFrame 생성
- pd.DataFrame(data)
- data
- DataFrame을 구성할 값을 설정
- Series, List, ndarray를 담은 2차원 배열
- 열이름을 key로 값을 value로 저장한은 딕셔너리
- index
- index명으로 사용할 값 배열로 설정
- columns
- 컬럼명으로 사용할 값 배열로 설정
- DataFrame을 구성할 값을 설정
01 직접 생성
딕셔너리 -> DataFrame
import pandas as pd
# 딕셔너리 이용해 DataFrame 생성
d = {
'id': ['id-1', 'id-2', 'id-3', 'id-4', 'id-5'],
'Korean': [100, 50, 70, 90, 85],
'Math': [80, 50, 90, 100, 100]
}
grade = pd.DataFrame(d) # 딕셔너리 DataFrame 변환
grade
2차원 배열 -> DataFrame
list = [
['my-1', 20, 50],
['my-2', 70, 20],
['my-3', 100, 90],
['my-4', 70, 100],
['my-5', 60, 80],
['my-6', 100, 100],
]
grade2 = pd.DdataFrame(list, columns = ['ID', '국어', '수학']) # columns 설정
grade2
02 DataFrame 파일로 저장
- DataFrame객체.to_파일타입()
- DataFrame객체.to_csv(파일경로, sep = ', ', index = True, header = True, encoding)
- 텍스트 파일로 저장
- 파일경로: 저장할 파일경로(경로/파일명)
- sep: 데이터 구분자
- index, header: 인덱스/헤더 저장 여부
- encoding
- 파일인코딩
- 생략시 UTF-8로 저장
- DataFrame객체.to_excel(파일경로, index = True, header = True)
DataFrame -> CSV 파일로 저장
grade.to_csv(save_file_path, index = False) # save_file_path: 파일경로, index명 지정 X
grade.to_csv(save_file_path, index = False, header = False) # 컬럼명을 저장 X
grade.to_csv(save_file_path, index = False, sep = '\t') # 열 구분자 설정
DataFrame -> xls, pickle, html 파일로 저장
grade.to_excel('grade.xls', index = False) # excel파일로 저장
grade.to_pickle('grade.pkl') # pickle 파일로 저장
grade.to_html('grade.html') # html 파일로 저장
03 파일 읽어오기
csv 파일 등 텍스트 파일로부터 읽어아ㅗ 생성
- pd.read_csv(파일경로, sep = ',', header, index_col, na_values, encoding)
- 파일경로: 읽어올 파일의 경로
- sep
- 데이터 구분자
- 기분값: 숨표
- header = 정수
- 열이름(컬럼이름)으로 사용할 행 지정
- 기본값: 첫번째 행
- None 설정: 첫번째 행부터 데이터로 사용하고 header(컬럼명)은 0부터 자동증가 하는 값 붙임
- index_col = 정수, 컬럼명
- index명으로 사용할 열이름(문자열)이나 열의 순번(정수) 지정
- 생략시 0부터 자동증가하는 값 붙임
- na_values
- 읽어올 데이터셋의 값 중 결측치로 처리할 문자열 지정
- encoding
- 파일 인코딩
- 생략시 운영체제 기본 인코딩 방식
csv파일 불러오기
데이터프레임이름 = pd.read_csv('경로',
header = None, # header 행이 없는 것으로 설정
names = ['ID', 'Korean', 'Math']) # 컬럼명 지정
결측치 처리할 값 지정
데이터프레임이름 = pd.read_csv('경로',
header = None, # header 행이 없는 것으로 설정
na_values = ['결측치']) # 결측치로 처리할 값 지정
03 DataFrame 메소드
메소드 | 설명 |
T | 행/열 변경 |
head(정수)/tail(정수) | 데이터 정수 행만큼 조회, 기본값 5 |
shape, size | shape: 행렬의 수 튜플로 리턴, size: 원소 개수 반환 |
columns/index | 열의 이름/index이름을 조회 및 변경 |
describe() | 요약 통계량 제공 수치형: 기술통계값 범주형: 고유값 개수 등 민도수 관련 정보 include, exclude 매개변수로 특정 타입만 선택 가능 |
info() | 각 열 별 데이터 타입과 결측치 개수를 조회 |
isin([값리스트]) | 데이터프래임내 각 원소가 값 리스트에 있는 갑솩 같으면 True 다르면 False, 결과를 불린 데이터 프레임으로 반환 |
메소드 | 설명 |
count() | 열별 결측치를 제외한 원소 개수 |
min(), max(), sum(), mean(), median(), std(), var(), mode(), idxmax(), idxmin() |
열별 기술 통계 값 조회, 결측치가 있을 경우 빼고 계산 최소값, 최대값, 합계, 평균, 중앙값, 표준편차, 분산, 최빈값 최대값 index, 최소값 index |
nunique() | 열별 고유값 개수 조회 |
qunatile(q = 분위 수) | 열별 분위수 계산, q 생략시 0.5 |
isnull(), notnull()/ isna(), notna() | 열별 결측치 체크 각 원소의 결측치 여부를 series로 변환 |
fillna(반환값) | 결측치를 한번에 특정 값으로 변환 |
dropna() | 결측치가 있는 행/열 제거 |
sort_values(기준열 이름리스트, ascending = True) | 전달한 열 값을 기준으로 정렬 ascending = False: 내림차순, True(기본값): 오름차순 |
데이터프레임이름.T # 행과 열 변경
데이터프레임이름.head() # 데이터 정수 행만큼 처음부터 조회
데이터프레임이름.tail() # 데이터 정수 행만큼 뒤에서부터 조회
데이터프레임이름.shape # 데이터수(행수, 열수)
데이터프레임이름.size # 행수 * 열수
데이터프레임이름.info() # DF의 행, 열에 대한 정보 조회'
데이터프레임이름.describe() # 수치형 타입 컬럼의 요약통계량을 반환
데이터프레임이름.describe(include = ['object']) # 문자형 컬럼만 포함
데이터프레임이름.describe(exclude = ['float64']) # 숫자형 컬럼 제외
데이터프레임이름.isnull()