데이터 다듬기

데이터프레임

chacha001 2024. 9. 17. 20:12

 

 

  • 데이터 처리, 조회, 분석을 위해 데이터프레임을 사용한다.
  • 형태는 엑셀처럼 생겼고, csv 파일, 엑셀 파일, DB에서 읽어와서 사용한다. (직접 만들수도 있다.)
  • 가로 이름을 열이름= 컬럼, 세로이름을 행이름=인덱스 라고 한다.

 

0. 파이썬에서 데이터프레임을 쓰기한 라이브러리

import pandas as pd

 

 

 

1. 리스트로 데이터프레임 만들기

 

# 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()

 

 

 

이렇게 만들면 인덱스와 컬럼 이름이 자동으로 0 1 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.head()

 

 

 

2. 딕셔너리로 데이터프레임 만들기

 

딕셔너리로 만들면 키가 열 이름이 된다. 인덱스는 따로 지정하지 않으면 행 번호가 된다.

 

# 딕셔너리 만들기
cust = {'Name': ['Gildong', 'Sarang', 'Jiemae', 'Yeoin'],
        'Level': ['Gold', 'Bronze', 'Silver', 'Gold'],
        'Score': [56000, 23000, 44000, 52000]}

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


# 인덱스를 지정하고 싶을땐
# df = pd.DataFrame(cust, index=['C0001', 'C0002', 'C0003', 'C0004'])

# 확인
df.head()

 

head() 메소드는 데이터프레임의 상위항목 5개를 보여준다. 상위 3개를 보고싶으면 head(3) 이렇게 숫자를 지정해주면 된다. 데이터프레임 하위항목 5개는 tail()메소드를 쓸 수 있다.

 

 

 

3. CSV파일 읽어오기

직접 데이터프레임을 만들지 않고 기존의 csv파일을 읽어오는 방법이다.

 

# 데이터 읽어오기
path = '경로 입력'
df = pd.read_csv(path)

# 상위 10행만 확인
df.head(10)

 

+) 한글이 포함된 파일을 읽어올때 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb1 in position 0: invalid start byte 오류가 뜬다면 encoding='CP949'로 지정하면 된다. 

 

 

주요 옵션들:

  • sep: 구분자 지정(기본값 = 콤마)
  • header: 헤더가 될 행 번호 지정(기본값 = 0)
  • index_col: 인덱스 열 지정(기본값 = False)
  • names: 열 이름으로 사용할 문자열 리스트
  • skiprows: 처음 몇 줄을 무시할 것인지 지정, 리스트로 지정 가능
  • encoding: 인코딩 방식을 지정

 

 

 

 

 

 

3.1. 인덱스를 다시 설정하기.

 

(1) 일반 열중 하나를 인덱스로 지정하기.

 

두가지 방법이 있다.

  • 파일을 불러올 때 옵션을 사용해서 인덱스가 될 열을 선택하기.
  • 파일을 불러와서 확인한 뒤에 메서드를 사용해서 인덱스가 될 열을 설정하기.
# 첫번째 방법으로 설정하는 법

df = pd.read_csv(path, index_col='인덱스로 쓸 컬럼명')

# 두번째 방법으로 설정하는 법

df.set_index('year', inplace=True)

 

 

이렇게 해서 인덱스를 지정해서 출력하면 인덱스 이름과 컬럼명이 구분되어 나타내야하기때문에 보기에 좋지 않다.

그럴땐 인덱스 이름을 삭제해 버린다.

 

df.index.name = None

 

 

 

그 외 메소드와 옵션들 정리:

 

# 인덱스 초기화
df.reset_index(drop=False, inplace=True)
  • drop = True 로 설정하면 기존 인덱스 열을 일반 열로 가져오지 않고 버린다. 기본값은 False
  • inplace = True 는 해당 작업이 원본 데이터프레임에 직접 적용됨을 의미하고, 기본값인 False로 설정시작업 결과가 새로운 데이터프레임이나 시리즈로 반환되며, 원본 데이터는 변경되지 않는다.

 

# 열 이름 변경
pop.rename(columns={'기존 이름': '바꿀 이름'}, inplace=True)

'데이터 다듬기' 카테고리의 다른 글

파이썬의 배열 numpy 정리  (0) 2024.09.17