행 선택
행 데이터를 선택하기 위해서 loc와 iloc 인덱서를 사용한다.
- 인덱스 이름(예: '홍길동', '이순신' 등)을 기준으로 행을 선택할 때는 loc를 사용
- 정수형 위치 인덱스(예: 1,2,3,4 등)를 사용알 때는 iloc를 사용
# 행 인덱스를 사용하여 행 1개 선택
label1 = df.loc['서준']
position1 = df.iloc[0]
print(label1)
print(position1)
-----------------------------------------------------------------------------------------------
<실행 결과>
수학 90
영어 98
음악 85
체육 100
Name: 서준, dtype: int64
수학 90
영어 98
음악 85
체육 100
Name: 서준, dtype: int64
2개 이상의 행 인덱스를 리스트 형태로 입력하면 매칭되는 모든 행 데이터를 동시에 추출한다.
# 행 인덱스를 사용하여 2개 이상의 행 선택
label2 = df.loc[['서준','우현']]
position2 = df.iloc[[0,1]]
print(label2)
print(position2)
----------------------------------------------------------------------------------------------
<실행 결과>
수학 영어 음악 체육
서준 90 98 85 100
우현 80 89 95 90
수학 영어 음악 체육
서준 90 98 85 100
우현 80 89 95 90
단, 범위를 지정해서 여러 개의 행을 동시에 선택 할 때
- 인덱스 이름을 범위로 지정 하면 지정한 범위까지 출력
- 위치 인덱스를 사용하면 마지막 값은 출력되지 않음
label3 = df.loc['서준' : '우현']
position3 = df.iloc[0:1]
print(label3)
print(position3)
-----------------------------------------------------------------------------------------------
<실행 결과>
수학 영어 음악 체육
서준 90 98 85 100
우현 80 89 95 90
수학 영어 음악 체육
서준 90 98 85 100
열 선택
열 1개 선택(시리즈 생성): DataFrame 객체['열 이름'] 또는 DataFrame 객체.열 이름
DataFrame 객체.열 이름 이 방식을 사용하기 위해서는 열 이름이 문자열일 경우에만 가능
exam_data = {'이름' : ['서준', '우현', '인아'],
'수학' : [90,80,70],
'영어' : [98,89,95],
'음악' : [85,95,100],
'체육' : [100,90,90]}
df = pd.DataFrame(exam_data)
print(df)
print(type(df))
# '수학' 점수 데이터만 선택, 변수 math1에 저장
math1 = df['수학']
print(math1)
print(type(math1))
# '영어' 점수 데이터만 선택, 변수 english에 저장
english = df.영어
print(english)
print(type(english))
--------------------------------------------------------------------------------------------
<실행 결과>
이름 수학 영어 음악 체육
0 서준 90 98 85 100
1 우현 80 89 95 90
2 인아 70 95 100 90
<class 'pandas.core.frame.DataFrame'>
0 90
1 80
2 70
Name: 수학, dtype: int64
<class 'pandas.core.series.Series'>
0 98
1 89
2 95
Name: 영어, dtype: int64
<class 'pandas.core.series.Series'>
열 n개 선택(데이터프레임 생성): DataFrame 객체[['열1, 열2, 열3 ,,,,,,,']]
* 2중 대괄호 [[]]를 사용하면 열 이름이 1개라도 데이터프레임으로 반환한다.
# '음악', '체육' 점수 데이터를 선택. 변수 music_gym에 저장
music_gym = df[['음악', '체육']]
print(music_gym)
print(type(music_gym))
# '수학' 점수 데이터만 선택, 변수 math2에 저장
math2 = df[['수학']]
print(math2)
print(type(math2))
-----------------------------------------------------------------------------------------------
<실행 결과>
음악 체육
0 85 100
1 95 90
2 100 90
<class 'pandas.core.frame.DataFrame'>
수학
0 90
1 80
2 70
<class 'pandas.core.frame.DataFrame'>
원소 선택
인덱스 이름: DataFrame 객체.loc[행 인덱스, 열 이름]
정수 위치 인덱스: DataFrame 객체.iloc[행 번호, 열 번호]
c = df.loc['서준', ['음악', '체육']]
print(c)
d = df.iloc[0, [2,3]]
print(d)
e = df.loc['서준', '음악':'체육']
print(e)
f = df.iloc[0, 2:]
print(f)
-----------------------------------------------------------------------------------------------
<실행 결과>
음악 85
체육 100
Name: 서준, dtype: int64
음악 85
체육 100
Name: 서준, dtype: int64
음악 85
체육 100
Name: 서준, dtype: int64
음악 85
체육 100
Name: 서준, dtype: int64
행 인덱스와 열 이름을 각각 2개 이상 선택하여 데이터프레임을 얻는 방법
# df 2개 이상의 행과 열에 속하는 원소들 선택('서준', '우현' 의 '음악', '체육' 점수)
g = df.loc[['서준', '우현'], ['음악','체육']]
print(g)
h = df.iloc[[0,1], [2,3]]
print(h)
i = df.loc['서준':'우현', '음악':'체육']
print(i)
j = df.iloc[0:2, 2:]
print(j)
-----------------------------------------------------------------------------------------------
<실행 결과>
음악 체육
이름
서준 85 100
우현 95 90
음악 체육
이름
서준 85 100
우현 95 90
음악 체육
이름
서준 85 100
우현 95 90
음악 체육
이름
서준 85 100
우현 95 90
'머신러닝 > Pandas' 카테고리의 다른 글
데이터프레임 기본 [1/2] (0) | 2022.04.23 |
---|---|
판다스 기초 (0) | 2022.04.22 |