시리즈 객체의 값을 수정, 추가, 삭제해보자. 시리즈의 수정은 loc 혹은 iloc로 특정 위치에 접근한 뒤 변경할 값을 넣어주면 된다.
코드
from pandas import Series
data = [1000, 2000, 3000]
index = ["메로나", "구구콘", "하겐다즈"]
s = Series(data=data, index=index)
s.loc['메로나'] = 500
print(s)
실행 결과
메로나 500
구구콘 2000
하겐다즈 3000
dtype: int64
코드
s.iloc[0] = 500
s['메로나'] = 500
코드
s.iloc[0] = 500
s['메로나'] = 500
s.loc['비비빅'] = 500
print(s)
실행 결과
메로나 500
구구콘 2000
하겐다즈 3000
비비빅 500
dtype: int64
코드
print(s.drop('메로나'))
print(s.drop(0)) #에러
실행 결과
구구콘 2000
하겐다즈 3000
비비빅 500
dtype: int64
에러문 출력
코드
s = s.drop('메로나')
print(s)
실행 결과
구구콘 2000
하겐다즈 3000
비비빅 500
dtype: int64
시리즈는 넘파이와 동일하게 브로드캐스팅이 적용되며, 같은 인덱스를 갖는 데이터끼리 연산을 수행한다.
코드
from pandas import Series
철수 = Series([10, 20, 30], index=['NAVER', 'SKT', 'KT'])
영희 = Series([10, 30, 20], index=['SKT', 'KT', 'NAVER'])
가족 = 철수 + 영희
print(가족)
실행 결과
KT 60
NAVER 30
SKT 30
dtype: int64
라인 3: 철수의 주식 종목 보유 현황을 시리즈 객체로 표현한다.
라인 4: 영희의 주식 종목 보유 현황을 시리즈 객체로 표현힌다.
라인 5: 두 시리즈 객체를 더한다.
코드
print(철수 * 10)
실행 결과
NAVER 100
SKT 200
KT 300
dtype: int64
코드
high = Series([42800, 42700, 42050, 42950, 43000])
low = Series([42150, 42150, 41300, 42150, 42350])
diff = high - low
print(diff)
실행 결과
0 650
1 550
2 750
3 800
4 650
dtype: int64
코드
print(diff.max())
실행 결과
800
min 사용 결과
550
코드
date = ["6/1", "6/2", "6/3", "6/4", "6/5"]
high = Series([42800, 42700, 42050, 42950, 43000], index=date)
low = Series([42150, 42150, 41300, 42150, 42350] , index=date)
diff = high - low
print(diff)
실행 결과
6/1 650
6/2 550
6/3 750
6/4 800
6/5 650
dtype: int64
코드
max_idx = 0
max_val = 0
for i in range(len(diff)):
if diff[i] > max_val:
max_val = diff[i]
max_idx = i
print(max_idx)
print(diff.index[max_idx])
실행 결과
3
6/4
<ipython-input-21-207228244103>:5: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`
if diff[i] > max_val:
<ipython-input-21-207228244103>:6: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`
max_val = diff[i]
코드
print(diff.idxmax())
print(diff.idxmin())
실행 결과
6/4
6/2
코드
date = ["6/1", "6/2", "6/3", "6/4", "6/5"]
high = Series([42800, 42700, 42050, 42950, 43000], index=date)
low = Series([42150, 42150, 41300, 42150, 42350] , index=date)
profit = high / low
print(profit)
실행 결과
6/1 1.015421
6/2 1.013049
6/3 1.018160
6/4 1.018980
6/5 1.015348
dtype: float64
코드
print( profit.cumprod( ) )
실행 결과
6/1 1.015421
6/2 1.028671
6/3 1.047351
6/4 1.067230
6/5 1.083610
dtype: float64
코드
print( profit.cumprod( ).iloc[ -1 ] )
실행 결과
1.0836101509172456
코드
data = {
"삼성전자": "전기,전자",
"LG전자": "전기,전자",
"현대차": "운수장비",
"NAVER": "서비스업",
"카카오": "서비스업"
}
s = Series(data)
코드
print(s.unique())
실행 결과
['전기,전자' '운수장비' '서비스업']
unique 메서드는 다음과 같이 시리즈의 values 중 유일한 값들을 ndarray로 반환합니다.
코드
s.value_counts()
실행 결과
