[Pandas] 데이터 선택 및 추출
[Pandas] 데이터 선택 및 추출
[Pandas] 데이터 선택 및 추출
1
2
3
4
5
6
7
# 열 선택
df['Fare'] # 컬럼 이름을 적어 해당 시리즈(열)를 가져온다.
df.Fare
# 행 선택
df[:3] # 슬라이스 느낌으로 레코드(행) 가져온다.
1
2
# serise를 2차원 배열인 df 형식으로 바꾸는 게 .to.frame()
df['Fare'].to_frame() # df는 2차원 배열, serise는 1차원 배열!!!!!!!!!!
1
2
3
4
5
6
7
# Fancy Indexing 사용하기
columns = ['Survived',"Pclass","Name"]
df[columns]
# df를 조회할 때, 이렇게 list에 열을 넣고 조회하면 df형식으로 조회 됨!!!!
columns = ["survived"]
df[columns]
loc, iloc
loc
loc: 이름 값을 활용해 조회
1
df.loc[3] # 3번 행의 정보 (index의 3번째 아님 XXX)
1
2
3
4
5
6
7
8
9
10
# loc[행 인덱스, 열 인덱스]
df.loc[3, "survived"]
# 행의 3~5까지의 컬럼이 "Name"인 것 (offset 인덱스가 아니기 때문)
df.loc[3:5, "Name"]
# 3 ~ 10 번 탑승객의 Name, Fare, Pclass 조회
columns = ["Name", "Fare", "Pclass"]
df.loc[3:10, columns]
1
2
3
4
5
6
# 이런 식으로 행에도 list형식으로 넣을 수 있음.
# 1, 3, 5번 탑승객의 Age, Pclass
columns = ["Age", "Pclass"]
rows = [1, 3, 5]
df.loc[rows, columns]
iloc
- integer location (offset index 사용)
1
2
df.iloc[3:5, [2, 4, 5]]
# 출력 결과 : 3,4 행의 2,4,5(offset index기준)컬럼
loc을 이용한 조건 추출
mask
- 행(레코드)에 대한 조건을 설정하여 원하는 조건에 맞는 행만 추출
1
2
mask = df['Pclass'] == 1 # 각 인덱스에 대해 조건 검사 후 T/F로 구성된 값 추출
mask # 행인덱스 별 T/F 값으로 반환
1
2
# 조건 마스크(mask = df['Pclass']==1)를 행에다 씌워서 True인 것만 추출
df.loc[mask] # mask는 뒤집어 씌우는 개념
1
2
3
# AND, OR 조건
mask = (df["Pclass"] == 1) & (df["Age"] >= 30) # & : AND 조건
mask
1
2
3
4
5
6
# AND, OR 조건
mask = (df["Pclass"] == 1) & (df["Age"] >= 30) # & : AND 조건
mask
mask = (df["Pclass"] == 1) | (df["Age"] >= 30) # & : AND 조건
mask
query로 조건절을 지정
1
2
3
df.query("Pclass == 1") # Pclass 컬럼의 값이 1인 것만
df.query("Pclass == 1 and Age >= 30")
query에서 열 지정하기
1
df.query("Pclass == 1 and Age >= 30")[["Name", "Age", "Pclass"]] # 선택할 열을 리스트로 넣은 것
query로 외부 변수 사용
1
2
passenger_samples = [3, 100, 500]
df.query("PassengerId in @passenger_samples")
isin 조건
1
2
3
# 근데 그냥 웬만하면 loc 쓰라
mask = df["PassengerId"].isin([3, 100, 500])
df[mask]
1
2
3
4
# 선택하는 건 인덱스 번호
# 두 개 결과는 같다
df.query("PassengerId in [3,100,500]")
df.query("PassengerId.isin([3, 100, 500])")
This post is licensed under CC BY 4.0 by the author.