데이터 접근하기
- loc : 인덱스 값으로 접근하는 방식(눈에 보이는 값 사용)
- iloc : 인덱스 번호로 접근하는 방식(메모리 위치 사용)
- iat : 특정 위치 값 1개만 조회
### 행 데이터 추출하기
# 특정 행 지정해서 추출 (없는 인덱스 값 지정하면 오류)
tips.loc[[1, 2, 3, 4, 5, 6]]
# 범위를 지정해서 추출 (인덱스 값이 없어도 오류 없음)
tips.loc[1:6]
### 행렬 데이터 추출
# [행, 열] 콤마로 행과 열 지정해서 추출
# loc는 컬럼명을 써줘야함
tips.loc[0:3, ["tip", "sex"]]
# 대괄호 2개로 접근해서 추출
# iloc는 컬럼 인덱스 번호를 써줘야함
tips.iloc[[0,1,2,3,4], [0,1,2]]
# 전체 행에 대한 전체 열 추출
tips.iloc[:, :]
# 5행 3열 데이터 추출
tips.iloc[0:5, 0:3]
# 1행 2열 값 추출
tips.iloc[1,2]
### 값 1개만 추출
tips.iat[0, 1]
데이터 추가하기
- 행 단위 데이터 추가
pd.concat()
: 새로운 행 데이터를 데이터 프레임 형태로 만들어서 추가- python 3.7 이하 버전에서는 append(), 현재는 concat() 사용
# 점수 데이터프레임 생성
import pandas as pd
score = {"class" : ["A", "A", "A", "B", "B", "C"],
"math" : [50, 90, 75, 55, 80, 45],
"english" : [70, 80, 65, 75, 85, 60]}
df = pd.DataFrame(score)
# 추가할 데이터프레임 생성
new = {"class" : ["C"],
"math" : [70],
"english" : [65]}
new_df = pd.DataFrame(new)
# 데이터프레임 추가
pd.concat([df, new_df])
# 인덱스 번호를 재정렬
# ignore_index = True
pd.concat([df, new_df], ignore_index=True)
loc[len(dataframe)]
: 새로운 행 데이터를 리스트 형태로 만들어서 추가
# 점수 데이터프레임
score = {"class" : ["A", "A", "A", "B", "B", "C"],
"math" : [50, 90, 75, 55, 80, 45],
"english" : [70, 80, 65, 75, 85, 60]}
df = pd.DataFrame(score)
# 추가할 데이터 리스트
new = ["C", 70, 65]
# 리스트 추가하기
# ignore_index 없어도 다음 인덱스 번호로 추가됨
df.loc[len(df)] = new
df
- 열 단위 데이터 추가
dataframe[컬럼명] = value
: 딕셔너리와 같은 방식으로 열 데이터 추가
# 열 단위 데이터 추가
df["science"] = 0
dataframe[컬럼명] = 리스트 or 시리즈
: 데이터프레임과 같은 인덱스 길이의 리스트나 시리즈로 데이터 추가
# 점수 데이터프레임
score = {"class" : ["A", "A", "A", "B", "B", "C"],
"math" : [50, 90, 75, 55, 80, 45],
"english" : [70, 80, 65, 75, 85, 60]}
df = pd.DataFrame(score)
# science 열 데이터 추가
science = [80, 50, 75, 55, 65, 90]
df["science"] = science
df
데이터 수정하기
- 값 하나만 수정
loc[]
: 인덱스 값으로 접근해서 수정하기iloc[] 또는 iat[]
: 인덱스 번호로 접근해서 수정하기
# 점수 데이터프레임
score = {"class" : ["A", "A", "A", "B", "B", "C"],
"math" : [50, 90, 75, 55, 80, 45],
"english" : [70, 80, 65, 75, 85, 60]}
df = pd.DataFrame(score)
# loc로 접근
df.loc[3, "english"] = 45
# iloc로 접근
df.iloc[3, 2] = 50
# iat로 접근
df.iat[3, 2] = 95
- 행 단위 데이터 수정
loc[]
: 인덱스 값으로 접근해서 수정하기iloc[]
: 인덱스 번호로 접근해서 수정하기
# 점수 데이터프레임
score = {"class" : ["A", "A", "A", "B", "B", "C"],
"math" : [50, 90, 75, 55, 80, 45],
"english" : [70, 80, 65, 75, 85, 60]}
df = pd.DataFrame(score)
# loc 또는 iloc
df.loc[2] = ["B", 95, 100]
df.iloc[2] = ["B", 95, 100]
- 열 단위 데이터 수정
dataframe[컬럼명] = value or 리스트 or 시리즈
: 컬럼명이 이미 존재하면 데이터 수정
# class명 수정하기
df["class"] = "ABC"
데이터 삭제하기
drop()
: 데이터프레임의 행 또는 열을 삭제하는 함수- index : 행 또는 열 인덱스 입력
- axis=0 또는 1 : 행(0) 단위(디폴트값) 또는 열(1) 단위
- inplace=True : 변경 상태를 메모리에 즉시 적용
### 인덱스 값[2] 행을 삭제
tips.drop(2, inplace=True)
# 인덱스 값[2] 삭제해서 접근 불가 (오류남)
# reset_index() 해줘야함
tips.loc[2]
# 인덱스 번호[2]는 접근 가능
tips.iloc[2]
### 인덱스 값[tip] 열을 삭제
tips.drop("tip", axis=1)