1. 데이터프레임 생성
1.1. 데이터프레임 이해
1.1.1. 데이터프레임이란
- Pandas의 주 사용 목적이 데이터프레임을 사용하기 위한 것
- 데이터를 처리, 조회, 분석하는 가장 효율적인 방법이 바로 데이터프레임을 사용하는 것
- 일반적으로 접하게 되는 테이블 형태, 엑셀 형태와 같음
- 직접 만들 수 있으나 보통은 csv 파일, 엑셀 파일 또는 DB에서 읽어옴
- 데이터프레임 형태로 저장해 처리(변경또는 분석 등) 해야함
(리스트나 딕셔너리 또는 배열 형태로는 저장 불가)
1.1.2. 데이터프레임 형태
- 데이터프레임은 인덱스(=행 이름)와 열 이름이 있고 없고에 따라 다른 형태를 가짐
- 인덱스란 행을 특정지어 조회할 때, 열 이름은 열을 특정지어 조회할 때 사용하는 정보
1) 인덱스와 열 이름이 없는 형태
- 열 이름이 없는 데이터프레임은 사실상 볼 일이 거의 없음
2) 열 이름을 지정한 형태
- 특별히 인덱스를 지정할 필요가 없는 경우가 많으므로 자주 보게 되는 형태
- 쉽게 말해서 인덱스는 지정된 번호(바뀔 수 있음)이고, 위치는 첫번째 두번째 같은 개념으로 바뀌지 않는 것.
3) 인덱스와 열 이름을 지정한 형태
- 인덱스와 열 이름 모두를 지정한 데이터프레임 형태로, 주식 시세와 같은 날짜가 인덱스로 지정되는 경우가 많음
1.2. 데이터프레임 직접 만들기
- pd.DataFrame() 함수를 사용해 데이터프레임 생성
- 대부분 리스트, 딕셔너리, Numpy 배열로부터 데이터프레임을 만
- 데이터프레임을 만들기 위해서는 다음 세 가지가 필요함
- 데이터
- 열 이름
- 인덱스 이름
- 열 이름을 지정하지 않으면 열 번호에 기반한 정수(0, 1, 2...)가 열 이름이 됨
- 인덱스 이름을 지정하지 않으면 행 번호에 기반한 정수(0, 1, 2...)가 인덱스 이름이 됨
1.2.1. 라이브러리 불러오기
- 데이터프레임을 사용하기 위해서 pandas 라이브러리를 pd 별칭을 주어 불러온다.
- pd 대신 다른 별칭을 써도 되지만, 이미 일반적으로 사용하는 pd를 별칭으로 사용한다.
- 별칭은 가급적이면 바꿔쓰지 않는 것을 실무에서 원칙으로 한다!
# 라이브러리 불러오기
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt # 시각화 라이브러리. 같이 외워둘 것
import seaborn as sns # 시각화 라이브러리. 같이 외워둘 것
1.2.2. 리스트로 만들기
- 인덱스를 지정하지 않으면 행 번호가 인덱스, 열 번호가 열 이름이 된다.
- 필요하면 인덱스와 열 이름을 별도로 지정할 수 있다.
# 리스트 만들기
stock = [[94500, 92100, 92200, 92300],
[96500, 93200, 95900, 94300],
[93400, 91900, 93400, 92100],
[94200, 92100, 94100, 92400],
[94500, 92500, 94300, 92600]]
dates = ['2019-02-15', '2019-02-16', '2019-02-17', '2019-02-18', '2019-02-19']
names = ['High', 'Low', 'Open', 'Close']
# 데이터프레임 만들기
df = pd.DataFrame(stock, index=dates, columns=names)
# 이렇게 써줄 수도 있지만 헷갈리지 않기 위해 위처럼 작성할것
# df = pd.DataFrame(stock, dates, names)
# 확인
df.head()
1.2.3. 딕셔너리로 만들기
- 딕셔너리로 데이터프레임을 만들면 딕셔너리의 키가 열 이름이 된다.
- 인덱스를 지정하지 않으면 행 번호가 인덱스가 된다.
- 필요하면 인덱스를 별도로 지정할 수 있다.
# 딕셔너리 만들기
cust = {'Name': ['Gildong', 'Sarang', 'Jiemae', 'Yeoin'],
'Level': ['Gold', 'Bronze', 'Silver', 'Gold'],
'Score': [56000, 23000, 44000, 52000]}
# 데이터프레임 만들기(인덱스 지정함)
df = pd.DataFrame(cust, index=['c01', 'c02', 'c03', 'c04'])
# 확인
df.head()
1.3. CSV파일 읽어오기
- 분석용 데이터는 대부분 파일에서 읽어 가져오니 잘 익혀야 할 기능!
- read_csv() 함수를 사용해서 CSV 파일에서 데이터를 읽어온다.
[주요옵션]
- sep: 구분자 지정(기본값 = 콤마)
- header: 헤더가 될 행 번호 지정(기본값 = 0)
- index_col: 인덱스 열 지정(기본값 = False)
- names: 열 이름으로 사용할 문자열 리스트
- encoding: 인코딩 방식을 지정
# 외부 데이터 읽어오기
path = 'csv파일 url'
pop = pd.read_csv(path)
# 상위 5행만 확인
pop.head()
# pop
예시)
# 로컬 데이터 읽어오기
path = 'csv파일명' # 읽어오려는 파일이 현재 작업중인 ipynb 파일과 다른 디렉토리에 있을 땐 경로도 넣어줘야 한다.
tip = pd.read_csv(path)
# 상위 5행만 확인
tip.head()
1.4. 인덱스 다시 설정
- 일반 열을 인덱스 열로 설정하거나, 행 순서에 기반한 정수값 인덱스로 초기화할 수 있다.
1) 일반 열을 인덱스로 지정
- 파일을 불러올 때는 index_col 옵션을 사용해 인덱스가 될 열을 선택할 수 있다.
- 파일을 불러온 후에는 set_index() 메서드를 사용해 인덱스가 될 열을 설정할 수 있다.
# 기존 열 중 하나를 인덱스로 설정 #1
pop = pop.set_index('year') # 반환된 결과로 재선언(1번만 실행할 수 있음)
# 또는
# pop.set_index('year', inplace=True) # 데이터프레임에 반영됨
# 확인
pop.head()
예시)
2) 인덱스 이름 삭제
# 인덱스 이름 삭제
pop.index.name = None
# 확인
pop.head()
예시)
3) 인덱스 초기화
- reset_index() 메서드를 사용해 행 번호에 기반한 정수 값으로 인덱스를 초기화 할 수 있다.
- drop=True를 설정하면 기존 인덱스 열을 일반 열로 가져오지 않고 버린다.(기본값=False)
# 인덱스 초기화
pop = pop.reset_index(drop=False) # 반환 방식
# 또는
# pop.reset_index(drop=False, inplace=True) # 미반환 방식
# 확인
pop.head()
예시)
# 열 이름 변경
pop = pop.rename(columns={'index': 'year'})
# 확인
pop.head()
예시)
'에이블스쿨 6기 DX 트랙 > 일일 복습' 카테고리의 다른 글
DAY 08. 데이터프레임 조회 (0) | 2024.09.20 |
---|---|
DAY 07. 데이터프레임 탐색 (0) | 2024.09.18 |
DAY 07. 넘파이 기초 (1) | 2024.09.18 |
DAY 05. 함수 (1) | 2024.09.12 |
DAY 04. 제어문 (0) | 2024.09.11 |