TIL

👀Today I Learn

데이터를 선택하는 방법

1. 인덱스를 사용한 데이터 선택

  • 데이터프레임에서 인덱스는 각 행을 고유하게 식별할 수 있는 라벨
  • 인덱스를 사용해 특정 행이나 그룹을 쉽게 선택 가능
      # 예시 데이터프레임 
      data = {
          '이름': ['철수', '영희', '민수'],
          '나이': [25, 30, 35],
          '직업': ['학생', '회사원', '프리랜서']
      }
      df = pd.DataFrame(data)
    

인덱스 설정하기 set_index()

  • 특정 열을 인덱스로 설정하면, 데이터 선택이 더 직관적이 됨.

      # '이름' 열을 인덱스로 설정
      df = df.set_index('이름')
    
  • 결과 :

          나이    직업
      이름
      철수  25    학생
      영희  30   회사원
      민수  35  프리랜서
    

인덱스로 데이터 선택 loc()

  • 인덱스를 설정한 후, loc[] 을 사용해 쉽게 데이터에 접근 가능

      df.loc['영희']
    
  • 결과 :

      나이     30
      직업    회사원
      Name: 영희, dtype: object
    


2. 열(Column) 지정하여 데이터 선택하기

단일 열 선택

  • 열 이름을 사용해 단일 열 선택

      df['나이']
    
  • 결과 :

      이름
      철수    25
      영희    30
      민수    35
      Name: 나이, dtype: int64
    

여러 열 선택

  • 여러 열을 선택하고 싶을 땐, 열 이름의 리스트 사용

      # '나이'와 '직업' 열 선택
      df[['나이', '직업']]
    
  • 결과 :

            나이   직업
      이름
      철수   25    학생
      영희   30   회사원
      민수   35  프리랜서
    


3. 행(Row) 지정하여 데이터 선택

iloc[]을 사용한 행 선택

  • 정수 인덱스로 행을 선택 가능

      # 첫 번째 행 선택
      df.iloc[0]
    
  • 결과 :

      나이     25
      직업     학생
      Name: 철수, dtype: object
    

loc[]을 사용한 특정 행 선택

  • 인덱스 라벨로 특정 행을 선택 가능

      # '민수'의 데이터 선택
      df.loc['민수']
    
  • 결과 :

      나이       35
      직업    프리랜서
      Name: 민수, dtype: object
    

여러 행 선택

  • iloc[]이나 loc[]을 사용해 여러 행을 선택 가능

      # 첫 번째와 두 번째 행 선택
      df.iloc[0:2]
    
  • 결과 :

            나이    직업
      이름
      철수   25   학생
      영희   30  회사원
    


조건부 필터링과 데이터 타입 변환

1. 조건부 필터링

  • 데이터프레임에서 특정 조건을 만족하는 데이터만 선택
      # 예시 데이터프레임 생성
      data = {
          '이름': ['철수', '영희', '민수', '지수'],
          '나이': [25, 30, 22, 35],
          '직업': ['학생', '회사원', '학생', '프리랜서']
      }
      df = pd.DataFrame(data)
    

기본 조건부 필터링

  • 조건을 사용해 필터링된 데이터프레임으로 반환

      # 나이가 25 이상인 행만 선택
      filtered_df = df[df['나이'] >= 25]
    
  • 결과

         이름  나이   직업
      0  철수   25    학생
      1  영희   30   회사원
      3  지수   35  프리랜서
    

여러 조건을 사용한 필터링

  • 여러 조건을 결합하여 필터링 가능( AND (&), OR (|) )

      # 나이가 25 이상이고, 직업이 '학생'인 행만 선택
      filtered_df = df[(df['나이'] >= 25) & (df['직업'] == '학생')]
    
    • 결과
         이름  나이  직업
      0  철수   25  학생
    

isin() 을 사용한 필터링

  • 특정 값들이 포함된 행을 필터링

      # 직업이 '학생' 또는 '프리랜서'인 행 선택
      filtered_df = df[df['직업'].isin(['학생', '프리랜서'])]
    
  • 결과 :

         이름  나이       직업
      0  철수   25      학생
      2  민수   22      학생
      3  지수   35  프리랜서
        
    

~ 연산자를 사용한 반대 조건 필터링

  • 특정 조건을 부정하는 데이터를 선택

      # 직업이 '학생'이 아닌 행 선택
      filtered_df = df[~(df['직업'] == '학생')]
    
  • 결과 :

         이름  나이       직업
      1  영희   30    회사원
      3  지수   35  프리랜서
    


2. 데이터 타입 변환

  • 데이터프레임의 데이터 타입을 확인하고, 필요에 따라 변환하는 방법

dtype 으로 데이터 타입 확인

  • 각 열의 데이터 타입 확인

      df.dtypes
    
  • 결과 :

      이름    object
      나이     int64
      직업    object
      dtype: object
    

astype()을 사용한 데이터 타입 변환

  • 특정 열의 데이터 타입 변경

      # '나이' 열을 정수형(int)에서 실수형(float)으로 변환
      df['나이'] = df['나이'].astype(float)
      print(df.dtypes)
    
  • 결과 :

      이름    object
      나이    float64
      직업    object
      dtype: object
    

날짜 타입으로 변환

  • pd.to_datatime() 함수를 사용하여 날짜 타입으로 변환

      # 예시 데이터프레임 생성
      data = {
          '이름': ['철수', '영희', '민수'],
          '가입일': ['2023-01-01', '2022-12-15', '2023-05-22']
      }
      df = pd.DataFrame(data)
        
      # '가입일'을 날짜 타입으로 변환
      df['가입일'] = pd.to_datetime(df['가입일'])
      print(df.dtypes)
    
  • 결과 :

      이름            object
      가입일    datetime64[ns]
      dtype: object
    

카테고리 데이터로 변환

  • 카테고리는 메모리를 절약하고, 성능을 높이기 위해 사용

      # '직업' 열을 카테고리형으로 변환
      df['직업'] = df['직업'].astype('category')
      print(df.dtypes)
    
  • 결과 :

      이름     object
      나이    float64
      직업   category
      dtype: object
    



💡Today I Thought

오늘의 체크리스트

  • 백준 코딩테스트 1문제
  • Pandas 복습
  • TIL 작성

회고

  오늘은 크리스마스🎅 맛있는 것도 먹고, 하루종일 푹 쉬었다. 사실 공부해야지 해야지 하고 저녁에.. 조금했다…ㅎㅎ 이번주는 휴일이 껴있어서 그런가 시간이 유독 빠르게 지나가는 기분이다.

댓글남기기