In [3]:
#-*- coding: utf-8 -*-
import pandas as pd
import pandas_datareader.data as web
import datetime

In [4]:
def get_file_path(code):
    return "../data/" + code

In [5]:
def download(code, year1, month1, day1, year2, month2, day2):
    start = datetime.datetime(year1, month1, day1)
    end = datetime.datetime(year2, month2, day2)
    df = web.DataReader("%s.KS" % code, "yahoo", start, end)
    df.to_pickle(get_file_path(code))
    
    return df

In [6]:
def load(code):
    df = pd.read_pickle(get_file_path(code))
    return df

In [7]:
df = download("005930", 2016, 1, 1, 2016, 11, 1)

In [62]:
#Moving Average
def EMA(m_Df, m_N, m_ColumnName='Close'):
    if m_ColumnName in m_Df.columns:
        m_Df["MA" + str(m_N)] = pd.Series.rolling(m_Df[m_ColumnName], window=m_N, center=False).mean()
    else:
        raise("You didn't input a Column Name")
    
    return m_Df

In [63]:
EMA(df, 5)


Out[63]:
Open High Low Close Volume Adj Close MA 5MA MA5
Date
2016-01-01 1260000.0 1260000.0 1260000.0 1260000.0 0 1259099.38 NaN NaN NaN
2016-01-04 1260000.0 1260000.0 1205000.0 1205000.0 306900 1204138.69 NaN NaN NaN
2016-01-05 1202000.0 1218000.0 1186000.0 1208000.0 216000 1207136.55 NaN NaN NaN
2016-01-06 1208000.0 1208000.0 1168000.0 1175000.0 366700 1174160.13 NaN NaN NaN
2016-01-07 1166000.0 1183000.0 1151000.0 1163000.0 282300 1162168.71 1202200.0 1202200.0 1202200.0
2016-01-08 1163000.0 1186000.0 1163000.0 1171000.0 257700 1170162.99 1184400.0 1184400.0 1184400.0
2016-01-11 1156000.0 1166000.0 1146000.0 1152000.0 241200 1151176.57 1173800.0 1173800.0 1173800.0
2016-01-12 1148000.0 1166000.0 1144000.0 1146000.0 206200 1145180.86 1161400.0 1161400.0 1161400.0
2016-01-13 1153000.0 1159000.0 1148000.0 1148000.0 143300 1147179.43 1156000.0 1156000.0 1156000.0
2016-01-14 1131000.0 1142000.0 1131000.0 1138000.0 209000 1137186.58 1151000.0 1151000.0 1151000.0
2016-01-15 1140000.0 1152000.0 1124000.0 1132000.0 209400 1131190.87 1143200.0 1143200.0 1143200.0
2016-01-18 1088000.0 1133000.0 1088000.0 1126000.0 320200 1125195.16 1138000.0 1138000.0 1138000.0
2016-01-19 1128000.0 1171000.0 1128000.0 1171000.0 207200 1170162.99 1143000.0 1143000.0 1143000.0
2016-01-20 1160000.0 1160000.0 1132000.0 1138000.0 167000 1137186.58 1141000.0 1141000.0 1141000.0
2016-01-21 1133000.0 1155000.0 1125000.0 1131000.0 190300 1130191.59 1139600.0 1139600.0 1139600.0
2016-01-22 1145000.0 1168000.0 1145000.0 1168000.0 147500 1167165.14 1146800.0 1146800.0 1146800.0
2016-01-25 1172000.0 1176000.0 1156000.0 1162000.0 159900 1161169.43 1154000.0 1154000.0 1154000.0
2016-01-26 1155000.0 1157000.0 1136000.0 1137000.0 152300 1136187.30 1147200.0 1147200.0 1147200.0
2016-01-27 1126000.0 1175000.0 1126000.0 1175000.0 276200 1174160.13 1154600.0 1154600.0 1154600.0
2016-01-28 1164000.0 1168000.0 1139000.0 1145000.0 315900 1144181.58 1157400.0 1157400.0 1157400.0
2016-01-29 1140000.0 1150000.0 1116000.0 1150000.0 436900 1149178.00 1153800.0 1153800.0 1153800.0
2016-02-01 1152000.0 1163000.0 1151000.0 1163000.0 259900 1162168.71 1154000.0 1154000.0 1154000.0
2016-02-02 1161000.0 1166000.0 1147000.0 1156000.0 166300 1155173.72 1157800.0 1157800.0 1157800.0
2016-02-03 1150000.0 1152000.0 1137000.0 1146000.0 174500 1145180.86 1152000.0 1152000.0 1152000.0
2016-02-04 1150000.0 1161000.0 1148000.0 1156000.0 247900 1155173.72 1154200.0 1154200.0 1154200.0
2016-02-05 1156000.0 1169000.0 1156000.0 1164000.0 188000 1163168.00 1157000.0 1157000.0 1157000.0
2016-02-08 1164000.0 1164000.0 1164000.0 1164000.0 0 1163168.00 1157200.0 1157200.0 1157200.0
2016-02-09 1164000.0 1164000.0 1164000.0 1164000.0 0 1163168.00 1158800.0 1158800.0 1158800.0
2016-02-10 1164000.0 1164000.0 1164000.0 1164000.0 0 1163168.00 1162400.0 1162400.0 1162400.0
2016-02-11 1118000.0 1137000.0 1118000.0 1130000.0 305200 1129192.30 1157200.0 1157200.0 1157200.0
... ... ... ... ... ... ... ... ... ...
2016-09-21 1595000.0 1601000.0 1576000.0 1592000.0 210100 1592000.00 1557800.0 1557800.0 1557800.0
2016-09-22 1600000.0 1641000.0 1599000.0 1618000.0 228500 1618000.00 1576000.0 1576000.0 1576000.0
2016-09-23 1582000.0 1598000.0 1566000.0 1571000.0 365900 1571000.00 1584800.0 1584800.0 1584800.0
2016-09-26 1571000.0 1596000.0 1564000.0 1568000.0 290400 1568000.00 1586800.0 1586800.0 1586800.0
2016-09-27 1550000.0 1575000.0 1533000.0 1569000.0 196600 1569000.00 1583600.0 1583600.0 1583600.0
2016-09-28 1554000.0 1573000.0 1554000.0 1567000.0 174100 1567000.00 1578600.0 1578600.0 1578600.0
2016-09-29 1573000.0 1619000.0 1572000.0 1600000.0 227900 1600000.00 1575000.0 1575000.0 1575000.0
2016-09-30 1590000.0 1615000.0 1585000.0 1598000.0 235200 1598000.00 1580400.0 1580400.0 1580400.0
2016-10-03 1598000.0 1598000.0 1598000.0 1598000.0 0 1598000.00 1586400.0 1586400.0 1586400.0
2016-10-04 1610000.0 1624000.0 1606000.0 1614000.0 261000 1614000.00 1595400.0 1595400.0 1595400.0
2016-10-05 1601000.0 1626000.0 1597000.0 1619000.0 249400 1619000.00 1605800.0 1605800.0 1605800.0
2016-10-06 1696000.0 1700000.0 1667000.0 1691000.0 591100 1691000.00 1624000.0 1624000.0 1624000.0
2016-10-07 1700000.0 1716000.0 1690000.0 1706000.0 521000 1706000.00 1645600.0 1645600.0 1645600.0
2016-10-10 1650000.0 1689000.0 1628000.0 1680000.0 505800 1680000.00 1662000.0 1662000.0 1662000.0
2016-10-11 1600000.0 1625000.0 1545000.0 1545000.0 768500 1545000.00 1648200.0 1648200.0 1648200.0
2016-10-12 1495000.0 1545000.0 1494000.0 1535000.0 781700 1535000.00 1631400.0 1631400.0 1631400.0
2016-10-13 1550000.0 1581000.0 1545000.0 1557000.0 437200 1557000.00 1604600.0 1604600.0 1604600.0
2016-10-14 1548000.0 1588000.0 1547000.0 1577000.0 283100 1577000.00 1578800.0 1578800.0 1578800.0
2016-10-17 1565000.0 1602000.0 1538000.0 1590000.0 255700 1590000.00 1560800.0 1560800.0 1560800.0
2016-10-18 1572000.0 1595000.0 1572000.0 1589000.0 207600 1589000.00 1569600.0 1569600.0 1569600.0
2016-10-19 1579000.0 1643000.0 1575000.0 1625000.0 308800 1625000.00 1587600.0 1587600.0 1587600.0
2016-10-20 1626000.0 1651000.0 1609000.0 1620000.0 206600 1620000.00 1600200.0 1600200.0 1600200.0
2016-10-21 1606000.0 1613000.0 1588000.0 1589000.0 209500 1589000.00 1602600.0 1602600.0 1602600.0
2016-10-24 1593000.0 1608000.0 1590000.0 1608000.0 185700 1608000.00 1606200.0 1606200.0 1606200.0
2016-10-25 1600000.0 1604000.0 1592000.0 1597000.0 197300 1597000.00 1607800.0 1607800.0 1607800.0
2016-10-26 1597000.0 1599000.0 1562000.0 1567000.0 210600 1567000.00 1596200.0 1596200.0 1596200.0
2016-10-27 1571000.0 1617000.0 1556000.0 1573000.0 282300 1573000.00 1586800.0 1586800.0 1586800.0
2016-10-28 1580000.0 1614000.0 1580000.0 1614000.0 204200 1614000.00 1591800.0 1591800.0 1591800.0
2016-10-31 1616000.0 1639000.0 1611000.0 1639000.0 241300 1639000.00 1598000.0 1598000.0 1598000.0
2016-11-01 1630000.0 1652000.0 1612000.0 1652000.0 206900 1652000.00 1609000.0 1609000.0 1609000.0

218 rows × 9 columns


In [ ]: