Python

[Pandas] 데이터 연산

주댕이 2024. 1. 17. 17:11

# 데이터 연산

  • pandas의 Series()와 DataFrame()으로 생성한 데이터끼리는 사칙 연산을 할 수 있다.
import pandas as pd

s1 = pd.Series([1, 2, 3, 4, 5])
s2 = pd.Series([10, 20, 30, 40, 50])
s1 + s2
# 0    11
# 1    22
# 2    33
# 3    44
# 4    55
# dtype: int64
s2 - s1
# 0     9
# 1    18
# 2    27
# 3    36
# 4    45
# dtype: int64
s1 * s2
# 0     10
# 1     40
# 2     90
# 3    160
# 4    250
# dtype: int64
s1 / s2
# 0    0.1
# 1    0.1
# 2    0.1
# 3    0.1
# 4    0.1
# dtype: float64

 

  • 파이썬의 리스트나 NumPy의 배열과 달리, pandas의 데이터끼리는 서로 크기가 달라도 연산할 수 있다.
    • 연산을 할 수 있는 항목만 연산을 수행하고, 연산할 수 없는 부분은 NaN으로 표시한다.
s3 = pd.Series([1, 2, 3, 4])
s4 = pd.Series([10, 20, 30, 40, 50])
s3 + s4
# 0    11.0
# 1    22.0
# 2    33.0
# 3    44.0
# 4     NaN
# dtype: float64
s4 - s3
# 0     9.0
# 1    18.0
# 2    27.0
# 3    36.0
# 4     NaN
# dtype: float64
s3 * s4
# 0     10.0
# 1     40.0
# 2     90.0
# 3    160.0
# 4      NaN
# dtype: float64
s3 / s4
# 0    0.1
# 1    0.1
# 2    0.1
# 3    0.1
# 4    NaN
# dtype: float64

 

  • DataFrame()으로 생성한 DataFrame 데이터끼리도 사칙 연산을 할 수 있다.
# DataFrame 데이터 생성
table_data1 = {'A': [1, 2, 3, 4, 5],
              'B': [10, 20, 30, 40, 50],
              'C': [100, 200, 300, 400, 500]}
df1 = pd.DataFrame(table_data1)
df1

table_data2 = {'A': [6, 7, 8],
              'B': [60, 70, 80],
              'C': [600, 700, 800]}
df2 = pd.DataFrame(table_data2)
df2

df1 + df2

df1 - df2

df1 * df2

df1 / df2

 

  • pandas에는 데이터의 통계 분석을 위한 다양한 메서드가 있어서 데이터의 총합, 평균, 표준 편차 등을 쉽게 구할 수 있다.
# DataFrame 데이터 생성
table_data3 = {'봄':  [256.5, 264.3, 215.9, 223.2, 312.8],
              '여름': [770.6, 567.5, 599.8, 387.1, 446.2],
              '가을': [363.5, 231.2, 293.1, 247.7, 381.6],
              '겨울': [139.3, 59.9, 76.9, 109.1, 108.1]}
columns_list = ['봄', '여름', '가을', '겨울']
index_list = ['2012', '2013', '2014', '2015', '2016']

df3 = pd.DataFrame(table_data3, columns = columns_list, index = index_list)
df3

# 평균
df3.mean()
# 봄     254.54
# 여름    554.24
# 가을    303.42
# 겨울     98.66
# dtype: float64
# 최댓값
df3.max()
# 봄     312.8
# 여름    770.6
# 가을    381.6
# 겨울    139.3
# dtype: float64
# 최솟값
df3.min()
# 봄     215.9
# 여름    387.1
# 가을    231.2
# 겨울     59.9
# dtype: float64
# 표준 편차
df3.std()
# 봄      38.628267
# 여름    148.888895
# 가을     67.358496
# 겨울     30.925523
# dtype: float64

 

  • 연산의 방향을 설정하기 위해 axis 인자를 추가할 수 있다: axis = 0(default)이면 열별로 연산을 수행하고, axis=1이면 행별로 연산을 수행한다.
df3.mean(axis=1)
# 2012    382.475
# 2013    280.725
# 2014    296.425
# 2015    241.775
# 2016    312.175
# dtype: float64
df3.std(axis=1)
# 2012    274.472128
# 2013    211.128782
# 2014    221.150739
# 2015    114.166760
# 2016    146.548658
# dtype: float64

 

  • 기술통계 나타내기
df3.describe()

728x90