데이터 분석 입문자를 위한 파이썬 판다스 300제
Series 51~130 문제 연습
https://wikidocs.net/book/4852
# -*- coding: utf-8 -*-
"""Series51-130.ipynb
Automatically generated by Colab.
Original file is located at
https://colab.research.google.com/drive/1ouagvgjFcrJtlrTIIPdpVNn6n6X6DtbM
"""
import pandas as pd
from pandas import Series
import numpy as np
data = [100, 200, 300]
score = Series(data)
print(score)
index = ['철수', '영희', '아름']
score.index = index
print(score)
data = {
'철수':100,
'영희':200,
'아름':300
}
score = Series(data)
print(score)
data = {
'삼성전자':73000,
'셀트리온':356000,
'카카오':367000,
'삼성전자우':68600,
'현대바이오':34150
}
stock = Series(data)
print(stock)
print(stock.index)
print(stock.values)
### 시리즈를 딕셔너리로 변경
print(stock.to_dict())
## 시리즈를 엑셀 파일(data.xlsx)에 저장
stock.to_excel('data.xlsx')
### 위 엑셀에서 첫번 째 라인을 제거
stock.to_excel("data.xlsx", header=False)
pd.read_excel('/content/data.xlsx')
print(stock.dtype)
data = [ 10, "가" ]
s = Series( data )
print(s.dtype)
print(stock.index.dtype)
print(stock.values.dtype)
data = {
"2020-12-11": 73400,
"2020-12-10": 72900,
"2020-12-09": 73900,
"2020-12-08": 71700,
"2020-12-07": 72900
}
s = Series(data)
s.name = "종가"
s.index.name = "날짜"
print(s)
data = {"apple": 1500, "banana": 3000}
s = pd.Series(data)
s.to_dict()
data = {"apple": 1500, "banana": 3000}
s = pd.Series(data)
s
s.index.name = "icecream"
s
s = pd.Series(data=[1, 2, 3])
s.name = 'number'
s
s = pd.Series([1., 2., np.nan])
s
s = pd.Series([1, 2, 3])
a = s.index.to_numpy()
a
# 시리즈 객체 생성
s = pd.Series([1, 2, 3])
# array 속성을 사용하여 시리즈 데이터를 NumPy 배열처럼 접근
s_array = s.array
# 결과 출력
print(s_array)
s = pd.Series(['1', '2', '3'])
s= s.astype('int32')
print(s.dtype)
data = {
'BTC':5000,
'XRP':1,
'ETH':4000
}
s = Series(data, dtype='float')
s
data = [100, 200, 300]
index = ["철수", "영희", "아름"]
s = Series(data, index)
s["영희"]
s.iloc[1]
s.loc["영희"]
print(s["영희"])
# 시리즈에서 100과 200을 시리즈로 출력
print(s.iloc[0:2])
print(s.iloc[ :2])
print(s.loc["철수":"영희"])
print(s[0:2])
print(s[ :2])
print(s["철수":"영희"])
print(s.values[:2])
data = [100, 200, 300, 400, 500, 600]
index = ["08/01", "08/02", "08/03", "08/04", "08/05", "08/06"]
s = Series(data, index)
print(s.iloc[:3].index)
# 시리즈에서 100, 300, 500을 슬라이싱으로 출력
data = [100, 200, 300, 400, 500, 600]
index = ["08/01", "08/02", "08/03", "08/04", "08/05", "08/06"]
s = Series(data, index)
print(s.iloc[::2])
print(s.loc["08/01":"08/06":1])
print(s[ : :2])
print(s.loc["08/01":"08/06":])
print(s["08/01":"08/06":2])
print(s.iloc[[0, 2, 4]])
# print(s.iloc<a class="wiki_link" data-title="08/01", "08/03", "08/05" data-wiki="/page/wiki/08/01", "08/03", "08/05" href="javascript:void(0)">08/01", "08/03", "08/05</a>)
data = [100, 200, 300]
index = ["철수", "영희", "아름"]
s = Series(data, index)
s["순이"] = 400
s
# s = s.drop("철수")
# s = s.iloc[1:]
s = s.loc['영희':]
s
data = [100, 200, 300]
index = ["철수", "영희", "아름"]
s = Series(data, index)
s.drop("철수", inplace=True)
s
data = {
"삼성전자": "전기,전자",
"LG전자": "전기,전자",
"현대차": "운수장비",
"NAVER": "서비스업",
"카카오": "서비스업"
}
s = Series(data)
s.unique()
s = pd.Series(
data = [9000, 9000, 8000, 9000, 10000],
index = ['김과장', '이대리', '박전무', '이대리', '이대리']
)
s.index.unique()
s.value_counts()
s.index.value_counts()
data = {
"삼성전자": "전기,전자",
"LG전자": "전기,전자",
"현대차": "운수장비",
"NAVER": "서비스업",
"카카오": "서비스업"
}
s = Series(data)
s.value_counts()
data = {
"매출액": 300,
"PER": np.nan,
"PBR": 2.0,
}
s = Series(data)
s
data = [100, 300, 200]
index = ["08/01", "08/02", "08/03"]
s = Series(data, index)
s = s.iloc[[0,2,1]]
s
data = np.random.randint(10, size=4)
s = Series(data)
s
s.sort_values(ascending=False)
s.sort_values()
s = Series(np.random.randint(10, size=4), ["b", "c", "a", "d"])
s
s.sort_index()
data = [100, 300, 200]
s = Series(data)
print(s ** 4)
data = [100, 300, 200]
s0 = Series(data, ["a", "b", "c"])
s1 = Series(data, ["a", "c", "b"])
print(s0 + s1)
high = Series(data=[51500, 51200, 52500], index=["5/1", "5/2", "5/3"])
low = Series(data=[50700, 50500, 50500], index=["5/1", "5/2", "5/4"])
diff = high - low
print(diff)
# 시리즈에서 52000보다 작은 값을 출력
s = Series(data=[51500, 51200, 52500], index=["5/1", "5/2", "5/3"])
print(s[s < 52000])
print(s.loc['5/2':])
print(s[(51400 <= s) & (s <=53000)])
# 52000원 이하였던 날 필터링
days_below_52000 = s[s <= 52000]
# 결과 출력
print(f"가격이 52000원 이하였던 날은 {len(days_below_52000)}일입니다.")
data = {
"2020-12-11": 73400,
"2020-12-10": 72900,
"2020-12-09": 73900,
"2020-12-08": 71700,
"2020-12-07": 72900
}
s = Series(data)
# 삼성전자의 종가 시리즈를 사용해서 종가의 합
print(s.sum())
print(s.mean())
print(s.min())
print(s.max())
# 삼성전자의 종가 데이터로 일별 상승률을 시리즈로 출력
# print(s / s.shift(1) - 1)
print(s.pct_change())
# 일별 수익률을 배(ratio)율로 표현한 데이터입니다. 각 거래일의 수익률을 모두 곱한 값
data = {
"2020-12-11": 1.01,
"2020-12-10": 0.99,
"2020-12-09": 1.03,
"2020-12-08": 1.02,
"2020-12-07": 1
}
s = Series(data)
print(s.product())
data = [1, 2, 3, 4, np.nan]
s = Series(data=data)
# null이 아닌 값의 개수
print(s.count())
print(s.isna())
data = ["100", "200", "300"]
index = ["철수", "영희", "아름"]
s = Series(data, index)
s = s.astype(np.int32)
s
data = ["100,000", "200,000", "300,000"]
index = ["철수", "영희", "아름"]
s = Series(data, index)
# str.replace 함수를 사용하여 컴마를 제거한 후 데이터를 'int32' 타입으로 변환
s1 = s.str.replace(',','')
s1.astype(np.int32)
# 시리즈에 정의된 replace 메서드를 사용할 수도 있습니다. 이는 문자열의 replace와 이름만 같은 메서드로 regex 옵션을 추가
s1 = s.replace(',', '', regex=True)
s1.astype("int32")
# values에서 '세'라는 문자열을 제거한 후 데이터를 'int32' 타입으로 변환
s = pd.Series(["30세", "40세", "50세"], index=["김대리", "이과장", "박차장"])
s1 = s.str.replace('세', '')
s1 = s1.astype('int32')
s1
s2 = s.replace('세', '', regex=True)
s2 = s1.astype(np.int32)
s2
s = pd.Series([1, 2, 3, 4], index=["d", "c", "a", "b"])
s
# 인덱스를 ['a', 'b', 'c', 'd']로 재정렬
s.sort_index()
# 인덱스를 월-일 형태(년도 제거)로 변경하세요.
s = pd.Series([1, 2, 3], index=['2023-01-01', '2023-01-02', '2023-01-03'])
s.index = s.index.str[5:]
s
# 인덱스를 datetime(Timestamp) 타입으로 변경
s = pd.Series([1, 2, 3], index=['2023-01-01', '2023-01-02', '2023-01-03'])
s
s.index = pd.to_datetime(s.index)
s
# NaN 값을 제거
s = pd.Series([1, 2, 3, np.nan])
s.dropna(inplace=True)
s
s = pd.Series(["1,234", "5,678", "9,876"])
# map 메서드를 사용하여 콤마 제거
s_no_comma = s.map(lambda x: x.replace(',', ''))
# 결과 출력
print(s_no_comma)
s = pd.Series([10, 100, 1000])
print(s.apply(np.log10))
data = [1, 2, 3, 4, np.nan]
s = Series(data=data)
s.dropna(inplace=True)
s
# 값이 큰 3개를 출력
data = range(1, 11)
s = Series(data=data)
print(s.nlargest(3))
# 값이 작은 3개를 출력
print(s.nsmallest(3))
# 연도만 출력하세요.
data = pd.to_datetime( ['20200101', '20210101', '20220101'] )
s = pd.Series( data)
s.dt.year
# '일'만 출력
s.dt.day
# 인덱스에서 연도만 출력
index = pd.to_datetime( ['20200101', '20210101', '20220101'] )
data = [100, 200, 300]
s = pd.Series(data=data, index=index)
s.index.year
# 시리즈의 인덱스를 다음 포맷의 문자열로 변경하세요.
# 2020-01-01 00:00:00 100
# 2021-01-01 00:00:00 200
# 2022-01-01 00:00:00 300
# dtype: int64
s.index = s.index.strftime("%Y-%m-%d 00:00:00")
s
# ';'로 구분된 문자열로 생성
s = pd.Series(["000020", "000040", "005930"])
s.str.cat(sep=';')
# ";".join(s)
# 종목 코드에 'A'를 추가
print('A' + s)
# 시리즈 객체는 각 값에서 leading zero가 모두 제가된 상태입니다. 이를 다시 원래 종목 코드로 변환
s = pd.Series(["20", "40", "5930"])
s.str.zfill(6)
'AI > python' 카테고리의 다른 글
numpy 1~50 문제 연습 (0) | 2024.10.24 |
---|---|
파이썬(Python) 클래스 요약 (7) | 2024.10.17 |