ABC부트캠프

[9일차] ABC부트캠프

ideas9064 2025. 7. 13. 21:13

 

오늘은 데이터 전처리와 시각화 하는 방법에 대해 배워봤습니다.

새로운 교수님께서 수업을 맡으시게 되어, 오늘은 이전에 배웠던 내용을 다시 한번 짚고 넘어가는 시간이었던 것 같습니다.

 


 

대괄호를 활용한 데이터 부분 선택

- dataframe에 대괄호를 붙이고 슬라이스로 관측지 번호를 지정하거나 따옴표로 변수 이름을 넣어 데이터 부분을 선택 가능합니다.

 

1 .단일 열(컬럼) 선택

-  df["열이름"]

2. 여러 열 선택(리스트)

- df[["열1", "열2", "열3"]]

3. 행 조건으로 부분 선택

- df[df["수학"] >= 80]

4. 행 번호로 슬라이싱

 - df[1:4]

 


 

loc과 iloc을 활용한 관측치/변수 선택

 

loc은 행 이름(index)과 열 이름(column)으로 데이터에서 일부를 선택하고, iloc은 정수(integer) 형식의 행 번호, 열 번호를 활용  
두 방법 모두 리스트[ ]나 슬라이스:를 활용한 방법을 지원

 

loc[ ]

☞ 행만 선택

df.loc["홍길동"]   # 행 이름(인덱스 라벨)으로 선택

☞  행과 열 모두 선택

df.loc["홍길동", "영어"]  # "홍길동" 학생의 영어 점수

☞ 여러 행, 여러 열 선택

df.loc[["홍길동", "김영희"], ["영어", "수학"]]

 


iloc[ ]

☞  행만 선택

df.iloc[0]  # 첫 번째 행 선택

☞  행과 열 모두 선택

df.iloc[0, 2]  # 첫 번째 행의 세 번째 열

☞  여러 행과 열

df.iloc[0:2, 1:3]  # 0~1행, 1~2열 선택 (끝 제외!)

 


실습 1

이번 실습에서는 pandas 사용해 df_subway라는 dataframe을 생성하고 데이터 구조의를 살펴본 뒤 일부 행과 열을 선택하는 방법을 익혀보았습니다.

import pandas as pd
# 1. 아래의 명령어를 실행해서 df_subway 데이터 생성하기 
pf_subway = pd.read_csv("파일 위치/CARD_SUBWAY_MONTH_201907.csv"),encoding ='cp949')

# 2.columns 변수(속성)를 활용해서 변수이름 확인하기
df_subway.clomns

# 3. 슬라이스를 활용하여 11~15번째 관측치(행) 선택하기
df_subway.iloc[10:15]

# 4. '사용일자', '역명', '하차총승객수' 세 변수(열) 선택하기
df_subway.loc[:,['사용일자','역명','하차총승객수']]

# 5. 노선명이 "1호선"인 관측치(행) 선택하기
df_subway['노선명'].unique()
cond = df_subway['노선명'] == '1호선'
df_subway.loc[cond]

 


 

 

1.isin() - 다중 조건 필터링

 

  • 특정 열에서 여러 값 중 하나라도 포함된 행만 선택할 때 사용
  • ==를 여러 번 쓰지 않고 한 줄로 표현 가능
df[df["열이름"].isin([값1, 값2, 값3])]

예시
df[df["노선명"].isin(["1호선", "2호선"])]

 

 

연관 함수

  • ~ (부정): ~df["노선명"].isin(["1호선", "2호선"]) → 제외 조건
  • any(), all()과 조합하여 조건 더 확장 가능

 

2. groupby() – 그룹별 집계 분석

 

  • 특정 열의 값에 따라 데이터를 **그룹화(grouping)**하여 통계 처리할 수 있음
df.groupby("열이름")

 예시
 df.groupby("노선명")["승차총승객수"].sum()
 
 df.groupby(["노선명", "역명"])["하차총승객수"].mean()

 

 

df.groupby("race/ethnicity", as_index=False)['writing score'].mean()

 

  • groupby("race/ethnicity", as_index=False)
    → 'race/ethnicity' 기준으로 그룹화
  • ['writing score']
    → 그룹화한 데이터에서 'writing score' 열만 선택
  • .mean()
    → 각 그룹의 'writing score' 평균을 계산

 

 

연관 함수

  • .agg(): 여러 집계함수 한꺼번에 적용 가능
    예: df.groupby("노선명").agg(["sum", "mean"])

3.axis

axis 의미 방향

0 열 기준 계산 (세로 방향) 위 → 아래
1 행 기준 계산 (가로 방향) 왼쪽 → 오른쪽
df.sum(axis=0)  # 각 열의 합계
df.sum(axis=1)  # 각 행의 합계

 

4. .nlargest( n, column ) , .nsmallest( n, column )

.nlargest( n, column ) - 특정 열에서 값이 큰 순서대로 n개 추출

.nsmallest( n, column ) - 특정 열에서 값이 작은 순서대로 n개 추출

 


 

 

오늘은 새로운 교수님이 판다스 데이터 분석에 대한 내용을 다뤘기에 전에 배웠던 내용을 복기하면서 수업을 하였기에 

이해가 그래도 잘 되었던 것 같습니다. 

 

'ABC부트캠프' 카테고리의 다른 글

[11일차]ABC부트캠프  (3) 2025.07.20
[10일차] ABC 부트캠프 - ESG포럼&세미나  (4) 2025.07.13
[7일차] ABC부트캠프  (3) 2025.07.13
[6일차]ABC부트캠프  (0) 2025.07.13
[5일차]ABC부트캠프_ ESG-day!  (0) 2025.07.06