KT AIVLE SCHOOL 복습

KT AIVLE DX #2 - 데이터 다듬기(2) 데이터프레임 생성

전쏘스 2023. 3. 11. 16:22

 

1. 데이터프레임 이해

1) 데이터프레임이란

  • pandas 사용 목적이 데이터 프레임을 사용하기 위한 목적으로 봐도 무관
  • 데이터를 처리, 조회 분석하는 가장 효율적인 방법
  • 테이블, 엑셀 형태
  • 직접 데이터 테이블을 만들 수 있으나, 보통 csv파일, 엑셀 파일, DB에서 읽어옴

2) 데이터프레임 형태

  • 데이터 프레임은 인덱스(행 이름)와 열 이름이 있고 없고에 따라 다른 형태
  • 인덱스란 특정 행을 조회할 때, 열 이름은 특정 열을 조회할 때 사용

a. 인덱스와 열 이름이 없는 형태 (실무에서는 자주 볼 수 없음)

b. 열 이름을 지정한 형태(가장 자주 보는 형태)

c. 인덱스와 열 이름을 지정한 형태

 

2. 데이터프레임 직접 만들기

  • 대부분 리스트, 딕셔너리, Numpy 배열로 데이터프레임을 만듦
  • pd.DataFrame() 을 이용해 직접 만들 수 있음
  • df.head() 를 사용하면 만들어진 데이터프레임을 확인 할 수 있음

1) 빈 데이터 프레임 만들기

# 라이브러리 불러오기
import pandas as pd
import numpy as np

df = pd.DataFrame()

2) 리스트로 만들기

# 1차원 리스트 만들기
stock = [94500, 92100, 92200, 92300]

# 데이터프레임 만들기
df = pd.DataFrame(stock)

df.head() 

 

# 2차원 리스트 만들기
stock = [[94500, 92100, 92200, 92300],
         [96500, 93200, 95900, 94300],
         [93400, 91900, 93400, 92100],
         [94200, 92100, 94100, 92400],
         [94500, 92500, 94300, 92600]]

# 데이터프레임 만들기
df = pd.DataFrame(stock)

# 확인
df.head()

 

 

# 리스트 만들기
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, columns=names, index=dates)

# 확인
df.head()

 

 

3) 딕셔너리로 만들기

  • 딕셔너리로 데이터프레임을 만들면 딕셔너리의 키가 열 이름이 된다
# 딕셔너리 만들기
my_dict = {'Name': ['Gildong', 'Sarang', 'Jiemae', 'Yeoin'],
        'Level': ['Gold', 'Bronze', 'Silver', 'Gold'],
        'Score': [56000, 23000, 44000, 52000]}

# 데이터프레임 만들기
df = pd.DataFrame(my_dict)

# 확인
df.head()

 

 

3. CSV 파일 읽어오기

  • 분석용 데이터는 대부분 파일에서 읽어옴
  • pd.read_csv(데이터 가져올 경로) 함수로 데이터를 읽어옴
    • 주요 옵션 - sep : 구분자 지정 (기본값 = , ) - header : 헤더가 될 행 번호 지정 (기본값 = 0) - index_col : 인덱스 열 지정 (기본값 = False) - names : 열 이름으로 사용할 문자열 리스트 - encoding : 인코딩 방식을 지정 → 한글포함 파일은 encoding = 'CP949' 지정 필수!

 

4. 인덱스 다시 설정

  • 일반 열을 인덱스 열로 설정하거나, 정수값 인덱스로 초기화 가능
  • index_col : 파일을 불러 올 때, 인덱스가 될 열을 선택
  • set_index(인덱스가 될 열) : 파일을 불러온 후에 인덱스가 될 열을 설정
  • reset_index() : 행 번호에 기반한 정수 값으로 인덱스 초기화 → drop=True 를 설정하면 기존 인덱스 열을 일반 열로 가져오지 않고 버림 (기본값 = False)
  • inplace=True 옵션을 이용해 데이터프레임에 바로 적용될 수 있도록 함
# 기존 열 중 하나를 인덱스로 설정
df = df.set_index('column')

# 인덱스 이름 삭제
df.index.name = None

# 인덱스 초기화
df.reset_index(drop=False, inplace=True)

# 기존 인덱스를 제거하지 않으면 컬럼명이 index가 되니 변경
df.rename(columns={'index':'column'}, inplace=True)