본문 바로가기

AI/python

Series 51~130 문제 연습

데이터 분석 입문자를 위한 파이썬 판다스 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)

 

Series51-130.ipynb
0.09MB

'AI > python' 카테고리의 다른 글

numpy 1~50 문제 연습  (0) 2024.10.24
파이썬(Python) 클래스 요약  (7) 2024.10.17