Processor

【Pandas】 DataFrame 요소 접근

작성자 임베디드코리아 작성일26-04-16 00:16 조회115회 댓글0건
***< 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번까지)
--------------------------------------------------------------------------------------