# 데이터 연산
- 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
'Python' 카테고리의 다른 글
[Python] 환경변수를 사용하여 데이터 수집하기 (0) | 2024.02.01 |
---|---|
[Python] Requests와 BeautifulSoup를 활용한 크롤링 (2) | 2024.01.31 |
[Pandas] 구조적 데이터 생성하기 (0) | 2024.01.17 |
[NumPy] NumPy 조건문 (0) | 2024.01.17 |
[NumPy] 배열의 인덱싱과 슬라이싱 (0) | 2024.01.17 |