# 특정 열 선택 (Series 반환)name_series = df['이름']name_series
0 Alice
1 Bob
2 Charlie
3 David
4 Eva
Name: 이름, dtype: object
위 예시에서 df['이름']은 이름 열을 선택하여 시리즈를 반환합니다. 이렇게 특정 열을 선택하는 기본적인 인덱싱 방식은 간단하면서도 자주 사용됩니다.
2. .loc[]와 .iloc[]를 이용한 인덱싱
.loc[]와 .iloc[]는 데이터프레임에서 행과 열을 선택할 때 주로 사용하는 메서드입니다. 이 둘의 차이점과 사용 방법을 살펴보겠습니다.
2.1. .loc[]: 라벨(Label) 기반 인덱싱
.loc[]는 데이터프레임의 라벨(인덱스와 컬럼 이름)을 기준으로 데이터를 선택합니다.
# 라벨을 사용한 행 선택display(df)row_loc = df.loc[2]display(row_loc)
이름
나이
점수
0
Alice
25
85
1
Bob
32
88
2
Charlie
23
91
3
David
35
79
4
Eva
29
95
이름 Charlie
나이 23
점수 91
Name: 2, dtype: object
위 코드에서 .loc[]는 행과 열 라벨을 사용하여 데이터를 선택합니다. df.loc[2]는 2번째 인덱스에 해당하는 전체 행을 반환합니다. 인덱스는 0부터 시작하기 때문에 3번째열의 정보가 지정됩니다.
# 라벨을 사용한 특정 행과 열 선택display("데이터프레임")display(df)cell_loc = df.loc[2, '이름']display("슬라이싱 결과")display(cell_loc)
'데이터프레임'
이름
나이
점수
0
Alice
25
85
1
Bob
32
88
2
Charlie
23
91
3
David
35
79
4
Eva
29
95
'슬라이싱 결과'
'Charlie'
df.loc[2, '이름']은 2번째 행의 이름 열 값을 반환합니다.
# 라벨을 사용한 슬라이싱 (2번째부터 4번째 행까지)display("데이터프레임")display(df)slice_loc = df.loc[1:3]display("슬라이싱 결과")display(slice_loc)
'데이터프레임'
이름
나이
점수
0
Alice
25
85
1
Bob
32
88
2
Charlie
23
91
3
David
35
79
4
Eva
29
95
'슬라이싱 결과'
이름
나이
점수
1
Bob
32
88
2
Charlie
23
91
3
David
35
79
loc()함수를 사용한 슬라이싱 문법은 sequence[start:stop:step]와 같습니다. .loc함수에 슬라이싱을 사용하면 start와 stop을 포함하는 위치를 지정하고 결과는 1,2,3열이 슬라이싱되어 출력됩니다.
2.2. .iloc[]: 정수(Integer) 기반 인덱싱
.iloc[]는 정수 인덱스를 사용하여 데이터를 선택합니다. 이는 데이터프레임의 실제 위치를 기준으로 합니다.
display("데이터프레임")display(df)# 정수를 사용한 행 선택row_iloc = df.iloc[2]display(row_iloc)# 정수를 사용한 특정 행과 열 선택cell_iloc = df.iloc[2, 0]display(cell_iloc)# 정수를 사용한 슬라이싱 (1번째부터 3번째 행까지)slice_iloc = df.iloc[1:4]display(slice_iloc)
'데이터프레임'
이름
나이
점수
0
Alice
25
85
1
Bob
32
88
2
Charlie
23
91
3
David
35
79
4
Eva
29
95
이름 Charlie
나이 23
점수 91
Name: 2, dtype: object
'Charlie'
이름
나이
점수
1
Bob
32
88
2
Charlie
23
91
3
David
35
79
.iloc[]는 정수 인덱스를 사용하여 데이터를 선택하며, df.iloc[2]는 세 번째 행의 전체 데이터를 반환합니다. 또한 df.iloc[2, 0]은 세 번째 행의 첫 번째 열 데이터를 반환합니다.
3. 조건을 사용한 인덱싱
Pandas에서는 특정 조건을 만족하는 데이터를 필터링할 수 있습니다. 이를 통해 조건에 맞는 행을 선택할 수 있습니다.
# 나이가 30 이상인 사람들 선택age_filter = df[df['나이'] >=30]display(age_filter)# 이름이 'Alice'인 사람 선택name_filter = df[df['이름'] =='Alice']display(name_filter)
이름
나이
점수
1
Bob
32
88
3
David
35
79
이름
나이
점수
0
Alice
25
85
위 코드에서는 조건식을 사용하여 데이터를 필터링합니다. df['나이'] >= 30은 나이가 30 이상인 행을 필터링하고, df['이름'] == 'Alice'는 이름이 ’Alice’인 행을 선택합니다.
4. 열과 행을 동시에 선택하기
데이터프레임에서 특정 행과 열을 동시에 선택하려면 .loc[]와 .iloc[]를 결합하여 사용하면 됩니다.
# 특정 행과 열 동시 선택specific_cell = df.loc[2, '점수']display(specific_cell)# 특정 행과 여러 열 동시 선택multiple_cells = df.loc[2, ['이름', '점수']]display(multiple_cells)# 여러 행과 여러 열 동시 선택subset = df.loc[1:3, ['이름', '점수']]display(subset)
91
이름 Charlie
점수 91
Name: 2, dtype: object
이름
점수
1
Bob
88
2
Charlie
91
3
David
79
이 경우, df.loc[2, '점수']는 두 번째 인덱스 행의 점수 열을 반환하며, df.loc[2, ['이름', '점수']]는 이름과 점수 열의 데이터를 반환합니다.
5. 인덱스 설정과 재설정
Pandas에서 인덱스를 특정 열로 설정하거나, 인덱스를 기본 정수 인덱스로 재설정할 수 있습니다.
# '이름'을 인덱스로 설정df_with_index = df.set_index('이름')display(df_with_index)# 인덱스를 다시 기본 정수 인덱스로 설정df_reset = df_with_index.reset_index()display(df_reset)
나이
점수
이름
Alice
25
85
Bob
32
88
Charlie
23
91
David
35
79
Eva
29
95
이름
나이
점수
0
Alice
25
85
1
Bob
32
88
2
Charlie
23
91
3
David
35
79
4
Eva
29
95
set_index() 메서드는 특정 열을 인덱스로 설정하며, reset_index()는 인덱스를 기본 정수 인덱스로 재설정합니다.