Pandas3_1

지두의 개발자 도전기·2025년 3월 12일

Pandas

목록 보기
3/9
post-thumbnail

데이터프레임 중심 프로그래밍

1. 기본 설정

1-1. 시리즈(Series)

  • 1차원 데이터 구조로, 인덱스와 값(value)으로 구성됨.
  • 리스트, 딕셔너리, 넘파이 배열 등을 활용하여 생성 가능.

1-2. 데이터프레임(DataFrame)

  • 2차원 데이터 구조로, 여러 개의 시리즈가 모여 만들어짐.
  • 행(row)과 열(column)로 구성됨.
  • 딕셔너리, 리스트, 넘파이 배열 등을 활용하여 생성 가능.

2. 시리즈 산술연산

  • 시리즈 간의 산술연산은 같은 인덱스를 기준으로 수행됨.
  • 연산 대상이 없는 인덱스 값은 NaN(결측치)로 처리됨.

예제 (덧셈)

import pandas as pd

s1 = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
s2 = pd.Series([5, 15, 25], index=['b', 'c', 'd'])

result = s1 + s2
print(result)
a     NaN
b    25.0
c    45.0
d     NaN
dtype: float64

예제 (뺄셈)

result = s1 - s2
print(result)
a    NaN
b     5.0
c     5.0
d    NaN
dtype: float64

예제 (곱셈)

result = s1 * s2
print(result)
a      NaN
b    300.0
c    750.0
d      NaN
dtype: float64

예제 (나눗셈)

result = s1 / s2
print(result)
a    NaN
b    1.333333
c    1.2
d    NaN
dtype: float64
  • ‘a’와 ‘d’는 대응되는 값이 없어 NaN(결측치)로 표시됨.

3. 데이터프레임 산술연산

  • 같은 열(column)과 같은 행(index)을 기준으로 연산이 수행됨.
  • 대응되는 값이 없으면 NaN(결측치)로 처리됨.

예제 (덧셈)

df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [10, 20, 30], 'C': [40, 50, 60]})

result = df1 + df2
print(result)
      A   B   C
0  11.0 NaN NaN
1  22.0 NaN NaN
2  33.0 NaN NaN

예제 (뺄셈)

result = df1 - df2
print(result)
      A   B   C
0  -9.0 NaN NaN
1 -18.0 NaN NaN
2 -27.0 NaN NaN

예제 (곱셈)

result = df1 * df2
print(result)
      A   B   C
0  10.0 NaN NaN
1  40.0 NaN NaN
2  90.0 NaN NaN

예제 (나눗셈)

result = df1 / df2
print(result)
      A   B   C
0  0.1 NaN NaN
1  0.1 NaN NaN
2  0.1 NaN NaN
  • ‘B’와 ‘C’ 열은 상대 데이터프레임에 없어서 NaN으로 표시됨.

4. 연산과 결측치

  • 연산 시 NaN(결측치)이 포함되면 결과값도 NaN이 됨.
  • 결측치를 처리하기 위한 메소드 활용 가능.

자주 사용되는 연산 메소드

메소드설명
add()덧셈(+) 수행
sub()뺄셈(-) 수행
mul()곱셈(*) 수행
div()나눗셈(/) 수행
fillna()NaN 값을 특정 값으로 대체
dropna()NaN 값을 포함한 행/열 제거

예제 (fillna 활용)

result = df1.add(df2, fill_value=0)
print(result)
      A    B     C
0  11.0  4.0  40.0
1  22.0  5.0  50.0
2  33.0  6.0  60.0
  • NaN 대신 0을 채워 연산 수행.

5. 브로드캐스팅

  • 차원이 다른 데이터 간 연산을 자동으로 확장하여 수행하는 기능.

5-1. 차원 맞추기

  • 데이터프레임과 시리즈 간 연산 시 자동으로 차원이 맞춰짐.

5-2. 데이터프레임과 시리즈 간 연산

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
s = pd.Series([10, 20, 30])

result = df + s
print(result)
    A   B
0  11  14
1  22  25
2  33  36
  • 시리즈의 값이 각 행(row)에 더해짐.

5-3. 공통 인덱스 존재 시

s = pd.Series([10, 20], index=['A', 'B'])
result = df + s
print(result)
     A   B
0  11  24
1  12  25
2  13  26
  • 공통 인덱스만 연산에 적용됨.

5-4. axis=0 또는 axis='index' 적용

result = df.add(s, axis=0)
print(result)
     A   B
0  11  24
1  12  25
2  13  26
  • axis=0을 지정하면 행(row) 방향으로 브로드캐스팅이 적용됨.

0개의 댓글