에이블스쿨 6기 DX 트랙/일일 복습

DAY 07. 데이터프레임 생성

d061120 2024. 9. 18. 21:23

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