- 데이터 처리, 조회, 분석을 위해 데이터프레임을 사용한다.
- 형태는 엑셀처럼 생겼고, 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 |
---|