***< DataFrame 요소 접근 >****************************************************
◆ pandas에서는 DataFrame과 Series 내의 개별 요소에 접근하기 위한 다양한 방법을 제공한다.
◆ 특정 데이터나 특정 행 또는 열을 선택하고, 조건을 만족하는 데이터를 필터링할 수 있다.
( 1 ) 열(Column) 접근
열에 접근하는 방법은 두 가지입니다:
방법 1: 대괄호를 사용 (추천)
방법 2: 점 표기법을 사용
___________________<예 시>____________________________________________
import pandas as pd
# 데이터프레임 생성
data = {
'이름': ['홍길동', '김철수', '이영희', '박영수'],
'나이': [25, 30, 35, 40],
'직업': ['학생', '개발자', '디자이너', '기획자']
}
df = pd.DataFrame(data)
---------------------------------------------------------------------
■ 방법 1: 대괄호를 사용
____________________________________________
print("이름 열:\n", df['이름'])
--------------------------------------------
■ 방법 2: 점 표기법 사용
_____________________________________________
print("\n나이 열:\n", df.나이)
---------------------------------------------
( 2 ) 행(Row) 접근
▶ iloc[]: 위치 기반으로 행에 접근한다.
▶ loc[]: 인덱스 라벨을 사용하여 행에 접근한다.
____________________________________________________________
# iloc으로 2번째 행 접근 (0부터 시작하는 인덱스)
print("\n두 번째 행 (iloc):\n", df.iloc[1])
# loc으로 특정 인덱스에 해당하는 행 접근
df.index = ['a', 'b', 'c', 'd'] # 인덱스 라벨을 지정
print("\n'b' 인덱스의 행 (loc):\n", df.loc['b'])
-------------------------------------------------------------
( 3 ) 개별 요소 접근
iloc[]와 loc[]로 특정 행과 열의 교차점에 있는 값을 접근할 수 있다.
______________________________________________________________
# iloc으로 특정 행과 열의 값에 접근 (위치 기반)
print("\n첫 번째 행의 '이름' 값 (iloc):", df.iloc[0, 0])
# loc으로 특정 행과 열의 값에 접근 (인덱스 및 열 라벨 기반)
print("\n'b' 인덱스의 '직업' 값 (loc):", df.loc['b', '직업'])
---------------------------------------------------------------------
( 4 ) 조건을 사용하여 데이터 필터링
조건을 적용하여 특정 조건을 만족하는 데이터를 필터링할 수 있다.
____________________________________________________________________________________________________________________________
# 나이가 30 이상인 사람 필터링
print("\n나이가 30 이상인 사람들:\n", df[df['나이'] >= 30])
# 나이가 30 이상이고 직업이 '개발자'인 사람 필터링
print("\n나이가 30 이상이고 직업이 '개발자'인 사람들:\n", df[(df['나이'] >= 30) & (df['직업'] == '개발자')])
----------------------------------------------------------------------------------------------------------------------------
( 5 ) 여러 열 또는 행 선택하기
여러 열 또는 행을 선택하려면 리스트를 사용한다.
______________________________________________________________________________________
# 여러 열 선택
print("\n'이름'과 '나이' 열 선택:\n", df[['이름', '나이']])
# 여러 행 선택 (iloc을 사용하여 첫 번째와 세 번째 행 선택)
print("\n첫 번째와 세 번째 행 선택:\n", df.iloc[[0, 2]])
---------------------------------------------------------------------------------------
( 6 ) 슬라이싱으로 범위 선택하기
슬라이싱을 사용하여 연속된 행이나 열을 선택할 수 있다.
________________________________________________________________________________
# iloc으로 첫 번째부터 두 번째 행까지 선택
print("\n첫 번째부터 두 번째 행 선택 (iloc):\n", df.iloc[0:2])
# 여러 열에 대해 슬라이싱
print("\n첫 번째에서 두 번째 열까지 선택 (iloc):\n", df.iloc[:, 0:2])
---------------------------------------------------------------------------------
( 7 ) 행과 열 모두 선택하기
iloc[] 또는 loc[]를 사용하여 동시에 행과 열을 선택할 수 있다.
_________________________________________________________________________________
# 두 번째 행과 두 번째 열 선택 (iloc)
print("\n두 번째 행과 두 번째 열 값 (iloc):", df.iloc[1, 1])
# 특정 행과 특정 열을 동시에 선택 (loc)
print("\n'b' 인덱스의 '나이' 값 (loc):", df.loc['b', '나이'])
---------------------------------------------------------------------------------
<< 요약 정리 >>열 선택: df['열 이름'] 또는 df.열이름
▶ 행 선택: df.iloc[행 번호] 또는 df.loc[인덱스]
▶ 개별 요소 선택: df.iloc[행 번호, 열 번호] 또는 df.loc[인덱스, 열 이름]
▶ 조건 필터링: df[조건]
▶ 여러 행/열 선택: df[['열1', '열2']]
***< 판다스에서 iloc >************************************************
◆ iloc는 Pandas에서 데이터를 추출할 때 사용하는 아주 핵심적인 도구이다.
◆ iloc은 "Integer Location"의 약자로, 데이터프레임의 행이나 열을 숫자 인덱스(순서)를 기준으로 선택하는 기능이다.
( 1 ) 특 징
◎ 숫자 기반: 행과 열의 이름(Label)이 무엇이든 상관없이, 오직 0부터 시작하는 순서만 따진다.
◎ 슬라이싱 지원: Python 리스트와 유사하게 [시작:끝] 범위를 지정할 수 있다.
◎ 범위 규칙: iloc[0:5]라고 하면 0번째부터 4번째까지의 데이터를 가져온다. (마지막 인덱스는 포함되지 않음)
( 2 ) 사용법 예시
--데이터프레임이 있다고 가정-----
이름(Name) 나이(Age) 도시(City)
-------------------------------------------------
0 김철수 25 서울
1 이영희 30 부산
2 박민수 22 대구
■ 단일 요소 선택
____________________________________________________________
df.iloc[0, 1] # 0번째 행의 1번째 열 데이터 -> 25
------------------------------------------------------------
■ 행 전체 선택
____________________________________________________________
df.iloc[1] # 1번째 행(이영희 데이터) 전체를 가져옴
------------------------------------------------------------
■ 범위 선택 (슬라이싱)
_____________________________________________________________________________________
df.iloc[0:2, 0:2] # 0~1행과 0~1열을 가져옴 (김철수, 이영희의 이름과 나이)
--------------------------------------------------------------------------------------
***< loc 와 iloc >***************************************************************
loc와 iloc는 파이썬의 pandas 라이브러리에서 데이터프레임에서 행과 열에 접근하는 데 사용된다.
<< loc (Label-based indexing) >>
- 라벨(이름)을 기반으로 데이터에 접근한다.
- 행과 열의 인덱스 이름을 사용하여 데이터를 선택한다.
- 슬라이싱을 할 때 끝 값도 포함된다.
______________________________________________________________________________________
df.loc[0:2, 'column_name'] # 인덱스 0부터 2까지의 행과 'column_name' 열을 선택
--------------------------------------------------------------------------------------------------
<< iloc (Integer-based indexing) >>
- 정수 위치 기반으로 데이터에 접근한다.
- 행과 열의 정수 위치를 사용하여 데이터를 선택한다.
- 슬라이싱을 할 때 끝 값은 포함되지 않음.
-------------------------------------------------------------------
● loc: 라벨로 데이터 선택, 슬라이싱 시 끝 값 포함.
● iloc: 정수 위치로 데이터 선택, 슬라이싱 시 끝 값 미포함.
-------------------------------------------------------------------
[ 1 ] loc와 iloc 의 사용 예제
_______________________예시 : 간단한 데이터프레임을 만들기_______________________________________
import pandas as pd
# 샘플 데이터프레임 생성
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
'Age': [25, 30, 35, 40, 45],
'City': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix']}
df = pd.DataFrame(data)
print(df)
---------------------------------------------------------------------------------------------------------------------
결과 :
Name Age City
0 Alice 25 New York
1 Bob 30 Los Angeles
2 Charlie 35 Chicago
3 David 40 Houston
4 Eva 45 Phoenix
( 1 ) loc (라벨 기반 인덱싱) 예제
______① 특정 행과 열 선택 (라벨 기반_____________
# 'Name' 열의 모든 값을 선택
df.loc[:, 'Name']
----------------------------------------------------------
결과 :
0 Alice
1 Bob
2 Charlie
3 David
4 Eva
Name: Name, dtype: object
________② 여러 행과 여러 열 선택 (라벨 기반)____________
# 인덱스 1부터 3까지의 행과 'Name'과 'City' 열 선택
df.loc[1:3, ['Name', 'City']]
-----------------------------------------------------------------
결과 :
Name City
1 Bob Los Angeles
2 Charlie Chicago
3 David Houston
________③ 조건에 따른 행 선택__________________________
# 나이가 30 이상인 사람들의 'Name'과 'Age' 열 선택
df.loc[df['Age'] >= 30, ['Name', 'Age']]
----------------------------------------------------------------
Name Age
1 Bob 30
2 Charlie 35
3 David 40
4 Eva 45
( 2 ) . iloc (정수 기반 인덱싱) 예제
______① 특정 행과 열 선택 (정수 위치 기반)_____________
# 첫 번째 행과 두 번째 열 선택
df.iloc[0, 1]
----------------------------------------------------------------
결과 :
25
______② 여러 행과 여러 열 선택 (정수 위치 기반)_____________
# 첫 번째부터 세 번째 행과 첫 번째부터 두 번째 열 선택
df.iloc[0:3, 0:2]
---------------------------------------------------------------------
결과 :
Name Age
0 Alice 25
1 Bob 30
2 Charlie 35
______③ 특정 범위 슬라이싱 _________________________________
# 두 번째부터 네 번째 행과 첫 번째부터 두 번째 열 선택
df.iloc[1:4, 0:2]
---------------------------------------------------------------------
결과 :
Name Age
1 Bob 30
2 Charlie 35
3 David 40
______④ 마지막 행 선택 _________________________________
# 마지막 행 선택
df.iloc[-1]
-----------------------------------------------------------------
결과 :
``` Name Eva Age 45 City Phoenix Name: 4, dtype: object
<<< loc 와 iloc 차이점 >>>
구분 loc(Location) iloc(Integer Location)
-------------------------------------------------------------------------------------
기준 이름(Label) 정수 번호 (Index)
범위 끝 끝점 포함 끝점 포함 안 함
예시 df.loc[0:2] (인덱스 '2'까지) df.iloc[0:2] (0번부터 1번까지)
--------------------------------------------------------------------------------------