[데이터분석] Pandas - Series
2024. 8. 13. 16:03ㆍAI & DS/머신러닝
Series 생성
- pd.Series(data, index = ) → List, Dictionary, Tuple, ndarray 등
- numpy와 다르게 다른 유형(자료형)의 데이터를 다 묶을 수 있음
- pandas는 계산용이 아닌, 분석용이기 때문에 다양한 형태의 데이터 호환이 가능함
상품명 | 초코파이 |
제조사 | 오리온 |
열량 | 171 |
가격 | 5830 |
List 사용
# pd.Series(data)
series = pd.Series(['초코파이', '오리온', 171, 5830])
print(series)
- +) index 설정
series = pd.Series(['초코파이', '오리온', 171, 5830], index = ['상품명', '제조사', '열량', '가격']) print(series)
Tuple 사용
- Tuple 자료형: (data1, data2, data3)
food_info = ('초코파이', '오리온', 171, 5830)
index_name = ('상품명', '제조사', '열량', '가격')
series = pd.Series(food_info, index = index_name)
print(series)
Dictionary 사용
- Dictionary를 사용하는 것이 일반적 : 대응이 되기 때문
- Dictionary 자료형: {key : value}
series = pd.Series({'상품명':'초코파이','제조사':'오리온','열량':171,'가격:5830))
print(series)
Series 속성 확인
obj.index # series 객체의 index 알 수 있음
obj.values # series 객체의 데이터(value)알 수 있음
# 결측치(NaN)확인 -> 같은 형태의 대응되는 series가 나옴
obj.isnull()
obj.notnull()
Series 데이터 선택
obj['제조사'] # index 사용
obj.loc['제조사'] #[문자] loc 사용 # loc: location
obj.iloc[1] #[숫자] iloc: index location
- 피카츄의 속성은 무엇일까? (인덱싱)

value = {'이름':'피카츄','속성':'전기','HP':35, '공격':55, '방어':40}
obj = pd.Series(value)
print(obj)
print("\\nindex 이름 사용")
print(obj['속성'])
print("\\nloc 사용")
print(obj.loc['속성'])
print("\\niloc 사용")
print(obj.iloc[1])
print(obj.iloc[0]) # 피카츄
print(obj.iloc[2]) # 35
print(obj.iloc[3]) # 55
- 피카츄의 HP, 공격, 방어 수치는? (슬라이싱)

print("\\nindex 이름 사용")
print(obj[['HP','공격','방어']])
print("\\nloc 사용 >> index 이름 'HP'부터 '방어'까지 출력")
print(obj.loc['HP':'방어'])
print("\\niloc 사용 >> index 번호 2부터 4까지 출력")
print(obj.iloc[2:5])
Series 연산
- 단일 series 내 연산
obj + 2 # 덧셈 obj -2 # 뺄셈 obj * 2 # 곱셈 obj / 2 # 나눗셈

print("\n피카츄의 HP가 2배 증가")
# 데이터 선택 방법: loc을 사용한 인덱싱
obj['HP'] = obj.loc['HP'] * 2
print(obj)
print("\n피카츄의 공격력과 방어력이 2배 감소")
# 데이터 선택 방법: iloc을 사용한 슬라이싱
obj.iloc[3:5]= obj.iloc[3:5]/2
print(obj)
print("\nHP, 공격, 방어 총합 계산")
# 데이터 선택 방법: loc을 사용한 슬라이싱
# 집계함수 활용
print(obj.loc['HP':'방어'].sum())
print("\nHP(2), 공격, 방어(4) 평균 계산")
# 데이터 선택 방법: iloc을 사용한 슬라이싱
# 집계함수 활용
print(obj.iloc[2:5].mean())
- Series간 연산
- index끼리 매칭되는 값이 없(NaN)는 경우 출력값은 NaN
- 초기에 결측치를 fill_value 로 처리해주는 방법도 가능
- 동일한 index 가진 값끼리 연산
# 덧셈
obj + obj2
obj1.add(obj2, fill_value= )
obj2.add(obj1, fill_value= )
# 뺄셈 - 순서 주의
obj1-obj2
obj1.sub(obj2, fill_value= )
# 곱셈 - 순서 주의
obj1* obj2
obj1.mul(obj2, fill_value= )
obj2.mul(obj1, fill_value= )
# 나눗셈
obj1 / obj2
obj1.div(obj2, fill_value= )

import pandas as pd
import numpy as np
obj1 = pd.Series(['피카츄', 35, 55, 40, np.nan], index = ['이름', 'HP', '공격', '방어', '스피드'])
obj2 = pd.Series({'이름': '파이리', 'HP': 39, '공격': 52, '방어': np.nan, '스피드': 65})
print(obj1)
print(obj2)
print()
obj1_num=obj1.loc['HP':'스피드']
obj2_num=obj2.iloc[1:]
print(obj1_num)
print(obj2_num)
print("\nobj1_num + obj2_num")
print(obj1_num + obj2_num)
print("\nobj1_num.add(obj2_num)")
print(obj1_num.add(obj2_num))
print("\n결측치 30으로 채우기")
print(obj1_num.add(obj2_num, fill_value=30))
'AI & DS > 머신러닝' 카테고리의 다른 글
[데이터분석] 데이터 전처리 - Kaggle API 인증하기 (0) | 2024.08.13 |
---|---|
[데이터분석] Pandas - DataFrame (0) | 2024.08.13 |
[데이터분석] Pandas (0) | 2024.08.13 |
[데이터분석] Numpy배열 - indexing, slicing (0) | 2024.08.13 |
[데이터분석] Numpy배열 - broadcasting (0) | 2024.08.13 |