Python Basics for Data Science - PART 5

Python Basics for Data Science - PART 5

( 파이낸스 데이터 사이언스를 위한 파이썬 언어 기초 )

날짜와 시간, 통계, 파일 입출력

2017 FinanceData http://fb.com/financedata

날짜와 시간

현재 시간을 얻거나, 문자열을 datetime값으로, datetime값을 문자열로 바꾸기

In [6]:
# 도움말

datetime.strptime?
In [15]:
# 현재 시간
from datetime import datetime
now = datetime.now() 

print (now)
2017-06-17 00:44:41.634723
In [16]:
# 현재 시간과 날짜 포맷팅
from datetime import datetime
now = datetime.now()

print (now)
print (now.year, now.month, now.day, now.hour, now.minute)
print ("%d-%02d-%02d" % (now.year, now.month, now.day))
print ("{:d}-{:02d}-{:02d}".format(now.year, now.month, now.day))
2017-06-17 00:45:07.870129
2017 6 17 0 45
2017-06-17
2017-06-17
In [18]:
# 문자열을 시간으로 strptime()
s = "2017년 3월 10일 11:00"
dt = datetime.strptime(s, "%Y년 %m월 %d일 %H:%M")
print(dt)

# 시간을 문자열로  strftime()
print( now.strftime("%Y-%m-%d") )
print( now.strftime("%Y-%m-%d %H:%M:%S") )
2017-03-10 11:00:00
2017-06-17
2017-06-17 00:45:07

통계 (Statistics)

리스트 데이터의 개수, 합계, 최대, 최소

https://docs.python.org/3/library/functions.html 기본 내장 함수(Built-in Function)들

In [19]:
# 요약 통계량

data = [0.13, -0.05, 0.15, 0.11, 0.15, -0.07, 0.25, 0.28, -0.14, -0.08 ]
print( 'count = ', len(data) )
print( 'sum = ', sum(data) )
print( 'max = ', max(data) )
print( 'min = ', min(data) )
count =  10
sum =  0.73
max =  0.28
min =  -0.14
In [20]:
data = [0.13, -0.05, 0.15, 0.11, 0.15, -0.07, 0.25, 0.28, -0.14, -0.08 ]

avg = sum(data) / len(data)

print( "평균 수익률 = {:.1f}".format(avg * 100) )
평균 수익률 = 7.3
In [21]:
# 분산과 표준편차
data = [0.13, -0.05, 0.15, 0.11, 0.15, -0.07, 0.25, 0.28, -0.14, -0.08 ]

def ret_variance(data):
    avg = sum(data) / len(data)
    var_sum = 0
    for val in data:
        var_sum += (val - avg) ** 2
    return var_sum / len(data)

def red_std_dev(variance):
    return variance ** 0.5

# 분산(variance)은 편차 제곱의 평균
var = ret_variance(data)
print ("분산(variance) = {:.2f}".format(var))

# 표준편차(SD, standard deviation): 분산(variance)의 제곱근
sd = red_std_dev(var)
print ("표준편차(standard deviation) = {:.2f}".format(sd))
분산(variance) = 0.02
표준편차(standard deviation) = 0.14

파일 입출력

In [23]:
# 쓰기
my_list = [i**2 for i in range(1,11)]

fn = "output.txt"
with open(fn, "w") as f:
    f.write(str(my_list))
In [24]:
# 읽기
fn = "output.txt"
with open(fn, "r") as f:
    contents = f.read()
    
print(contents)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

댓글