🗄️ 데이터센터
home
주식거래 데이터
home

loc : 컬럼 또는 인덱스 명으로 선택

loc는 DataFrame이나 Series에서 인덱스나 컬럼의 이름을 사용하여 데이터를 선택하는 방법입니다. 이는 파이썬 pandas 라이브러리에서 제공하는 핵심적인 데이터 접근 방식으로, 특히 데이터 분석 작업에서 원하는 데이터를 정확하게 추출하고 조작하는 데 매우 유용합니다.

기본 사용법

loc를 사용하여 데이터를 선택할 때는 대괄호 [ ] 안에 원하는 행 인덱스열 이름을 지정합니다. 쉼표(,)를 사용하여 행과 열을 구분하며, 콜론(:)을 사용하여 범위를 지정할 수 있습니다. 단일 값, 리스트, 불리언 마스크 등 다양한 형태로 인덱싱이 가능합니다.
import pandas as pd # 샘플 데이터프레임 생성 df = pd.DataFrame({ 'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9] }, index=['row1', 'row2', 'row3']) # 단일 값 선택 value = df.loc['row1', 'A'] # row1의 A열 값 # 특정 행 전체 선택 row = df.loc['row1'] # row1의 모든 열 # 여러 행과 열 선택 subset = df.loc[['row1', 'row2'], ['A', 'B']] # 범위 선택 range_subset = df.loc['row1':'row2', 'A':'C']
Python
복사

고급 사용법

loc는 더 복잡한 데이터 선택 작업에도 활용될 수 있습니다. 불리언 인덱싱, 조건문, 함수 등을 활용하여 더 세밀한 데이터 선택이 가능합니다.
import pandas as pd # 샘플 데이터프레임 생성 df = pd.DataFrame({ 'Name': ['John', 'Anna', 'Peter', 'Linda'], 'Age': [25, 30, 35, 28], 'Score': [85, 92, 78, 95] }, index=['id1', 'id2', 'id3', 'id4']) # 불리언 인덱싱 high_scores = df.loc[df['Score'] > 90] # 복합 조건 selected = df.loc[(df['Age'] < 30) & (df['Score'] >= 85)] # 함수 적용 def select_condition(row): return row['Age'] >= 30 and row['Score'] > 80 filtered = df.loc[df.apply(select_condition, axis=1)] # 값 수정 df.loc[df['Score'] < 80, 'Score'] += 5
Python
복사
이러한 고급 사용법을 통해 데이터를 더 효과적으로 분석하고 조작할 수 있습니다. 특히 대규모 데이터셋을 다룰 때 유용합니다.

contains를 사용한 문자열 검색

loc와 함께 pandas의 str.contains() 메소드를 사용하면 특정 문자열이 포함된 데이터를 쉽게 찾을 수 있습니다. 이는 텍스트 데이터를 다룰 때 특히 유용합니다.
import pandas as pd # 샘플 데이터프레임 생성 df = pd.DataFrame({ 'Name': ['John Smith', 'Anna Johnson', 'Peter Smith', 'Linda Williams'], 'Email': ['john@email.com', 'anna@email.com', 'peter@gmail.com', 'linda@email.com'], 'Description': ['Senior Developer', 'Data Analyst', 'Junior Developer', 'Project Manager'] }) # 'Smith'가 포함된 이름 찾기 smith_names = df.loc[df['Name'].str.contains('Smith')] # 'gmail'이 포함된 이메일 찾기 gmail_users = df.loc[df['Email'].str.contains('gmail')] # 'Developer'가 포함된 직무 찾기 (대소문자 무시) developers = df.loc[df['Description'].str.contains('developer', case=False)] # 정규표현식 사용 # '@' 뒤에 'gmail'이 포함된 이메일 찾기 gmail_pattern = df.loc[df['Email'].str.contains(r'@gmail', regex=True)]
Python
복사
str.contains() 메소드는 다음과 같은 유용한 매개변수들을 제공합니다
case: 대소문자 구분 여부 (기본값: True)
na: NaN 값 처리 방법 (기본값: None)
regex: 정규표현식 사용 여부 (기본값: True)
pat: 검색할 패턴