일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 정말
- 사각형변형
- 색상변경
- 너무오래됐다
- 오류
- 호주
- 유니코드 제거
- 데이터전처리
- 파이썬
- 방향변경
- selenium
- 빅데이터분석기사
- 멜버른
- OpenGL
- 가고싶은데
- 갈자신이없다
- 마우스클릭
- 필기후기
- 예쁜곳
- 빅데이터분석기사필기
- 애니메이션
- BeautifulSoup
- 크롤링
- 보라카이
- 빅데이터분석기사후기
- 청청구역
- 언제또가보지
Archives
- Today
- Total
wisdiom 아니고 wisdom
1. 판다스 자료구조(2) 본문
DataFrame, 데이터프레임
데이터프레임은 행과 열로 만들어진 2차원 배열이다. 여러 개의 시리즈들이 데이터프레임의 열로 모인 구조이다.
▶ DataFrame 만들기
import pandas as pd
# pd.DataFrame(2차원 배열, index=행 인덱스 배열, columns=열 이름 배열)
df = pd.DataFrame( [[12, '남', '요크셔테리어'], [5, '여', '포메라이언']], index=['미남', '초롱'], columns=['나이','성별','이름'])
▶ 기존 행 인덱스 / 열 이름 변경
-
행 인덱스 변경
- DataFrame객체.index = 새로운 행 인덱스 배열
- DataFrame객체.rename(index={기존 인덱스 : 새 인덱스}, inplace=False) *inplace=True는 원본 객체 변경
-
DataFrame객체.rename({기존 인덱스 : 새 인덱스}, axis=0, inplace=False) *inplace=False는 생략가능
-
열 이름 변경
- DataFrame객체.columns = 새로운 열 이름 배열
- DataFrame객체.rename(columns={기존 이름 : 새 이름}, inplace=False)
- DataFrame객체.rename({기존 이름 : 새 이름}, axis=1, inplace=False)
▶ 행 / 열 삭제
-
행 삭제
- DataFrame객체.drop(행 인덱스 또는 배열, axis=0, inplace=False)
- DataFrame객체.drop(index='인덱스 이름', inplace=False)
-
열 삭제
- DataFrame객체.drop(열 이름 또는 배열, axis=1)
- DataFrame객체.drop(columns='열 이름')
- del DataFrame객체['열 이름']
▶ 행 선택
구분 | loc | iloc |
탐색 대상 | 인덱스 이름(index label) | 정수형 위치 인덱스(integer position) |
범위 지정 | 가능(범위의 끝 포함) | 가능(범위의 끝 제외) |
행 1개 선택 | DataFrame객체.loc['인덱스 이름'] | DataFrame객체.iloc[숫자] |
행 2개 이상 | - DataFrame객체.loc[ [ '인덱스 이름', '인덱스 이름'] ] - DataFrame객체.loc[ '인덱스 이름' : '인덱스 이름' ] |
- DataFrame객체.iloc[ [숫자, 숫자] ] - DataFrame객체.iloc[ 숫자 : 숫자 ] |
▶ 열 선택
열 1개 선택 (시리즈 생성) | 열 2개 이상 선택 (데이터프레임 생성) |
- DataFrame객체['열 이름'] - DataFrame객체.열 이름 |
- DataFrame객체[ [열1, 열2, 열3, ..., 열N] ] |
▶ 원소 선택
- DataFrame객체.loc[행 인덱스, 열 이름]
- DataFrame객체.iloc[행 번호, 열 번호]
▶ 행 추가
- DataFrame객체.loc['새로운 행 이름'] = 데이터 값 또는 배열
# 1) 하나의 데이터 값 입력
df.loc[3] = 0
# 2) 원소 여러 값 배열
df.loc[4] = ['홍지', 90, 98, 100]
# 3) 기존 행 복사
df.loc['미미'] = df.loc[0]
▶ 열 추가
- DataFrame객체['새로운 열 이름'] = 데이터 값
▶ 원소 값 변경
# 1) 원소 1개 변경
df.loc[4, 0] = '미미'
# 2) 원소 여러 개 변경
df[4, 1:] = 100, 78, 80
▶ 행과 열 위치 바꾸기
- DataFrame객체.transpose()
- DataFrame객체.T
▶ 특정 열을 행 인덱스로 설정
- DataFrame객체.set_index(keys, drop=True, append=False, inplace=False)
- keys: 인덱스로 설정할 ['열 이름'] 또는 '열 이름' 또는 2개 이상의 열(멀티인덱스, MultiIndex)
- drop : 인덱스로 설정한 열을 DataFrame에서 삭제여부
- append : 기존 인덱스 삭제여부
- inplace : 원본 객체 변경 여부
df.set_index(['이름'])
df.set_index('이름')
df.set_index(['나이', '소속'])
▶ 행 인덱스 재배열
- DataFrame객체.reindex( 새로운 인덱스 배열 )
new_idx = ['홍지', '지수', '상욱', '현수']
ndf = df.reindex(new_idx)
기존 데이터프레임에 존재하지 않는 행 인덱스가 새롭게 추가되는 경우, 그 행의 데이터 값은 NaN값이 입력된다.
# reindex로 발생한 NaN 값을 숫자 0으로 채우기
ndf = df.reindex(new_idx, fill_value=0)
▶ 행 인덱스 초기화
reset_index()는 행 인덱스를 정수형 위치 인덱스로 초기화 한다.
이때, 기존 행 인덱스는 열로 이동한다.
- DataFrame객체.reset_index(drop=False, inplace=False)
- drop : 인덱스로 설정한 열을 DataFrame내에서 삭제여부
- inplace : 원본 내용 수정여부
▶ 데이터프레임 정렬
- '행 인덱스'를 기준으로 데이터프레임 정렬 : DataFrame객체.sort_index(ascending=True) *ascending=True 생략가능
- '특정 열의 데이터 값'을 기준으로 데이터프레임 정렬 : DataFrame객체.sort_values(by='열 이름', ascending=True)
반응형
'👩💻 > pandas' 카테고리의 다른 글
3. 데이터프레임 응용(3) (0) | 2021.01.31 |
---|---|
3. 데이터프레임 응용(2) (0) | 2021.01.31 |
3. 데이터프레임 응용(1) (0) | 2021.01.31 |
2. 데이터 사전 처리 (0) | 2021.01.27 |
1. 판다스 자료구조(1) - Series, 시리즈 (0) | 2021.01.18 |
Comments