본문 바로가기

파이썬

5. 데이터선택하기

# 📌 Pandas 데이터 선택하기 (행, 열, 조건 등) 튜토리얼

import pandas as pd

# 샘플 데이터 생성
data = {
    "이름": ["홍길동", "김철수", "이영희", "박지수"],
    "나이": [25, 30, 28, 22],
    "도시": ["서울", "부산", "대구", "서울"],
    "연봉": [5000, 6000, 5500, 4800],
}
df = pd.DataFrame(data)
print(df)

# 1️⃣ 특정 열(컬럼) 선택

## ✅ 단일 열 선택
print(df["이름"])  # 시리즈 형태로 반환
print(df.이름)  # 점(.) 표기법으로 접근

## ✅ 여러 열 선택
print(df[["이름", "연봉"]])  # 데이터프레임 형태로 반환

# 2️⃣ 특정 행 선택

## ✅ 인덱스로 행 선택 (iloc - 정수 위치 기반)
print(df.iloc[0])  # 첫 번째 행 선택
print(df.iloc[1:3])  # 1~2번째 행 선택 (슬라이싱)

## ✅ 라벨로 행 선택 (loc - 라벨 기반)
print(df.loc[0])  # 첫 번째 행 선택 (인덱스 번호가 0)
print(df.loc[1:3])  # 1~3번 인덱스의 행 선택 (슬라이싱 포함)

# 3️⃣ 조건을 이용한 행 선택

## ✅ 특정 조건에 맞는 데이터 선택
print(df[df["나이"] > 25])  # 나이가 25세 초과인 행 선택
print(df[df["도시"] == "서울"])  # 도시가 서울인 데이터 선택

## ✅ 여러 조건 적용 (AND: &, OR: |)
print(df[(df["나이"] > 25) & (df["도시"] == "서울")])  # 나이가 25세 초과 & 도시가 서울
print(df[(df["나이"] < 30) | (df["연봉"] > 5000)])  # 나이가 30 미만 OR 연봉이 5000 초과

## ✅ 조건 부합하지 않는 데이터 선택 (~ 연산자 사용)
print(df[~(df["도시"] == "서울")])  # 도시가 서울이 아닌 데이터

# 4️⃣ 특정 행과 열 동시 선택

## ✅ iloc을 이용한 특정 행, 열 선택 (정수 위치 기반)
print(df.iloc[0, 1])  # 첫 번째 행, 두 번째 열 값 (홍길동의 나이)
print(df.iloc[1:3, [0, 2]])  # 1~2번째 행의 1, 3번째 열 선택

## ✅ loc을 이용한 특정 행, 열 선택 (라벨 기반)
print(df.loc[0, "나이"])  # 첫 번째 행, '나이' 컬럼 선택
print(df.loc[:, ["이름", "연봉"]])  # 모든 행의 특정 컬럼 선택

# 5️⃣ 특정 컬럼 값 변경하기

## ✅ 단일 값 변경
df.loc[0, "연봉"] = 5200  # 홍길동의 연봉 변경

## ✅ 특정 조건을 만족하는 값 변경
df.loc[df["도시"] == "부산", "연봉"] = 6200  # 도시가 부산인 사람의 연봉 6200으로 변경

# 6️⃣ 인덱스 설정 및 재설정

## ✅ 특정 컬럼을 인덱스로 설정
df.set_index("이름", inplace=True)
print(df)

## ✅ 인덱스 초기화
df.reset_index(inplace=True)
print(df)

# 7️⃣ 데이터 샘플링 (일부 데이터 선택)

## ✅ 상위 N개 데이터 선택
print(df.head(2))  # 상위 2개 행 출력
print(df.tail(2))  # 하위 2개 행 출력

## ✅ 랜덤 샘플 데이터 선택





######################
교재
######################

# Pandas를 이용한 'datasets/winequality-white.csv' 데이터 선택 튜토리얼

import pandas as pd

# 1. CSV 파일 읽기
file_path = 'datasets/winequality-white.csv'
wine_data = pd.read_csv(file_path, sep=";")  # 구분자가 세미콜론(;)일 경우

# 2. 특정 열 선택
quality_data = wine_data['quality']  # 'quality' 열 선택
selected_columns = wine_data[['quality', 'pH']]  # 'quality'와 'pH' 열 선택

# 3. 데이터프레임의 일부 행 선택
top_10_rows = wine_data[:10]  # 상위 10개 행 선택
print(top_10_rows)

# 4. 특정 행과 열 선택
value = wine_data.iloc[0, 1]  # 첫 번째 행, 두 번째 열 데이터
print(value)

print(wine_data.iloc[0])  # 첫 번째 행 선택
print(wine_data.iloc[10:15])  # 10번째부터 14번째 행 선택
print(wine_data.iloc[0, 1])  # 첫 번째 행, 두 번째 열 값
print(wine_data.iloc[5:10, [0, 2]])  # 5~9번째 행의 1, 3번째 열 선택

# 5. 특정 행을 기준으로 선택 (loc)
print(wine_data.loc[0])  # 첫 번째 행 선택 (인덱스 기준)
print(wine_data.loc[5:10])  # 5~10번 인덱스의 행 선택
print(wine_data.loc[0, "density"])  # 첫 번째 행, 'density' 컬럼 값
print(wine_data.loc[:, ["alcohol", "quality"]])  # 모든 행의 특정 컬럼 선택

# 6. 특정 값 변경
wine_data.loc[0, "quality"] = 9  # 첫 번째 행의 품질 점수를 9로 변경

# 7. 조건을 이용한 데이터 선택
value = wine_data.loc[0, 'quality']  # 첫 번째 행에서 'quality' 열의 값 선택
print(value)

high_quality = wine_data[wine_data['quality'] >= 7]  # 품질이 7 이상인 데이터 선택
print(high_quality.head())

print(wine_data[wine_data["alcohol"] > 10])  # 알코올 함량이 10 이상인 와인
print(wine_data[wine_data["quality"] == 8])  # 품질 점수가 8인 와인

# 8. 여러 조건을 만족하는 데이터 선택
high_quality_alcohol = wine_data[(wine_data['quality'] >= 8) & (wine_data['pH'] >= 3)]
print(high_quality_alcohol.head())

print(wine_data[(wine_data["alcohol"] > 10) & (wine_data["quality"] >= 7)])  # 알코올 > 10 & 품질 >= 7
print(wine_data[(wine_data["alcohol"] > 9) | (wine_data["density"] < 1)])  # 알코올 > 9 OR 밀도 < 1

# 9. 특정 조건을 만족하는 값 변경
wine_data.loc[wine_data["quality"] == 5, "alcohol"] = wine_data["alcohol"] + 0.5  # 품질 점수 5인 와인의 알코올 함량 증가

print(wine_data[~(wine_data["quality"] == 5)])  # 품질 점수가 5가 아닌 와인

# 10. 랜덤 샘플 선택
print(wine_data.sample(5))  # 랜덤으로 5개 행 선택

'파이썬' 카테고리의 다른 글

7. 데이터전처리  (0) 2025.03.18
6. 데이터 전처리 (결측치와 이상치)  (0) 2025.03.17
4. 데이터불러오기 및 저장하기  (0) 2025.03.17
3. 파이썬 자료형 튜토리얼  (0) 2025.03.17
2. Pandas 기본 문법 튜토리얼  (0) 2025.03.17