중간 발표


수고하셨습니다.

  1. Storytelling
  2. TmaxOS
  3. 자기 학습

1. 류재혁

OAuth2.0


In [8]:
import onedrivesdk
import json
from onedrivesdk.helpers import GetAuthCodeServer
from pprint import pprint

In [21]:
redirect_uri = "http://localhost:8080/"

In [14]:
# Load Onenote API Client
with open('onenote.json') as data_file:
    data = json.load(data_file)

pprint(data)


{'client_id': '000000004C18DF1B',
 'client_secret': 'HOSnQUbU8AjgvEOim89uWw0L9yLnlnom'}

In [15]:
client = onedrivesdk.get_default_client(client_id=data['client_id'],
                                        scopes=['wl.signin',
                                                'wl.offline_access',
                                                'onedrive.readwrite'])

In [22]:
auth_url = client.auth_provider.get_auth_url(redirect_uri)
auth_url


Out[22]:
'https://login.live.com/oauth20_authorize.srf?client_id=000000004C18DF1B&scope=wl.signin+wl.offline_access+onedrive.readwrite&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F'

In [23]:
code = GetAuthCodeServer.get_auth_code(auth_url, redirect_uri)


127.0.0.1 - - [29/Apr/2016 21:44:47] "GET /?code=M2f088a96-3ae6-74e2-d949-335117865ec0 HTTP/1.1" 200 -

In [25]:
client.auth_provider.authenticate(code, redirect_uri, data['client_secret'])

In [62]:
collection = client.item(drive="me", id="root").children.request().get()
dat = client.item(drive="me", id= collection[0].id).children.get()
dat[0].name


Out[62]:
'data_scientist.txt'

In [63]:
print(dat[0].name)
print(dat[1].name)


data_scientist.txt
data_scientist_is_a_storyteller.docx

In [58]:
client.item(drive="me", id=dat[0].id).download("./download_from_onenote.txt")

In [64]:
client.item(drive="me", id=dat[1].id).download("./download_from_onenote1.txt")

In [59]:
file = open('download_from_onenote.txt', 'rb')
file.read()


Out[59]:
b'Why Data Scientist need to be good Data Storytellers?\r\n14 Oct 2015\r\n\r\nsource: https://www.dezyre.com/article/why-data-scientists-need-to-be-good-data-storytellers/174\r\n\r\nStorytelling is data with a soul.'

In [65]:
file = open('download_from_onenote1.txt', 'rb')
file.read()


Out[65]:
b'PK\x03\x04\x14\x00\x06\x00\x08\x00\xa2b\x9dHRZ>\x86L\x01\x00\x00\x1a\x05\x00\x00\x13\x00\x00\x00[Content_Types].xml\xb5\x94MN\xc30\x10\x85\xafby[%nY \x84\x9av\x01l\xa1\x12\xbd\x80\xebLR\x0b\xc7\xb6\xec\xe9\xdf\xd9Xp$\xae\xc0$i#\x84J\x83h\xbb\x89\x94\xcc\xbc\xf7\xbd\xb12\xfe|\xff\x18O\xb7\x95ak\x08Q;\x9b\xf1Q:\xe4\x0c\xacr\xb9\xb6e\xc6WX$w|:\x19\xcfw\x1e"\xa3V\x1b3\xbeD\xf4\xf7BD\xb5\x84J\xc6\xd4y\xb0T)\\\xa8$\xd2k(\x85\x97\xeaM\x96 n\x86\xc3[\xa1\x9cE\xb0\x98`\xed\xc1\'\xe3G(\xe4\xca {\xda\xd2\xe7\x16\x1b\xc0D\xce\x1e\xda\xc6\x9a\x95q\xe9\xbd\xd1J"\xd5\xc5\xda\xe6?(\xc9\x9e\x90\x92\xb2\xe9\x89K\xed\xe3\x80\x1a8\x13G\x11M\xe9W\xc2A\xf8B\'\x11t\x0el&\x03>\xcb\x8a\xda\xc4\xc6\x85\\\xe4N\xad*\x92\xa6\xa7}\x8e$uE\xa1\x15t\xfa\xda\xcd\x07\xa7 F:\xe2\xca\xa4]\xa5\x92\xda\x0ez\x83D\xdc\x19\x88\x97\x8f\xd1\xfa\xfe\x81\x0f\x88\xa4\xb8F\x82\xbds\x7f\x86\r,^\xaf\x16\xe3\x9by\x7f\x92\x82\xc0s\xb90p\xf9\x1c\x9du\x7f\n\xa4E\x84\xf69:;Hcs\x92I\xad\xb3\xe0|\xa4\xcd\x0e\xff\x18\xfc\xb0\xba\xb5:\xa1\x91=\x04\xd4=\xbf^\x87$\xef\xb3\'\x84\xfaV\xc8!?\x06\x17\xcdM7\xf9\x02PK\x03\x04\x14\x00\x06\x00\x08\x00\x00\x00!\x00\x1e\x91\x1a\xb7\xef\x00\x00\x00N\x02\x00\x00\x0b\x00\x00\x00_rels/.rels\xac\x92\xc1j\xc30\x0c@\xef\x83\xfd\x83\xd1\xbdQ\xda\xc1\x18\xa3N/c\xd0\xdb\x18\xd9\x07\x08[IL\x13\xdb\xd8j\xd7\xfe\xfd<\xd8\xd8\x02]\xe9aG\xcb\xd2\xd3\x93\xd0zs\x9cFu\xe0\x94]\xf0\x1a\x96U\r\x8a\xbd\t\xd6\xf9^\xc3[\xfb\xbcx\x00\x95\x85\xbc\xa51x\xd6p\xe2\x0c\x9b\xe6\xf6f\xfd\xca#I)\xca\x83\x8bY\x15\x8a\xcf\x1a\x06\x91\xf8\x88\x98\xcd\xc0\x13\xe5*D\xf6\xe5\xa7\x0bi")\xcf\xd4c$\xb3\xa3\x9eqU\xd7\xf7\x98~3\xa0\x991\xd5\xd6jH[{\x07\xaa=E\xbe\x86\x1d\xba\xce\x19~\nf?\xb1\x973-\x90\x8f\xc2\xde\xb2]\xc4T\xea\x93\xb82\x8dj)\xf5,\x1al0/%\x9c\x91b\xac\n\x1a\xf0\xbc\xd1\xeaz\xa3\xbf\xa7\xc5\x89\x85,\t\xa1\t\x89/\xfb|f\\\x12Z\xfe\xe7\x8a\xe6\x19?6\xef!Y\xb4_\xe1o\x1b\x9c]A\xf3\x01\x00\x00\xff\xff\x03\x00PK\x03\x04\x14\x00\x06\x00\x08\x00\xa2b\x9dHv\x91o\xe84\x01\x00\x00\x9d\x02\x00\x00\x10\x00\x00\x00docProps/app.xml\xad\x92Mn\xc3 \x10\x85\xaf\x82\xd8\'\x90.\xaa\xca\xb2\x89\xaad\xd1E\xff\xa4\xa4\xe9\x1a\xc18F\xc5\x80\x80D\xf1\xd9\xba\xe8\x91z\x85\x82\xdd\xc4\xae\xba\xab\xba\xe4\xcd7\x8f\x99\xa7\xf9|\xff(\x97\xa7V\xa3#\xf8\xa0\xac\xa9\xf0bN1\x02#\xacTf_\xe1C\xacg7\x18\x85\xc8\x8d\xe4\xda\x1a\xa8p\x07\x01/Y\xc9]\xf1\xec\xad\x03\x1f\x15\x04\x94<L\xa8p\x13\xa3+\x08\t\xa2\x81\x96\x87y*\x9bT\xa9\xadoyLO\xbf\'\xb6\xae\x95\x80\xb5\x15\x87\x16L$W\x94^\x138E0\x12\xe4\xcc]\x0c\xf1\xe0X\x1c\xe3_M\xa5\x15y\xbe\xb0\xdbvn\xf4\xe3\xee?\x87\xecS\xd8B\xeb4\x8f\xc0\x1e\xb3\x83.\xc9T\xcb\xc0\xadsZ\t\x1eS\xbe\xecA\to\x83\xad#z\xea\xff@\xaf\xd6\xcb\xbeeJ\xe5\xae\xf4\xfb\x06\xc4\xc1\xab\xd81\xda\x13S%\x13\x1b\xc15\xac\xd24\xac\xe6:@\xcf\x8cZ&V\xb6u\xdct\x88\x0c|\xc3=\xc8\xe42\xe5/Z&\xeeRT^+\xf3\x16V\r7{\x90\x13\xf2w\xed{\xb7\xddp:\x8c\xd29\xa5tq^\xe6,g\xea>\xb7\xbd\xb8\xad]\xe7LF\xcf\x9fz/\x8d7\xc5\xbe\x00PK\x03\x04\x14\x00\x06\x00\x08\x00\xa2b\x9dH\xbe#\x83$T\x01\x00\x00<\x02\x00\x00\x11\x00\x00\x00docProps/core.xml\x85\x921N\xc30\x18\x85\xaf\x12yO\xec$4\xb4V\x12$@LTB\xa2\x12\x88\xcd8\x7f[\xd3\xc4\x89\xec\xbf\xa4=\x06\x03\x1b\x03\x03G`c\xe0>\xa8\x12W M\xdb\x00\x15\x12\x9el\xbf\xf7>\xf9\xd9\xfe|{\x8f\x8f\x16E\xee\xdc\x83\xb1\xaa\xd4\t\xf1=F\x1c\xd0\xb2\xcc\x94\x9e$d\x8ec\xb7O\x8e\xd2X\x96\x06.LY\x81A\x05\xd6i2\xda\xf2L&d\x8aXqJ\xab\xb9\xc9\xbd\xd2Lh&)\xe4P\x80FK}\xcf\xa7\xa4\xf3"\x98\xc2\xfe\x19h\x95\xce\xb9\xb0\xaas\xd5u\xed\xd5a\xeb\x0b\x18\xf3\xe9\xf5\xf0\xfcRN\xa1\x10\xae\xd2\x16\x85\x96\xb0Mu\t\xdb\xca\xd6k\x8e\xaa\x1be\\\x9aB\xa0m\t\x95\x9031\x815)\xa2\x05\xa0\xc8\x04\n\xban\xe6V]5\x92\xc6\x99\xe4\xa80\x07\x87\xb6s;\xbf\xbd\x03\x89\xeb\xd5\x0c\x96ui2\xbbU2\xb0\xd2\xa8\n\x9b\x9b\xdb\xec\xb4E\xb84 \x102\xa7)\xc2qYABv\xcaUxr::#i\xc0\xfc\xc0e}\x97\x1d\x8eX\xc8{\x8c3\xe6\xb1\xcd\xb8\x89\xe9\x1e\xe7\x1b\\4\xaf2V\xff\x91#\x97\x1d\xb8\xc1`\xe4\x07<\xf09\xeby\x83 \xea\x87Q\xf8\x83\xbc\x03\xa5q.,\x0e\xb7\xab\xe3e\xbaz~\xfcx}X=\xbd\xc4tO\x89\xe9\xef/\x90~\x01PK\x03\x04\x14\x00\x06\x00\x08\x00\xa2b\x9dH\xbe}\xa7=\xe3\x00\x00\x00&\x03\x00\x00\x1c\x00\x00\x00word/_rels/document.xml.rels\xb5\x92=n\xc30\x0c\x85\xaf"p\xafe\xa7?(\x8a(Y\xbadM}\x01E\xa6l#\xb6$\x88L\xda\x9c\xadC\x8f\xd4+Tp\x81\xd6B3t\xf1\xf8\x1e\xc9\xf7\xbe\x81\x9f\xef\x1f\xeb\xed\xdb8\x883F\xea\xbdSP\x15%\x08t\xc67\xbdk\x15\x9c\xd8\xde<\xc2v\xb3\xde\xe3\xa09mP\xd7\x07\x12\xe9\xc4\x91\x82\x8e9<II\xa6\xc3QS\xe1\x03\xba4\xb1>\x8e\x9a\x93\x8c\xad\x0c\xda\x1cu\x8brU\x96\x0f2\xce3 \xcf\x14\xf5%\xe0\x7f\x12\xbd\xb5\xbd\xc1goN#:\xbe\x12,_\xf1\xf0\x82\xcc\x89\x9f@\xd4:\xb6\xc8\nff\x91\x12A\xec\x1a\x05q\xd7\xdc\x82\x90\x8b\x91\xd0\x1f\x0c\xba\xc6\xb0Z\x94\x81/\x03\xce\t&\x9d\xf5WK\xf6s\xba\xc5\xdf\xfaI~\x9bU\x06q\xbf$\x84\xf5\x8ek}\x18f ?VFq7Q\xc8\xec\xdb7_PK\x03\x04\x14\x00\x06\x00\x08\x00\xa2b\x9dHy\x07\xcc\x88\x93\x04\x00\x00\x1f\x0f\x00\x00\x11\x00\x00\x00word/document.xml\xd5W\xcdn\xe36\x10~\x15B\xf7\xb5$[V\x12#N\xe0\xf8g\x9bC\xdb`S\xa0gZ\xa2-6\x14)\x90\x94\xbd\xdeS^\xa1@{\xeb\x02\xbd\xf5\x01z\xec\xa1\xef\xb2\xc7n\x81\xbeBg(\xc9\xf2Ov\x91M\xb6-\x9a\x1cd\r9\x1f\xbf\xf9f8\xa4\xfe\xfa\xed\xf7\xf3\xcb\xd7\xb9 +\xa6\rWr\xe8\x85\x9d\xc0#L&*\xe5r9\xf4J\xbbxq\xea\x11c\xa9L\xa9P\x92\r\xbd\r3\xde\xe5\xc5\xf9z\x90\xaa\xa4\xcc\x99\xb4\x04\x00\xa4\x19\xac\x8bd\xe8e\xd6\x16\x03\xdf7I\xc6rj:9O\xb42ja;\x89\xca}\xb5X\xf0\x84\xf9k\xa5S\xbf\x1b\x84\x81\xfbUh\x950c`\xb51\x95+j\xbc\x1a.?FS\x05\x930\xb8P:\xa7\x16^\xf5\xd2\xcf\xa9\xbe+\x8b\x17\x80^P\xcb\xe7\\p\xbb\x01\xec n`\x14\xc4\xa0\xe5\xa0\x86x\xb1%\x84.\x83\x8aP\xfdh<\xf4c\xd6\xad\\&\xb5\x02nE_3\x01\x1c\x944\x19/\xda0\x9e\x8a\x06\x83Y\x03\xb2\xfaX\x10\xab\\x\xdb\x14\x84\xd1\xf3r0\xd1t\r\x8f\x16\xf01\xf4\xd3\xca)\x17\x15\xf3\x8f#\x86\xc1#2\x82\x10[\x8f\xc7P\xd8_\xb3a\x92S.\xdb\x85\x9f$\xcd\x8e\xb8a\xff\xd3\x00\xba\x87\x00\xc5\xf2y\xc9y\xa9UY\xb4h\xfcyh\xd7\xf2n\x8b\x85\xfb\xfa\x13\xb0\xea$\xef\x86f\x9eG\xe66\xa3\x05\xec\xc0<\x19\\/\xa5\xd2t.\x80\x11\xa4\x8c\x80\xea\x04\xcb\xda\xc3\x8e3W\xe9\x06\x9f\x05Y\x0f\xa0_\xa5\xaf\x86^4\xedE\xd3n0\xf2j\xd3\xcd\xb1\xe9\xd5\x84-h)\xec\xdeH\x18\r\xa4\xba-\x98\x10S\r;>\xacL\x05\xd5\xf4:\x1dzq\x7f\x1c_E\xdd^e\xb5\xec\xb5Ekw\x12\xcf\xe2 \x9e:.\xc5\x8dv\x8f[\xbb\x11\x0cVZQ1\xf4\xbe`\x14\xfb&\xa0\xf9\x17\xe7\xfev\x92n\x98\xdc\xe8\x07\xe8\xed\x98\xdc\xe4\xcag\xde`\x06\x0e\x0c\x0ccshJ\x94P\xba1v\xdd_\xb3r\x8db/\xbe\xcd6dB-%\xb7\t\x87\xe6\xc2\x8d5D2\x96\x12\xab\xc8\x9c\x91\xa5Ri=n\x95\xdeX\x10\x04\x8e\x82K\x84\xb0\x15P\x15\xc8\xbf"{8\n{\xe1\xd5l\xb2/{\x1c\xc7\xe3\xd9\xd9\xb4\xffa\xd9\xbf\xc2N \xf6D\x7f\x04\xe7\xa7\xd4\xc5,\xea\x8f\xc6\xf1\xd9\x01\xc1^\x1f\x06&U]<%\xd7z\xa6\xa4\xc5\xecR\x93p\xd8\xd6\xef\x7f\xf9\xfe\xcf\xb7\xf7\xe4\x8f_\x7f~\xff\xc3\x8f\xe8\x9b\x8d\xa4y\xc8\xce\xa8\xb1#\xc3\xe9\x03C\x8992\x1e\xd7\xccI\x17\xff\xeb\x11\xf3f[J\xc1\xd6\xd4\x16]m\xdc\xad-\xd8\x9f_\'\x96\xc0~\xee\xffG\x05\x13\x04\xfd\xf0\xecd\xb6\x9f\x8fp\x1c\x86\xf14\x8a>w\xc1|.\xcec\xa8\xa1\xd3\xd3}\xce\'\x11\xc42\x9d\xec\x15\xf9wI\xc3w\xae\xf02\xf0\xec\x9e\xf2\x7f\xad\xb3mk\x82\xdeJ\xb8!)\xf6\xab5\xb7\x19\xa1\xc4\xa8Rt\x8e:\x1c\xd5\x8c\x80\xb2\x9a\xe5Ll\xaa&\xe7\xe6\xcb2\x9fC\x7f#\xf3\xd2n\x7f\xbb{\xad\xf3\x90\xca\x12S\xe2I\x85@\xd8!\x13%WlCl\xc6\x88f\x06\x12m\xd0\x8a\xafL\xa6\xa44Lw\xc8\x15CZ\xb4Z\xc5Q3m+E\xbaT\x02\xba%\x14B\x04\x1b>a\n.\x91\xb0c\xe6\x96\xde1\xb7@\xc6DA\xd4\x82\xac\xa8\xe6\xaa\xac\x83^qSR\xc1\xdf\xb8\x8b&PQ\xc2\x10\xc1\xc1\xe3\x1b<2i\x89\xec\n`\xea\xe8\x03\x88s\xe2\xb2\xf6\x03)hQ0\xeat\xac\xaeO\x1d2:\xa0\xe0TP\x12\xe6\x962\x05}\xf0\xeaoZ0T\x8e\n\xa3\x8eF\xe7%\x1c\xe4p\x9aC\xb8\xe9\x9eB\xf8q\xb1q\xa1\xe3b\x1fV\xc9\x10\xf0F\x0eT`\x18t\x07\x11\x15\xab|\x1a\x96({B\x01\xbe\x11\xfe\xdd\xfdO\x87\xc7\xd8\xbb\xfb\xb7\x90uP\x9cISjT\x95\xda\xbdT.\xb4\xca\xdb\xc8\xa8\xa4bcx\x15@\xae\xd2\xba\xde\x96\x0cfr\xf8\xbe\xd0\xb6:5\x1d\x02_f\xa0C\x99\xba,\xa2\xc2\x90\xe4V\x11LF#\xf0?\xd8\x19\x9b\x96\xd2\xeb\xc5\xddp\xdc;\xb8\xae\xc0Y\x1aL\xfa\xfd\xa7\x9d\x9b\x86%\xb6vY\xde\xe2\x86\x85kx\x18\x9e\xe1\x87\x15\xb4\t\xf8\x1d\x9f\xf6\xb0\x85\r\x94\xc6\x8c\x0c\xbdBi\xab)\xb7\xf5\x8e.\x96_R\xdc\xfeV\xc1\'D\x18E\x81\x8b\x05Uk_\xa1\xabY\x95\xb7\xef\x82-vF3\xb8K1\x8d\xbd\xc3\xbd.\x94\xb2;\xaf\xcb\xd2\xba\xd7\x9d\xab\x10v\x10S\xd0\x84\xd5\x93\xfc\xfa#\xf5\xa5\xe6)\xa2C-\xddp\x9b\x00\xf9^\xbc\xed1M\x9c~s\xbb\xf4\xdb\x0f\xdb\x8b\xbf\x01PK\x03\x04\x14\x00\x06\x00\x08\x00\xa2b\x9dH\x89\x11\x16L\xd4\x01\x00\x00"\x04\x00\x00\x12\x00\x00\x00word/fontTable.xml\x95\x90Kn\xdb0\x14E\xb7Bp\x1e\x8b\x92\xed\xc4\x11\xa2\x04M\x8d\x14\x1d4\x83\xc2\x1b\xa0iJ"\xca\x8f\xc0GY\xf5\xac[(\xd0\x0e\x0bt\xd6\x05t\xd8A\xf6\xd3\x14\xe8\x16\xfa,S\x8e\x91\x0f\x9a\x10\xfa\x90\xf7>\x1e\xf2\xdd\xbf\xbfn\xce.>\x1aM\xd6\xd2\x83r\xb6\xa0\xe9\x88Q"\xadp+e\xab\x82\xb6\xa1<\x9aQ\x02\x81\xdb\x15\xd7\xce\xca\x82n$\xd0\x8b\xf3\xb3./\x9d\r@p\xb7\x85\xdc\x88\x82\xd6!4y\x92\x80\xa8\xa5\xe10r\x8d\xb4h\x96\xce\x1b\x1ep\xe9\xab\xc4p\xff\xa1m\x8e\x843\r\x0fj\xa9\xb4\n\x9b$c\xec\x98F\x8c\x7f\x0e\xc5\x95\xa5\x12r\xeeDk\xa4\r\xfd\xfe\xc4K\x8dDg\xa1V\r\x0c\xb4\xee9\xb4\xce\xf9U\xe3\x9d\x90\x00\xd8\xb1\xd1;\x9e\xe1\xca\xee1\xe9\xe4\x01\xc8(\xe1\x1d\xb82\x8c\xb0\x99x\xa3\x1e\x85\xdbS\xd6\xcf\x8c\xbe\x03L_\x06\xc8\xf6\x00#\xf2\xb7\x95u\x9e/5F\x8f7!\x08\xa3C\xfa\xa4\xcb-7h\xbc\xe3\xbaj-y\xe3B\xadDos\x1d\xae\xd1\xc2\x8a5\xd7\x05\xbd\xfd\xf1\xf9\xcf\xb7O\xe4\xf7\xcf\xef\xb7_\xbeR\x92lK\x1an\x1d\xc8t(a\x19\xbbdS6\xc6\xffvl\xbf\x93X)j\xeeA\x86\xa1r\x96F\xbd\xe4F\xe9\xcd C\xa7\x00\x06\xb6\n\xa2\x1e\x8c5\xf7j\xdb@\xf4@U\xe8\xb4\xb0d\x05=\xed\x8fzuEwJZ\xd0\xect~r\xf2\xfa\xea2*\x19^\xac\x1fi\x16\x95\xf1\xa00\xb6UD\xcf\xc1\xc5\x0c\x9fyT\xd2\xc3\x1a<4\xd9\xe5\xf5 \xb7\x852\x12\xc8\xb5\xec\xc8{g\xb8\xa5\x8f\xc7\x92\xb1c\x8ce\xca&\xf8f8{"\x96x\xd6\xfdX|O\xde9\xd6\x85\x85o\xe5b\xd3\xc8\x97\xe5\x14\x9b\x19\xdf\xe5t\x98\xc1aN{\xe5\xa9\x9c\xfa0\xff\x97S\x9c\xc0\xf9?PK\x03\x04\x14\x00\x04\x00\x08\x00\xa2b\x9dH\x14<\x8d\xb0\\\x04\x00\x00O\x0b\x00\x00\x11\x00\x00\x00word/settings.xml\xb5V\xdbr\xdb6\x10\xfd\x15\r\x9fK\xebbJv5\x963vl\xc5N\xa4&c:\xed\xf3\x12XJ\xa8@\x80\x03\x80\x92\xe5N\xbf\xac\x0f\xfd\xa4\xfeB\x17$!\xc9N\xe2q\x9b\xc9\x13\x81={\xc5\xde\xf8\xcf_\x7f\x9f\xbdy(dg\x8d\xc6\n\xad&Q\xff\xa8\x17uP1\xcd\x85ZL\xa2\xca\xe5\xf1i\xd4\xb1\x0e\x14\x07\xa9\x15N\xa2-\xda\xe8\xcd\xf9\xd9fl\xd19b\xb2\x1dR\xa0\xec\xb8`\x93h\xe9\\9\xeev-[b\x01\xf6H\x97\xa8\x08\xcc\xb5)\xc0\xd1\xd5,\xba\x05\x98UU\xc6L\x17%8\x91\t)\xdc\xb6;\xe8\xf5FQ\xabF\x93Q\xa3\xc6\xad\x8a\xb8\x10\xcch\xabs\xe7E\xc6:\xcf\x05\xc3\xf6\x13$\xcck\xec6"W\x9aU\x05*W[\xec\x1a\x94\xe4\x83Vv)J\x1b\xb4\x15\xffW\x1b\x81\xcb\xa0d\xfdR\x10\xebB\x06\xbeM\xbf\xf7\x8ap7\xda\xf0\x9d\xc4k\xdc\xf3\x02\xa5\xd1\x0c\xad\xa5\x04\x1528(\xd4\xdep\xf2\x85\xa2\x9d\xed#\xb2\xdd\x86X\xab"\xf1~\xaf>\x1dz>\xfco\n\x06\xcf\x14X\xf9\x9aH\x1ah&2\x03f{\x18F\xc1\xc6\xb7\x0b\xa5\rd\x92j\x92\xc2\xe9\x90G\x91/K\n\\\xe7\xa9\x03\x87\x1d\xaa\xd1\x12\xa5\xac+\x99I\x04\x92\xdb\x8c\x17\x06\n\xaa\xc2I\xc4\x85q\xdb\xa8\xd3\xf5B\x8fZ\x17\x84\x95h\x18%\x94\xda\xa0\xd7k\x91\x8c\xbc\xa6\xe6\xb8\xd2\xbfh\x97V\xc6\xe8J\xf1\x1b\x04\xa2}\x1b\x9fj\xed\x02\xce1\x87J\xba{\xc8R\xa7K\xb2\xb1\x06\x8a\xfct\xa7\x9f\x0b[J\xd8\xdeh#\x1e\xb5r \xaf\x0cl\xc8\xe3wF\xf0kj\xcbm\x10y&\xf0+\x1a\'\xd8\xb7\xd9\x07-\xbb\xd2\x9f*\xc5\\UW\xfa\x074\x8a\x98\x1b\x84-\xc1\x00#G\xd3\x12\x18Q\xdf\x92y\xa3eP\xc0}Do\xa9O\r\x95Q\xab\xaci\xdb\xba\xf9I\x06\xa7\xda|\x9e\xb5\xcf\x00\x12\x14\xc3\x94\xf4H\xbc\xdc:j\x8e*kN\xbf\t\xee\x96\xad\xef^\xe7\x0ca\x8d\x97\xc0VV\x82]^\xf8\xa9\xd2\xa0\x95\xbc7 \xa4w\x07\x0f\xf8\xaf\x1fJ\x9a>\xe9R\xe4\xee\x0e\x1duK\x83\x01\xff\xbd\xb2n&\x14\xde\xa0X,\xdd\xad\xba\xf7\xc5\xd0\xaa\xb28\xbd\x9e\xc1VW\xee\xd0\xf3\xb4\x19Y\x14\xa2\x82\x82\xea\xe6\xc9\x18\x9ak\x8e\xbe@*#^_\xdaQx.\xaa\xbe\x97,i\xca\r\xa5\x08k\x1fS\xb7\x95\xf4x\xca\xa5\xe2\x11/\x14\x7fO\x81\x08RY\xe7\xe8;\\x\xd1\x03T\xde\xf4G\xea\xb1\xfbm\x89S\x04zJ\x1a\xe5?\xc8Z\x9d\xb9\xa9\x14\xe5\\PO\x98[\xc5\xa9\xaf~\x9c5\x91\xe7h\xc8\x82\xa0\xb6\x9fS\xbb\t\xa37\xf5S7\xad\xfa\xdd\x86\xbb\xfb\xda/\xc6~\xd2\x7f2\xe1\xe4\xf3\xd8)\x1a\xe6\xb7PdF@g^\xef\x82\xaeg\xc9\xcc\xeaR\xa8\xc0\x90!M7|\x02\xa5U\x16\xd08n\x11[\x80\x94S\xea\xce\x80\xf4Z\xc07\xff\x15\xe6\xcdE\xce\xc1,\xf6\xba\x03\x8f\xf9:\x99\x06\xd1\xfb\x9d>?\xe5\xd0\xbc\xa3iU\xb6\xf0\xc6@\xd9d)\xf0\xf4\x93$\xc8\nE\x8dV\x04\xc0VY\xba\x93S4\x98\x0f0\x9a~\x1f\xd7\xa6y\xb3\xfdKm\xc6\x8e\xde\xbb.\xf9\x19\xd4y\xab\x99Q\xc5\x9fS\xff\xd2\x08\xd6]X\x01\x93h\xa5\xe3\x0fw!\xd7\xd2\xa4>O8\x87\xb2l\xd2\x9d-\xfa\x93H\xfav\xef{9G7N\x7f\x14\xf5%[\x0cZlPc\x83\x06\xab/\xc0|\xc4\xc4\xdd\x1e\xf6\xb4A\xa0\x1d\xf0\x1d\x07\xda\xf1\x9e\x96\x04Z\xb2\xa7\r\x03m\xb8\xa7\x8d\x02m\xe4iKj5C\x0bhE\x95\x17\x8e\x9e\x9ek)\xf5\x06\xf9\xcd\x1e\xff\x82\xd4\xbe\x82]B\x89W\xcd\x16\xb1\xe7g\xba!\xb4k\xc5v\xd6c|\xa0\x85\x85\\8\xfaO+\x05/\xe0\xc1\xef\xaf\xc1\xa8\x96o\xd9e3\n\x0f\x99=\xe6\xb9\xcb\xa7*88\xd8U\xfd\x13\xe9\xba\x0b\x9ey\xe3\xf7\x1b\x13T\xad\xe9\xb6\xc8\xf6\xbb\xe3\xa8\xf5]\nK\xbdZ\xd2\x9eq\xda\x04\xf0\xa7\x06\xec\x0f\xeb\r\xe4h\xe6\xb3\x15e\xf7\x0e\xf3K\xb0\xc8\x03\xc85\xbb\xe5~\xab7R\x7f\xc0\xf0\xa4\xcfGy\x12\xb3\xe4\xe7~\x9c\xe4\xa7\xbd\x18\x8e\xf9 >\xc9\x86\xc3\xfe\xe9\xf0\x04F\'\xec\xcfVu\xb2\x93N\x1a\xe9d8M\xa6\xc7\xa30\xa3\xe9g\x97\xdbp\xb8\xa3m\x1d|K\xae\x8f\x93\xebA\xef\xe2\x80\xef\xabPw\xa7\xa3\xbb\xff\x11>\xff\x17PK\x03\x04\x14\x00\x06\x00\x08\x00\xa2b\x9dH3_\xbd\xab\xf0\x0b\x00\x00\x99{\x00\x00\x0f\x00\x00\x00word/styles.xml\xe5\x9d\xcbv\xdb8\x12\x86_\x85G\xab\x99\x85#K\xbe\xe7\xb4\xbb\x8fc;c\x9fN\x1cw\xe4L\xd6\x10\tY\x88I\x82\xc3\x8b\x15\xf7\xab\xf5b\x1ei^a\x00\x90\x94(\x15\xc1\xb0\xc0\x8a7\xbd\xb2E\x12\x1f.?~\x00\xc5\xeb\xff\xfe\xfa\xef/\xbf}\x8fB\xef\x99\xa7\x99\x90\xf1\xf9h\xf2f\x7f\xe4\xf1\xd8\x97\x81\x88\x1f\xcfGE\xbe\xd8;\x1dyY\xce\xe2\x80\x852\xe6\xe7\xa3\x17\x9e\x8d~\xfb\xf5\x97\xd5\xdb,\x7f\ty\xe6\xa9\xe4q\xf6v\x95L\x0e\xcfG\xcb<O\xde\x8e\xc7\x99\xbf\xe4\x11\xcb\xdeD\xc2Oe&\x17\xf9\x1b_Fc\xb9X\x08\x9f\x8fW2\r\xc6\xd3\xfd\xc9\xbe\xf9/I\xa5\xcf\xb3Lev\x95\xb2\x95\xfa3\xaa\x80\x91\x0fp2\xe1\xb1\xda\xb9\x90i\xc4r\xf53}\x1cG,}*\x92=\x85OX.\xe6"\x14\xf9\x8b\x82\xef\x1f\xd7\x98\xb4\x0f\xa5,\xd9\x95\xf4\x8b\x88\xc7\xb9I?Ny\xa8\x882\xce\x96"\xc9j\xda\xaa\x0fm\xbbZQX\xf2"&\xe25\xc6\xad\xad\xa2p\x038\xc2\x01\xa6k@\xe4\xbf\xbd}\x8ce\xca\xe6\xa1\x12S\x95\xc4S0O\xcb7\xd2\xa2\x06\xd2\xbf\xe2\x0bV\x84y\xa6\x7f\xa6\xf7i\xf5\xb3\xfae\xfe\xbc\x97q\x9ey\xab\xb7,\xf3\x85xP\xd9+R$\x14\xf4\xe6"\xce\xc4H\xedY\xea\x7fZ\xf7p\x96\xe5\x17\x99`\xcd\x9d\xd7\xd56\xbd\xdf\xcf\xf2\xc6\x9ew"P\xa9\xc6:\xd7\'\x9e\xc6j\xff3\x0b\xcfG\xd3j[\xf6\xe7e\xb6\xdeVo\x0cY\xfcXo\xe4\xf1\xde\x97Y3\xdb\xf3\xd1\x93\xdc\xfb\xfd\xb3\xde4W\xec\xf3\x11K\xf7f\x17&\xe5\xb8\xaa\xe0x\xb7\xda\xc9\xee/\x93u\xc2|a2b\x8b\x9c\xabn69\xde\xd7\xd4Ph\x93L\x8f\xce\xea\x1f\x9f\x0b\xdd\xd0\xac\xc8eU\xbeo~]\xba\xb9\xcc\x97u\xd6I\x95u3\xb31\xd0C\xf5I\xd5Cg\xa5\xf3\xd4^\xbe\xf8 \xfd\'\x1e\xccr\xb5\xe3|dJ\xa06~\xb9\xbdO\x85L\x95\x19\xceGgg\xd5\xc6\x19\x8f\xc4\x8d\x08\x02\x1e7\x0e\x8c\x97"\xe0_\x97<\xfe\x92\xf1`\xb3\xfd\x8f\xf7\xa6CW\x1b|Y\xc4\xea\xff\x83\x93\x89\xe9#a\x16\\\x7f\xf7y\xa2\xed\xa1\xf6\xc6L\xcbu\xa7\x13\x84\xfa\xe8Bl27\xc9\xffS\xc3&\xb5Bm\x80%gz\xcc\xf1&\xbb\x8c3<c\xda\xca\xc8\x1a\rP\xe6\xb2S\xfb\t>\xa7\x83W\xcb\xe9\xf0\xd5r:z\xb5\x9c\x8e_-\xa7\x93W\xcb\xe9\xf4\xd5r:\xfb\xe99\x898\xe0\xdfKG\xf6\xc1\xfe\x084\xa5\x02\x1dP\x81\x0e\xa9@GT\xa0c*\xd0\t\x15\xe8\x94\n\xd4\xbb{\xdaA\xb9\xf4\xe1\x04q@\x04\x06\xb3\x06\x15\x18L\x12T`0\'P\x81\xc1\x14@\x05\x06#>\x15\x18\x0c\xf0T`0\x9eS\x81\xc1\xf0M\x01.\x97a\xde\xad2\\\x9c\x0f\xc7-\xa4\xccc\x99s/\xe7\xdf\tp,V0\x13V\x11\x01\xf5T\xc8S\x9azRp\xca\x81\xae\x9a\xa0\x87\xe3|f~\x83\x8e\xd2{\xb6\xe9;\xd1\xe7:\x1c\xf4\xe4\xc2[\x88\xc7"U\x11\xfe\xe0\xa2\xf3\xf8\x99\x87*:\xf6X\x10( %1\xe5y\x91\xc6\x84\x9d;\xe5\x0b\x9e\xf2\xd8\xe7\xa4=\x9c\x90\xaa\xe3H/.\xa29E\x1fM\xd8#\x1d\x8c\xc7\x01u\x13\xd6H\x9a\x11b\xdd\xb3U\x04\xbe\xd4\xfe\x11\x14\xbd;b~*)\xa6\x01F7X|\x10\x19A{i\x8a\xf7\xae\x08CN\x05\xbb#\xeaj\x06F\x10B\x18\x0eA\x04a8\x04\x01\x84\xe1\x10\xc4\x0f\r\xe5\xc8\x9a\xa9\xc2Q\xb5V\x85\xa3j\xb4\nG\xd5veG%k\xbb\nG\xd5v\x15\x8e\xaa\xed*\x1cA\xdb=\x88<\xe4\xbbK\x94\t\xe2\xcc\xdfe(3\x92\x11p&\x1ec\xa6\xd6\x06\x04\x93Pu\xd2\xd5\xbbg){LY\xb2\xf4\xf4IoP\xcb\xe1\x19\xbd\x93\xc1\x8b\xf7@2\xd5\xadQd\xcb\x7f\xd3S.U\xc5E\\\x104\xea\x16\x8e\xccgk \x95\xd3\xd6@*\xaf\xad\x81\x04n\xfb\xa8\xd6\xd2z\x01wC\x14\xf9\xcc\x8ay\xdej`D\xf40caQ.z\t\x8c\xc7r\x82\x9e\xb6\xb1\xc2{\x91ft\x86h\xe7Rt\xe5;\xbd\xe4\xbd\xa1Z\x0bn\xcaIP\xb4\r\x8c\xc0a\xbb\x83\x14m\x01+&E9C\xe9?\x11\r\xcc7/\tOU\x0c\xf74\x1c\xf5^\x86\xa1\\\xf1\x80\x109\xcbSY\xf6\xb9\xa6\xff\xa7\xd3\xfe\xfe\xbf\x8e\x92%\xcbD\x06\x18\x88E@}\xf5\xdd\xfb\xc8\x92\xe1u\xba\x0f\x99\x88\x89\xd4\xbb\xde\x8b\x98\x08=\xc2\xc5\xc5\xcd\xc3\xc7\x0f\xde\x83LtX\xaa\x1b\x87\x88\xf8N\xe6\xb9\x8c\xe8\xa0\xd5\xb9\xc4\x7f|\xe5\xf3\x7f\x12\x15\xf1B\x85\xcd\xf1\x0bU\x85/\xa8N-\x19\xda\xa5\xa0\x98yJ\x94\x0c\xa8Pj!*bA3\xb7\x1a\xe0\xef\xfce.Y\x1a\x10\xe1\xeeS^\xde\xfc\x92s*\xe4\x8cEIHf35P\xae\xd4pD\xb1V2\xc0\x7f\xb3T\xe8sJd\xfez\xa0\xa15\xce<f\xc5\xfc\x1b\xf7\t\x86\xbe;\xe9\xd1\x9cU\xfaT\xe4\xe6\x1c\xa6Y\x0e\x13DM[<\x82\x15\xc4\x16\x8f`\xf5`4US\x86\xee\xc8\x14\xf5\xdd\xe2\x11\xd4w\x8bGV\xdf\xcb\x90e\x99\xf0\xe9*\\\x03\xc9j\\\x03\xc9\xabL\x10*V@\x19\xcatQ\x84\x84\x8dX\x13\xe9Z\xb1&\xd25\xa3\x0c\x8b(\xceH+m\x80\x94u6@\xf2*S\xf6\x1c\x03\xa48\xa5g\x80\xffJE@\xa7\x88\xa1\x91\xc9ahdZ\x18\x1a\x99\x10\x86F\xab\x02\xc1]A\r\x1a\xc1\xadA\r\x1a\xc1\xfdA%\x8djq\xd0\xa0\x91\xf57\xda\x85\x01\xd5\xa5\xa3\x06\x8d\xac\xbf\x19\x1aY\x7f34\xb2\xfefhd\xfd\xed\xe0\xca\xe3\x8b\x85Z(\x13\xce;\r&Y\xdfk0\tg\x9f8\xe7Q"S\x96\xbeP1\xafC\xfe\xc8(\xce\xb2\x96\xb8\xfbT.\xf43\x142.\xef+\'Y\xf1\x16\xf3\x9ctE^\xf2\xc8\xa4\xfe\xca\xe7t\x85\xd30\xd2\x92Q\x9cVea(%\xd5\xa9\xb9\xcd,d\x92\xee\xdcK\xf7\xa3t\xe6\x11\x94\xe1\x85\xb8\x0f\x99\xcf\x972\x0cxj\xabVg\x84=+\x9f$\xd9\xad\x81)H\xbfs\xa7\x1f\xc4\xe32\xf7f\xcb\xf5\xc5\x83&G?\x96\xf2\xa3\xa4u\x90\xbf\x95\xaeG\x96m-\x7f<\xedJ\xf7\x91\x07\xa2\x88\xea\xb2\xc2{y\x8f\x0f\x10\xa9\xc1\r\xbb\xc7\x87=Ro\x96\x19[I\x8f\xfa&\x85\xb9\x1e\xf7H\xbaYLo%=\xe9\x9b\x14\xe6z\xda7)\xb8\xfd\xf8\xb8\xd3\x1cW,}j\xed\x11\'\x9d=i\x1d\x14Z\xfa\xe1Ig\x7fZ\xa7n\xcd\xb8\xb3K\xad\x93\xb6\xf5\xc6\x93\xce\xfe\xb4e\x1c\xef\xc2\xf7\xf5\x05\x08(RO\x07\xd9\x01=\xadd\x07\xa0<e\xc7\xa0\xcce\xc7\xf4w\x99\x9d\xd1i\xb7\xcf\xfcYd\xed\xa7\xbc\x7fp\xa9}}\xbf\x06\x98\x10\x0e\xfb\x8f\xa7\x7f\x142\x07\x17\xc4\xa7\x88\xe7\xd0n\xd5\xe2*\xce\xb8\xd7\n:@\\\x15\xdb\x1aw\xec\x8d\xd9\x7f\x00\xb23\xfa\x8fDvF\xff!\xc9\xce\xe876Y\xd3\xe3\x06);\xa6\xffheg\xf4\x1f\xb6\xec\x0c\xfc\xf8\x05g\n\xe4\xf8\x05\x01\xc8\xf1\x0b\x02\x9c\xc6/\x88q\x1a\xbf\x86\xac\x12\xec\x8c\xfe\xcb\x05;\x03o[\xc8\xc0\xdbv\xc8J\xc2\xce\xc0\xd9\x16\xa4w\xb3-\xc4\xe0m\x0b\x19x\xdbB\x06\xde\xb6p\x95\x86\xb4-\x04 m\x0b\x01N\xb6\x85\x18\'\xdbB\x0c\xde\xb6\x90\x81\xb7-d\xe0m\x0b\x19x\xdbB\x06\xde\xb6\xae\x91\x805\xbd\x9bm!\x06o[\xc8\xc0\xdb\x162\xf0\xb6\x05\x8f`bm\x0b\x01H\xdbB\x80\x93m!\xc6\xc9\xb6\x10\x83\xb7-d\xe0m\x0b\x19x\xdbB\x06\xde\xb6\x90\x81\xb7-d\xe0l\x0b\xd2\xbb\xd9\x16b\xf0\xb6\x85\x0c\xbcm!\x03o[\xf0\x803\xd6\xb6\x10\x80\xb4-\x048\xd9\x16b\x9cl\x0b1x\xdbB\x06\xde\xb6\x90\x81\xb7-d\xe0m\x0b\x19x\xdbB\x06\xce\xb6 \xbd\x9bm!\x06o[\xc8\xc0\xdb\x162\xf0\xb6\x05\xaf\x0f\xc0\xda\x16\x02\x90\xb6\x85\x00\'\xdbB\x8c\x93m!\x06o[\xc8\xc0\xdb\x162\xf0\xb6\x85\x0c\xbcm!\x03o[\xc8\xc0\xd9\x16\xa4w\xb3-\xc4\xe0m\x0b\x19x\xdbBFgO\xad\xae\x88\xda\x1e\t\x988\x9cE\xb5>^\x80\xb8DV\x15\xebs\xf31\xf5\xad\x93\xb2\x08V].;\x0c\xf1\xec\xc4;)\x9f\xbc\xd6G(\x0f\x0e\x10\x141\x0f\x854\'\xbe_\x00\x87\xe2\xf6\x8bO\x97\xcd\x87\x93\xdc\xdeZ\xd2\xb72\xd5\xc3\x1b\xe6\x1a-8!z\xd8;)8)s\xd8\xd9\xf9\x9bIA`x\xd8\xd9\xe7\x9bI\xc1\xe2\xf4\xb0sDn&\x05\x13\xe4a\xe7@lLZ\xdf\x17\xa3\xa6)\x90\xbas\xd8i\xa4\x9eX\xd2w\x0e\xe1\x8d\xf4\xb0\xa1;\x07\xeeFJ\xd8\xce\x9d\xc3u#%l\xe6\xceA\xba\x91\xf2\xc8\xd3#\xf6n\xf2\xa3\xbe\x8du\xbc\xbe\xfb\x15 :{f\x03qbGt\xf6P(\x99\xf5\xb2A\x7f\xed\xec\x88\xde"\xda\x11\xbd\xd5\xb4#p\xb2Z9\x0e\xfa\xdaYx\xa1\xed,G\xc5\xa1\xe7\xd0\x8a\x0f\xb0\xad\x1d\x81V\x1c"\xdc\x14\x07\x9c\x01\x8aC\x96\xbb\xe2\x90\xe5\xa88\x1c+\xd1\x8aC\x04Z\xf1\x01#\xb6\x1d\xe1\xa68\xe0\x0cP\x1c\xb2\xdc\x15\x87,G\xc5\xe1\x1c\x87V\x1c"\xd0\x8aC\x04Z\xf1\xa1\x93\xb5\x953@q\xc8rW\x1c\xb2\x1c\x15\x87+@\xb4\xe2\x10\x81V\x1c"\xd0\x8aC\x84\x9b\xe2\x803@q\xc8rW\x1c\xb2\x1c\x15\x07\xd15^q\x88@+\x0e\x11h\xc5!\xc2Mq\xc0\x19\xa08d\xb9+\x0eY\x9d\x8a\x9b\xb30\x03\xc2\xabFz\xe4:\xad\x91\x129Y7R"G\xecFJ\x97\xf0\xaa\x91\xdc5\xbcj \\\xc3+(\x99cx\xd5\xd4\xce1\xbcj\x8a\xe8\x18^5\xd5t\x0c\xaf\x80\xac\x8e\xe1U\xab\xbe\x8e\xe1U\xab\xd0\x8e\xe1\x95]qdx\xd5\xa6\xf8\x00\xdb:\x86Wm\x8a#\xc3+\xab\xe2\xc8\xf0\xaaSqdx\xd5\xa982\xbc\xb2+\x8e\x0c\xaf\xda\x14G\x86Wm\x8a\x0f\x18\xb1\x1d\xc3+\xab\xe2\xc8\xf0\xaaSqdx\xd5\xa982\xbc\xb2+\x8e\x0c\xaf\xda\x14G\x86Wm\x8a#\xc3\xab6\xc5\x87N\xd6\x8e\xe1U\xa7\xe2\xc8\xf0\xaaSqdxeW\x1c\x19^\xb5)\x8e\x0c\xaf\xda\x14G\x86Wm\x8a#\xc3+\xab\xe2\xc8\xf0\xaaSqdx\xd5\xa982\xbc\xb2+\x8e\x0c\xaf\xda\x14G\x86Wm\x8a#\xc3\xab6\xc5\x91\xe1\x95Uqdx\xd5\xa982\xbc\xeaT\xdc\x16^\x8dW[\xdf\xbc\xd2p\xf3\xdd9ut\xfe\x92p\xfd6\xf3\xc6\x03?f\xd7m\xd0\xfc\x1aUP\xbe\xc8U_r\xd4\x89uQ\xbc\xea\xf3[\xf5A\xa6\xc8\xd5\xa5\xc9\xf2G\xf5\x8d\xaf\x95\x08\xe4J?)\x9d\xca\xb0NT7\x97\xfe\x9e\xdaW\x95\xef\xeev\xfd\xa1/\xfdD\'\xbf\xba\xb6\xef\xba\xdb\xde\xd5\xf8\xfc\x97\xa9\x01\xac\xa5\xbfT\xd5\xf4\xeb\x97X\xd5\xb5\xac^R\xbb~\xe6\xa9~EmG\x9dm\xef\xb55\x05\xdc\xb4\x7f}x-\xe8\xe6\xf2nu\xe4\xd6\xd5\xdd\xaa\x0e\x96\xb2\xe7Z\xf2\xadr\x9bN\x80\x90\xa8~E\x96\xa5\x90gg\xbdK\xa9\xca4\x0fKq\xd5?\xb7q\xa0\x18\xab\xea3eei\x83\xefl\xb4>\xf2\x92\x87\xe1GV\x1e.\x93\x8ecC\xbe\xc8\xcb\xdd\x93\xfd\xd3\xb6\x03\xe6\xe5\xbb\xf9\xec\x84\xd4\x0c[v\xc4x\xbb@\xe3uM\xec\r_\xbe\xe3\xbf~\x9f\xe8\xc6\x1a\xf5#\x96\x9d\xed^=\x889\xbc\xc9\xb1\x9d\xba\xba\xcd`r\xa9\xf6\xea\x1d~\x91\xa9\x963\xf67\xfdq\xf0\'\x14\xc1\x17\x10\x89?99\xf4#\x91\xbbZ\xdc\xd4\x1f\xc6\xf3\xca&!\xfa\x14e\xd9-\x99R\xe9S\xbc3:\xec\x0c(\x94\x19\xeaW\x96\xeeTlB\x9bCKg\xa5\xcd \xbdO\t\x95n\xff\x98&\xfbf\xfb\x98\xe6\xd6\x9e\xdd\x8fi\xea\x9d\xed\x1f\xd3\xd4{\x1a\x1f\xd3\xcc\xfe\xac\x1bgz\xba\xde\xd4\xf8\x96\xe6i=\xe6\xa4\xddCL\xfb\xec\x0b\x84\xfd\xfb\x98\xb5\xf1\x15\xcb\x9f\xe8\xd3z\xee\xa4\xcc"\xd6\xefO\xfe\x89\xfc6\xe7\xd3\x0fh?\xdd\xfd\xf5:\x91\x92\x99\x90\x8e(O\x9c\'wZL\xca"\xca\xf2\x05\x99\x1f\x9e\x9b\x0ba\xba\x0c\xc6\xeb5\xf7\xdfyt\xad\xff\xcb~\xfd?PK\x03\x04\x14\x00\x06\x00\x08\x00\x00\x00!\x00\xbf\xb9\x9dr\x1b\x06\x00\x00\x91\x1a\x00\x00\x15\x00\x00\x00word/theme/theme1.xml\xecYO\x8b\x1b7\x14\xbf\x17\xfa\x1d\xc4\xdc\x1d\x8f\xed\x19\xffY\xe2\r\xf6\xd8N\xda\xcd&!\xbbI\xc9Q;#\xcf(\xab\x19\x99\x91\xbc\xbb&\x04Jr,\x14J\xd3\xd2C\x03\xbd\xf5P\xda\x06\x12\xe8%\xfd4\xdb\xa6\xb4)\xe4+T\xd2\xd8\x1e\xc9\x96\tI6\xb0\x94\xd8\xe0\x91\x9e~\xef\xe9\xa7\xf7\xa4\'\xc9s\xf1\xd2IJ\xc0\x11\xca\x19\xa6Y\xd7\xa9]p\x1d\x80\xb2\x90F8\x8b\xbb\xce\xad\xfdQ\xa5\xed\x00\xc6a\x16AB3\xd4uf\x889\x97\xb6?\xfe\xe8"\xdc\xe2\tJ\x11\x10\xfa\x19\xdb\x82]\'\xe1|\xb2U\xad\xb2P\x88!\xbb@\'(\x13mc\x9a\xa7\x90\x8bj\x1eW\xa3\x1c\x1e\x0b\xbb)\xa9\xd6]\xb7YM!\xce\x1c\x90\xc1T\x98\xbd>\x1e\xe3\x10\x81}i\xd2\xd9^\x18\x1f\x12\xf1\x93q&\x05!\xc9\xf7\xa4idh(ltX\x93\x0f6c\x01\xc9\xc1\x11$]G\xf4\x13\xd1\xe3}t\xc2\x1d@ \xe3\xa2\xa1\xeb\xb8\xea\xe3T\xb7/V\x97J\x84o\xd0\xd5\xf4F\xea3\xd7\x9b+D\x87u\xa5\x97\xc7\x07KE\xcf\xf3\xbdfoi_\x01\x08_\xc7\r[\xc3\xe6\xb0\xb9\xb4\xa7\x000\x0c\xc5H\x0b.:\xd6\xefw\xfa\x03\x7f\x8e\xd5@E\xd1b{\xd0\x1a4j\x06^\xb3\xdfX\xc3\xf7|\xf95\xf0\nT\x14\xbd5\xfch\x14\x94>\xd4@E\xd1\xb7\xf8\xa4U\x0f<\x03\xaf@E\xb1\xb9\x86o\xb9\xbd\x81\xd72\xf0\n\x94\x10\x9c\x1d\xae\xa1]\xbf\xd9\x08\x16\xa3]B\xc6\x94\\\xb1\xc2;\xbe7j\xd5\xe7\xf0\x12U\xd5fW\xa1\x9f\xf1Ms-\x85wi>\x12\x00\x15\\\xc8q\x06\xf8l\x82\xc60\x14\xb8\x97?~\xf5\xef\xe3\xcf\xc1?O\x7fx\xf9\xe8\x1b\x07L`F\x99\x10\xbbuw\xe46\xc4\xaf\xfcz\xaa\xa4<\x02\xb7\x10\xd4\xb4\x0bQ\xc8\xd6D\x92\x0f`a\x8e\'\xbc\xeb|*\xac:\x1a\xe4\xd5\xf3\x9f_=\x7f\nN\x1f<;}\xf0\xdb\xe9\xc3\x87\xa7\x0f~\xb5h]\x81Y\xack\x99L\xadx\xa6\xe3\xff\xfc\xe5\x8b?~\xff\xda\x0e\xe4:\xf0\xc5\xb7O\xfez\xf6\xe4\xc5w_\xfe\xfd\xd3#\x0b\xbc\x97\xc3\x03\x1d\xbe\x8fS\xc4\xc05t\x0cn\xd2T\x0c\xcc\xd2\x01:\xc8\xdfLc?\x81X\xd7\xe8e1\x83\x19\x94:\x16\xf4\x90\'\x06\xfa\xda\x0c\x12h\xc1\xf5\x91\xe9\xc1\xdb\xb9H\x136\xe0\xe5\xe9]\x83\xf0^\x92O9\xb6\x00w\x92\xd4\x00\xeeRJ\xfa4\xb7\x8eiG\xf6\xa5{a\x9a\xc5\xf6\xce\xf3\xa9\x8e\xbb\t\xe1\x91\xad\xef`%\xbe\xc3\xe9D\xccwl3\x19$\xc8\xa0y\x83\x88\x90\xc3\x18e\x88\x03\xd9F\x0f\x11\xb2\xa8\xdd\xc1\xd8\xf0\xeb.\x0es\xca\xe8\x98\x83;\x18\xf4!\xb6\xbad\x1f\x1f\x18\xb3\xa9T\xba\x82S\x11\x97\x99\x8d\xa0\x88\xb7\xe1\x9b\xdd\xdb\xa0O\x89\xcd\xfc\x00\x1d\x99H\xb1* \xb1\x99D\xc4p\xe3e8\xe50\xb52\x86)\xd1\x91W!Ol$\xf7fyh8\x9cq\x11\xe9\x18\x11\n\x86\x11b\xcc\xa6s=\x9f\x19tw\xa0\xc8W\xd6\xb0\xef\x92Yj"s\x8e\x0fm\xc8\xab\x90R\x1d9\xa0\x87A\x02\xd3\x89\x953\xce\x12\x1d\xfb\t;\x14S\x14\x82\x1b\x94[IPs\x85\xc8\xba\x88\x03\xcc6\x86\xfb6FF\xb8_\xbf\xb6o\xe1\xd8\xa0TN\x10\xd92\xcdmK\x02Qs=\xce\xc8\x18"e\xbc\xba\x92\xcfS\x9c\xbd]r\xf7\xdfor\x17\xe9\xf4\xc5\xf7\x8f\xed\xd9\xf7\\\xa6\xf5^\x8e\xad\xebj5\x99o\xc2\xad\xa6\xf0\x80\xe6\x11>\xff\x19|\x00\xa7\xd9\r$\x16\x8d\x05\xfa!\x81\x7fH\xe0\xff\xfb\x04\xbei=\x9f}\xda.3\xb5:\xca/\x0e\xec\xcaL\xba\xf1\xf4>\xc6\x84\xec\xf1\x19AW\x99\xca\xf1L\x0c/\x1a\t\xa1\xaa(\xa5\xe5ea\x92\x88\xe2\xbc;\x03\x17\xe7P\x95AN\xf9g\x98\'{\t\x9c\x88nj\xaa\x87\x98\xcdM\xc7\x0cL(\x13\xfb\x83\x12[m\xcb\x062MwiTHk\xb5\xc5\xfdT(@^\xca\xc5\xfe\xb2\x90\x8b=\x89\x17\xd2f\xab\xbc\x88-\xcd\xabZ\xac.\xcc\x0b\x02R\xf7MHh\x9d\x99$\x1a\x16\x12\xad\x85\xf05$\xd4\xc8\xce\x84E\xc7\xc2\xa2-\xcdod\xa1\x1e\xf3\xa8\x88\xf5\x07\xa0\xfck\xc3\xf7\nFb\xbeA\x82"\x19\xa7B\x7f\x11\xdd3\x8f\xf4&g\x9a\xc3\xae[\x86\xd7\x91\\\xcf&\xd2\x06\tm\xba\x99$\xb4i\x98\xc0\x08\xad\x8a\xcf8\xd6\x9d2\xa4\x06=\xe9\x8au\x1a\xad\xf6\xfb\x88\xb5L"+\xb9\x81df\r\x1c\x8b5\xd7\xf0\x85\x99\x10N\xba\xceX\x9c\x0fE1\x9d\x08{L\xe6MH\xe2\xac\xeb\x84|\xee\xe8\xb7\xc9,\x93\x9c\xf1\x01dI\x01SM\xc5\xf8S\xccQ\x0e\x08N\xc5\\\xd7\xc3@\xb2\x92[\xad\xde\x92c<\xa7\xe4:\xee\xf9\xf3\x9cz\xe8AF\xe31\n\xf9\x06IY\x15m\x85\x11k\xeb;\x82e\x85N\x05\xe9\xbd$:\x06\x07d\x9a\xdf\x84\xc2Q~\xab&\x1d\x18a\xc6\x97\xde\x8cp\xaeM\xee\xd2\x8b+\xe9j\xbe\x14\x8d\xff\xcd\xca%\n\xc9$\x81\xf3\x1dEO\xe6\x05\\\x95\x97t\xb4q(\xa6\xab\xa32\xeb\xf3\xc1\x1c\xc42H\xef\xbc\xeb\xbe^I6hIs\xc3\x06"wM{\xfex\x7f\x9b\xbc\xc6\xaa\xcc\xfb\x06\xab"u\xaf\xe6\xba\xce"\xd7m\xda%\xde}C\xd0\xa8\x95\x9d\x19\xd4$c\x0b\xb5RjR;\xc3\x03\x81\xd6\xddrjn\xda#\xcez7X\x9d\xb5r\x83X\x9c+Um\xed\x05\x05=\xb8+f\xfe@\x1cW\xa7\x843E\x15\x9d\x88;B\xb0\xf8k\xb9\xc8\x04J\xba\xc8.\'\x1cLs\xdcu\xee\xb9~\xcf\x0b\xea~Pq\xdb\xfe\xb0\xe25<\xb7\xd2\xf6{\x8dJ\xcf\xf7\x1b\xb5\xa1_s\x07\xfd\xfa}\xe1\x14\x9e\xa45\xbf\xe8{$\xee3d6\x7f\xff\xa2\xe4k\xef`\xd2\xc51\xfbBH\xd3*U\xe7\xe0\xaaRV\xef`j\xf5\xcd\xef`\x00\x16\x9e\xb9\xd7\xac\x8f:\x8dN\xbfY\xe94z\xa3\x8a7\xe8\xb7+\x9d\xa0\xd9\xaf\x0c\x9aAk0\x1a\x04~\xbb3\xba\xef\x80#\x05\xf6z\x8d\xc0k\x0e\xdb\x95f-\x08*^\xd3\x95\xf4\xdb\x9dJ\xcb\xab\xd7{^\xab\xd7\x1ez\xbd\xfbs_\x8b\x91/\x9e\x0b\xf7*^\xdb\xff\x01\x00\x00\xff\xff\x03\x00PK\x03\x04\x14\x00\x06\x00\x08\x00\x00\x00!\x00[m\xfd\x93\t\x01\x00\x00\xf1\x01\x00\x00\x14\x00\x00\x00word/webSettings.xml\x94\xd1\xc1J\x031\x10\x06\xe0\xbb\xe0;,\xb9\xb7\xd9\x16\x15Y\xba-\x88T\xbc\x88\xa0>@\x9a\xce\xb6\xc1L&\xcc\xa4\xae\xf5\xe9\x1dk\xadH/\xf5\x96I2\x1f3\xfc\x93\xd9;\xc6\xea\rX\x02\xa5\xd6\x8c\x86\xb5\xa9 yZ\x86\xb4j\xcd\xcb\xf3|pm*).-]\xa4\x04\xad\xd9\x82\x98\xd9\xf4\xfcl\xd27=,\x9e\xa0\x14\xfd)\x95*I\x1a\xf4\xadY\x97\x92\x1bk\xc5\xaf\x01\x9d\x0c)C\xd2\xc7\x8e\x18]\xd1\x92W\x16\x1d\xbfn\xf2\xc0\x13fW\xc2"\xc4P\xb6v\\\xd7Wf\xcf\xf0)\nu]\xf0pK~\x83\x90\xca\xae\xdf2D\x15)\xc9:d\xf9\xd1\xfaS\xb4\x9ex\x99\x99<\x88\xe8>\x18\xbf=t!\x1d\x98\xd1\xc5\x11\x84\xc13\tue\xa8\xcb\xec\'\xdaQ\xda>\xaaw\'\x8c\xbf\xc0\xe5\xff\x80\xf1\x01@\xdf\xdc\xaf\x12\xb1[D\x8d@\'\xa9\x143S\xcd\x80r\t\x18>`N|\xc3\xd4\x0b\xb0\xfd\xbav1R\xff\xf8p\xa7\x85\xfd\x13\xd4\xf4\x13\x00\x00\xff\xff\x03\x00PK\x01\x02-\x00\x14\x00\x06\x00\x08\x00\xa2b\x9dHRZ>\x86L\x01\x00\x00\x1a\x05\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00[Content_Types].xmlPK\x01\x02-\x00\x14\x00\x06\x00\x08\x00\x00\x00!\x00\x1e\x91\x1a\xb7\xef\x00\x00\x00N\x02\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00}\x01\x00\x00_rels/.relsPK\x01\x02-\x00\x14\x00\x06\x00\x08\x00\xa2b\x9dHv\x91o\xe84\x01\x00\x00\x9d\x02\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x02\x00\x00docProps/app.xmlPK\x01\x02-\x00\x14\x00\x06\x00\x08\x00\xa2b\x9dH\xbe#\x83$T\x01\x00\x00<\x02\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x03\x00\x00docProps/core.xmlPK\x01\x02-\x00\x14\x00\x06\x00\x08\x00\xa2b\x9dH\xbe}\xa7=\xe3\x00\x00\x00&\x03\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00z\x05\x00\x00word/_rels/document.xml.relsPK\x01\x02-\x00\x14\x00\x06\x00\x08\x00\xa2b\x9dHy\x07\xcc\x88\x93\x04\x00\x00\x1f\x0f\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x06\x00\x00word/document.xmlPK\x01\x02-\x00\x14\x00\x06\x00\x08\x00\xa2b\x9dH\x89\x11\x16L\xd4\x01\x00\x00"\x04\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Y\x0b\x00\x00word/fontTable.xmlPK\x01\x02-\x00\x14\x00\x04\x00\x08\x00\xa2b\x9dH\x14<\x8d\xb0\\\x04\x00\x00O\x0b\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00]\r\x00\x00word/settings.xmlPK\x01\x02-\x00\x14\x00\x06\x00\x08\x00\xa2b\x9dH3_\xbd\xab\xf0\x0b\x00\x00\x99{\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x11\x00\x00word/styles.xmlPK\x01\x02-\x00\x14\x00\x06\x00\x08\x00\x00\x00!\x00\xbf\xb9\x9dr\x1b\x06\x00\x00\x91\x1a\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x1e\x00\x00word/theme/theme1.xmlPK\x01\x02-\x00\x14\x00\x06\x00\x08\x00\x00\x00!\x00[m\xfd\x93\t\x01\x00\x00\xf1\x01\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00S$\x00\x00word/webSettings.xmlPK\x05\x06\x00\x00\x00\x00\x0b\x00\x0b\x00\xc1\x02\x00\x00\x8e%\x00\x00\x00\x00'

2. 이재현

  • 문제 소개 : 나의 독서 데이터를 통한 패턴 확인
  • 기획 의도 : 데이터 분석이라는 거창한 주제를 생활 속에서 시작하기
  • 주로 seaborn의 factorplot을 이용했고, 마지막 차트만 matplotlib의 scatter를 이용
  • 대문자로 시작하는 변수, 사용하지 않는 Series를 import

In [154]:
from pandas import DataFrame
import pandas as pd
import numpy as np

In [217]:
book = pd.read_excel('book.xlsx')
book.head()


Out[217]:
Title Subtitle Author Tranlator Publisher Publish Date Format Pages ISBN Status ... Category Started Reading Finished Reading Reading Period Borrowed Have Weekend Reading Time Read Reason Found Route Route Category
0 프레임 나를 바꾸는 심리학의 지혜 최인철 NaN 21세기북스 39253 eBook 188 9788950911546 Read ... 자기계발 2015-12-30 2016-01-05 6 N Y 0 지인추천 NaN NaN
1 왜 나는 범죄를 공부하는가 최고의 프로파일러 표창원 박사의 두려움 없는 공부 표창원 NaN 다산북스 2015-03-17 00:00:00 eBook 229 9791130604909 Read ... 자기계발 2016-01-05 2016-01-07 2 N N 0 검색 정의의적들 TV프로그램
2 정의의 적들 정의는 때로 천천히, 하지만 반드시 온다 표창원 NaN 한겨레출판 2014-05-19 00:00:00 eBook 312 8984318116 Read ... 사회학 2016-01-08 2016-01-11 3 N Y 0 검색 정의의적들 TV프로그램
3 로봇 시대,인간의 일 인공지능 시대를 살아가야 할 이들을 위한 안내서 구본권 NaN 어크로스 2015-12-15 00:00:00 Paperback 342 9788997379767 Read ... 인문일반 2016-01-12 2016-01-14 2 Y N 0 지인추천 NaN NaN
4 숨겨진 심리학 NaN 표창원 NaN 토네이도 2011-04-11 00:00:00 book 226 9788994013343 Read ... 자기계발 2016-01-14 2016-01-18 4 Y Y 0 검색 정의의적들 TV프로그램

5 rows × 23 columns


In [223]:
book.Tranlator = book.Tranlator.fillna('없음')

In [225]:
book[['Title', 'Tranlator', 'Rating', 'Yes24 Rating', 'Read Reason', 'Found Route', 'Route Category']]


Out[225]:
Title Tranlator Rating Yes24 Rating Read Reason Found Route Route Category
0 프레임 없음 8 8 지인추천 NaN NaN
1 왜 나는 범죄를 공부하는가 없음 10 8 검색 정의의적들 TV프로그램
2 정의의 적들 없음 8 8 검색 정의의적들 TV프로그램
3 로봇 시대,인간의 일 없음 10 8 지인추천 NaN NaN
4 숨겨진 심리학 없음 8 8 검색 정의의적들 TV프로그램
5 사피엔스 조현욱 10 8 지인추천 NaN NaN
6 조선 의 킹메이커 없음 10 8 관심 대화 정보공유
7 왜 분노해야하는가 없음 10 8 검색 Facebook 광고
8 꼭 알고 싶은 심리학의 모든 것 없음 5 10 검색 리디북스 검색
9 세상의 모든 심리학 없음 10 8 검색 버스 광고
10 내리막 세상에서 일하는 노마드를 위한 안내서 없음 8 8 관심 나는프로그래머다 팟캐스트
11 어떻게 읽을 것인가 없음 10 8 지인추천 NaN NaN
12 시골의사 박경철의 자기혁명 없음 10 8 지인추천 NaN NaN
13 오리지널스 홍지수 10 10 검색 리디북스 검색
14 컴퓨터과학이 여는 세계 없음 10 10 지인추천 NaN NaN
15 시민의교양 없음 10 8 검색 서점 오프라인검색
16 지적 대화를 위한 넓고 얕은 지식(역사,경제,정치,사회,윤리) 없음 10 8 검색 시민의교양 표지
17 지적 대화를 위한 넓고 얕은 지식: 현실너머 편 없음 9 8 검색 시민의교양 표지

In [208]:
book['Diff'] = np.abs(book['Rating']-book['Yes24 Rating'])

In [209]:
book[['Title', 'Diff']]


Out[209]:
Title Diff
0 프레임 0
1 왜 나는 범죄를 공부하는가 2
2 정의의 적들 0
3 로봇 시대,인간의 일 2
4 숨겨진 심리학 0
5 사피엔스 2
6 조선 의 킹메이커 2
7 왜 분노해야하는가 2
8 꼭 알고 싶은 심리학의 모든 것 5
9 세상의 모든 심리학 2
10 내리막 세상에서 일하는 노마드를 위한 안내서 0
11 어떻게 읽을 것인가 2
12 시골의사 박경철의 자기혁명 2
13 오리지널스 0
14 컴퓨터과학이 여는 세계 0
15 시민의교양 2
16 지적 대화를 위한 넓고 얕은 지식(역사,경제,정치,사회,윤리) 2
17 지적 대화를 위한 넓고 얕은 지식: 현실너머 편 1

In [210]:
book['Diff'].describe()


Out[210]:
count    18.000000
mean      1.444444
std       1.293523
min       0.000000
25%       0.000000
50%       2.000000
75%       2.000000
max       5.000000
Name: Diff, dtype: float64

In [215]:
book[book['Diff'] == 5][['Title', 'Diff']]


Out[215]:
Title Diff
8 꼭 알고 싶은 심리학의 모든 것 5

3. 정인환

  • TicTacToe

In [186]:
from IPython.display import Image
Image(url='https://raw.githubusercontent.com/inhwane/kookmin-1/master/images/TicTaeToe.png')


Out[186]:

In [190]:
import sys
go = input("계속하시겠습니까?")
if (go == 'x' or go == 'X'):
    print(go)


계속하시겠습니까?x
x

In [192]:
import sys
go = input("계속하시겠습니까?")
if (go.lower() == 'x'):
    print(go)


계속하시겠습니까?X
X

4. 이주경

  • 주 단위를 일 단위로

In [248]:
# 1년은 52주로 구성됨
week = list(range(1, 53))  # range 함수의 첫 번째 파라매터에는 시작할 숫자, 두 번째 파라매터에는 끝나는 숫자보다 1 큰 수를 넣어줌

In [247]:
# 한 주는 7일로 구성되어 있으므로 첫 번째 주의 가운데 날인 4번째 일을 그 주의 대표값(일)로 표시 (두 번째 주의 대표일은 11일)
representative_day = list(range(4, 365, 7))  # range의 세 번째 파라매터에는 간격이 들어감

In [251]:
import random
search = []

# 52주(1년) 동안의 주간 검색량 생성
# range 함수는 기본값이 0부터 시작하므로 range(52)라고 해도 무방
for i in range(0, 52):
    # search += [random.randint(0, 100)]
    search = search + [random.randint(0, 100)] #검색량 트렌드 데이터가 0~100 사이로 검색량을 나타내므로 0과 100 사이의 숫자 생성

In [260]:
np.random.randint(100, size=52)


Out[260]:
array([66,  8, 86, 21, 95, 95, 81, 90, 23, 83, 66, 89, 46, 73, 73, 95, 43,
       49, 24, 10, 42, 55,  5, 39,  2, 56, 48, 27, 30,  9, 48, 76, 74, 56,
       15, 15, 34, 32,  7,  5, 51, 88, 30, 32, 68, 94, 21, 12, 26, 72, 66,
       87, 42, 93, 90, 73, 90, 66, 57, 25, 36, 97, 27,  0, 46,  1,  5,  2,
       10, 36, 31, 33, 67, 67, 68, 62, 56, 31, 37,  0, 84,  8, 99,  1, 95,
       15, 55, 77,  2, 91, 94, 95, 32, 43, 31, 49, 70, 60, 61, 92])

In [274]:
data = {
    'week': week,
    'day': representative_day,
    'search_volume': search,
}

In [272]:
data1 = {
    'week': week,
    'day': representative_day,
    'search_volume': np.random.randint(100, size=52),
}

In [270]:
frame = DataFrame(data)
frame


Out[270]:
day search_volume week
0 4 56 1
1 11 86 2
2 18 44 3
3 25 64 4
4 32 34 5
5 39 73 6
6 46 9 7
7 53 95 8
8 60 31 9
9 67 43 10
10 74 47 11
11 81 86 12
12 88 89 13
13 95 40 14
14 102 72 15
15 109 95 16
16 116 72 17
17 123 10 18
18 130 65 19
19 137 28 20
20 144 86 21
21 151 39 22
22 158 17 23
23 165 8 24
24 172 51 25
25 179 73 26
26 186 52 27
27 193 49 28
28 200 86 29
29 207 2 30
30 214 67 31
31 221 45 32
32 228 52 33
33 235 61 34
34 242 68 35
35 249 64 36
36 256 22 37
37 263 27 38
38 270 68 39
39 277 41 40
40 284 71 41
41 291 59 42
42 298 4 43
43 305 72 44
44 312 97 45
45 319 47 46
46 326 84 47
47 333 38 48
48 340 3 49
49 347 27 50
50 354 86 51
51 361 35 52

In [275]:
frame1 = DataFrame(data1)
frame1


Out[275]:
day search_volume week
0 4 3 1
1 11 98 2
2 18 50 3
3 25 45 4
4 32 12 5
5 39 89 6
6 46 37 7
7 53 52 8
8 60 35 9
9 67 8 10
10 74 35 11
11 81 31 12
12 88 90 13
13 95 83 14
14 102 53 15
15 109 44 16
16 116 64 17
17 123 61 18
18 130 8 19
19 137 28 20
20 144 80 21
21 151 5 22
22 158 31 23
23 165 77 24
24 172 45 25
25 179 85 26
26 186 83 27
27 193 83 28
28 200 50 29
29 207 64 30
30 214 58 31
31 221 40 32
32 228 35 33
33 235 77 34
34 242 84 35
35 249 84 36
36 256 25 37
37 263 99 38
38 270 34 39
39 277 10 40
40 284 65 41
41 291 65 42
42 298 43 43
43 305 67 44
44 312 27 45
45 319 65 46
46 326 53 47
47 333 84 48
48 340 1 49
49 347 50 50
50 354 59 51
51 361 49 52

5. 장윤호

  • 유클리드 호제법

In [276]:
1071 % 1029


Out[276]:
42

In [297]:
1029 % 42


Out[297]:
21

In [343]:
from math import gcd
gcd(1, 2)


Out[343]:
1

In [311]:
def euclidean(a,b):
    if a > b:
        high = a
        low = b
        r = 1
        while r <= 0:
            r = high % low
            high = low
            low = r
        low = (a*b)/high
        return low, high
    elif a < b:
        high = b
        low = a
        r = 1
        while r <= 0:
            r = high % low
            high = low
            low = r
        low = (a*b)/high
        return low, high
    elif a==b:
        print ("서로 다른 수를 기입하십시오.")

In [316]:
euclidean(10,1)


Out[316]:
(1.0, 10)

In [315]:
euclidean(1, 2)


Out[315]:
(1.0, 2)

6. 박정훈


In [1]:
import csv

list1 = []
list2 = []
cnt = 1

f = open("test.csv", 'r')
list_temp = csv.reader(f)

for row in list_temp:
    if cnt == 1:
        list1 = row
        cnt += 1
    else:
        list2 = row
f.close()

def grasp_command(command):
    try:
        temp = command[:command.index('(')]
        
        if command == 'q()':
            return 'exit'
        elif temp == 'stat' or temp =='cov' or temp =='min_sort' or temp =='max':
            return command
        else:
            return 'false'
    
    except:
        return 'false'

def func_str(command):
    temp = 0
    for i in command:
        temp = temp + int(i)
    print("average : %.2f" % (temp / len(command)))

def func_min_sort(command):
    cnt = len(command)
    new_list = []

    while cnt != 0:
        a = min(command)
        new_list.append(a)
        command.remove(a)
        cnt -= 1
    
    print(new_list)        
    
def run_func(meaning):
    command = meaning[:meaning.index('(')]
    parameter_temp = meaning[meaning.index('(')+1:meaning.index(')')]
    
    if parameter_temp == 'list1':
        parameter = list1
    elif parameter_temp == 'list2':
        parameter = list2
    else:
        print("Error in str(" + str(parameter_temp) + ") : object '" + str(parameter_temp) + "' not found")
        return 0
         
    if command == 'stat':
        func_str(parameter)
    elif command == 'cov':
        print("cov")
    elif command == 'min_sort':
        func_min_sort(parameter)
    elif command == 'max':
        print("max")

print("R version 3.2.4 Revised (2016-04-23 r70336) -- 'PYTHON'")
print("Type 'demo()' for some demos, 'help()' for on-line help, or")
print("help.start()' for an HTML browser interface to help.")
print("Type 'q()' to quit R.\n")
    
while(1):
    command = input("> ")
    meaning = grasp_command(command)
    
    if meaning == 'exit':
        break
    elif meaning == 'false':
        print("Error: object '" + command + "' not found")
    else:
        run_func(meaning)


R version 3.2.4 Revised (2016-04-23 r70336) -- 'PYTHON'
Type 'demo()' for some demos, 'help()' for on-line help, or
help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> 1
Error: object '1' not found
> q
Error: object 'q' not found
> q()

In [347]:
command = "x <- c(1, 2, 3, 4, 5)"

In [348]:
command.index("<")


Out[348]:
2

In [350]:
command[command.index("<"):command.index("<")+2]


Out[350]:
'<-'

In [355]:
parameter_info = command[command.index("(")+1:command.index(")")]
parameter_info


Out[355]:
'1, 2, 3, 4, 5'

7. 권우찬


In [359]:
def clock(num):
    sec = 0
    for h in range(1, 25):
        for m in range(60):
            if str(num) in str(h) + str(m): # 문자열로 변환한 시간에 해당 숫자가 들어있으면
                sec += 60
    return sec

print(clock(5))


27000

8. 김영준

팀성적분석(전체, 최근5경기)


In [4]:
team3 = [1, 0, 1, 1, 0, 0, 1, 1, 1]

def score (lst):
    s_score = sum(lst) / len(lst)
    
    amt = 0
    for a in (lst[-5::]):
        amt += a
    
    f_score = amt / 5
    
    return s_score, f_score

score(team3)


Out[4]:
(0.6666666666666666, 0.6)
  • Slicing: 객체[시작인덱스:끝인덱스:스텝]
  • 예약어 int를 변수로 사용하지 말자
  • 최근 5경기라는 말의 5는 얼마든지 조정될 수 있는 숫자이므로 이것도 사용자로부터 받아오는 것은 어떨까요!?

In [63]:
def all_avg(team):
    """전체 평균구하기"""
    s_score = sum(team) / len(team)
    return s_score

In [97]:
def recent_avg(team, games=5):
    """최근 평균구하기"""
    f_score = sum(team[-games:]) / games
    return f_score

In [6]:
team = [1, 0, 1, 1, 0, 0, 1, 1, 1]

In [99]:
all_avg(team)


Out[99]:
0.6666666666666666

In [114]:
recent_avg(team, games=3)


Out[114]:
1.0

In [96]:
def avg(team, *args):
    """평균구하기
    args: 인자값중 첫번째 값이 최근 경기수를 나타낸다.
    """
    if args:  # args가 참이면, 있다면
        games = args[0]
    else:
        games = len(team)
    
    avg_score = sum(team[-games:]) / games
    return avg_score

print(avg(team, 4), avg(team))


0.75 0.6666666666666666

In [7]:
def avg(team, games=len(team)):
    """평균구하기"""
    avg_score = sum(team[-games:]) / games
    return avg_score

print(avg(team, games=4), avg(team))


0.75 0.6666666666666666

In [9]:
%timeit score(team3)


The slowest run took 7.27 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 880 ns per loop

In [11]:
%timeit avg(team)


The slowest run took 6.20 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 576 ns per loop

9. 노민욱


In [365]:
print("구구단 만들기.\n")
for x in range(2, 10): #2 부터 10 미만을 뜻한 첫번째 반복문
    print("<" + str(x) + "단>") #X를 문자값으로 프린트
    for y in range(1, 10): # 1부터 10미만 반복문 안에 두번째 반복문
        print(x, "X", y, "=", x*y) # 최종 프린트 결과


구구단 만들기.

<2단>
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
2 X 6 = 12
2 X 7 = 14
2 X 8 = 16
2 X 9 = 18
<3단>
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15
3 X 6 = 18
3 X 7 = 21
3 X 8 = 24
3 X 9 = 27
<4단>
4 X 1 = 4
4 X 2 = 8
4 X 3 = 12
4 X 4 = 16
4 X 5 = 20
4 X 6 = 24
4 X 7 = 28
4 X 8 = 32
4 X 9 = 36
<5단>
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
<6단>
6 X 1 = 6
6 X 2 = 12
6 X 3 = 18
6 X 4 = 24
6 X 5 = 30
6 X 6 = 36
6 X 7 = 42
6 X 8 = 48
6 X 9 = 54
<7단>
7 X 1 = 7
7 X 2 = 14
7 X 3 = 21
7 X 4 = 28
7 X 5 = 35
7 X 6 = 42
7 X 7 = 49
7 X 8 = 56
7 X 9 = 63
<8단>
8 X 1 = 8
8 X 2 = 16
8 X 3 = 24
8 X 4 = 32
8 X 5 = 40
8 X 6 = 48
8 X 7 = 56
8 X 8 = 64
8 X 9 = 72
<9단>
9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81

10. 조재환


In [447]:
morse = {
    '.-':'A','-...':'B','-.-.':'C','-..':'D','.':'E','..-.':'F',
    '--.':'G','....':'H','..':'I','.---':'J','-.-':'K','.-..':'L',
    '--':'M','-.':'N','---':'O','.--.':'P','--.-':'Q','.-.':'R',
    '...':'S','-':'T','..-':'U','...-':'V','.--':'W','-..-':'X',
    '-.--':'Y','--..':'Z', '':' '
}

In [448]:
senten = input("What's going on? ")
senten = ".".join(senten)
senten = senten.split('.')
print(senten)

for dot, capi in morse.items():
    if capi in senten:
        print(dot,end=" ")
        print(morse.get(dot), end=" ")


What's going on? am late
['a', 'm', ' ', 'l', 'a', 't', 'e']
   

In [453]:
senten = input("What's going on? ")

for dot, capi in morse.items():
    if capi in senten:
        print(dot, end=" ")


What's going on? I A LATE
 - .-.. . .. .- 

11. 기연수


In [2]:
def cypro(k):                     # def 으로 cypro(k)라는 함수를 정의해준다.
    cl = 1                        # cl의 값을 1로 할당. (cl = 싸이클의 길이 = 1부터 시작)
    while k != 1:                 # while(조건반복) k≠1 인지 계속 비교 (k=1이면 반복중지)
        if k%2 == 0:              # 만약 k를 2로 나누었을때 나머지가 0이라면 (k가 짝수라면)
            k = k/2               # k는 k/2 으로 할당해준다.              
        else:                     # k가 홀수라면
            k = 3*k + 1           # k를 3*k+1 으로 할당해준다.
        cl += 1                   # 이때 cl 변수 값은 1 증가한다. 
    return cl                     # 증가한 cl 변수 값을 반환. 다시 반복. ** 여기까지가 cypro함수 정의

In [5]:
i = int(input('INPUT MIN NUM : '))  # 문자열 'INPUT MIN NUM : '을 받아 (소수점이 없는) 정수로 만들어줌
j = int(input('INPUT MAX NUM : '))

arw = []                            # arw에 빈 리스트 할당. (빈 리스트를 만든 이유: 뒤에서 arw리스트에 항목을 추가하기 위함)
for t in range(i, j+1):            # i부터 j까지 의 숫자 시퀀스에서 t에 대해 반복
    arw.append(cypro(t))          # arw리스트 끝에 cypro(t) 항목을 추가. 즉 비어있는 arw리스트를 cypro(t)로 채운다.
print(max(arw))                   # arw의 최대값을 출력


INPUT MIN NUM : 10
INPUT MAX NUM : 20
21

In [6]:
i=int(input('INPUT MIN NUM : '))  # 문자열 'INPUT MIN NUM : '을 받아 (소수점이 없는) 정수로 만들어줌
j=int(input('INPUT MAX NUM : '))

arw = []                            # arw에 빈 리스트 할당. (빈 리스트를 만든 이유: 뒤에서 arw리스트에 항목을 추가하기 위함)
for t in range(i, j+1):            # i부터 j까지 의 숫자 시퀀스에서 t에 대해 반복
    arw.append(cypro(t))          # arw리스트 끝에 cypro(t) 항목을 추가. 즉 비어있는 arw리스트를 cypro(t)로 채운다.
print(max(arw))                   # arw의 최대값을 출력


INPUT MIN NUM : 20
INPUT MAX NUM : 10
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-6-872dfdc00a52> in <module>()
      5 for t in range(i, j+1):            # i부터 j까지 의 숫자 시퀀스에서 t에 대해 반복
      6     arw.append(cypro(t))          # arw리스트 끝에 cypro(t) 항목을 추가. 즉 비어있는 arw리스트를 cypro(t)로 채운다.
----> 7 print(max(arw))                   # arw의 최대값을 출력

ValueError: max() arg is an empty sequence

In [9]:
i = int(input('INPUT NUM1 : '))  # 문자열 'INPUT MIN NUM : '을 받아 (소수점이 없는) 정수로 만들어줌
j = int(input('INPUT NUM2 : '))



arw = []                            # arw에 빈 리스트 할당. (빈 리스트를 만든 이유: 뒤에서 arw리스트에 항목을 추가하기 위함)
for t in range(min(i, j), max(i, j)+1):            # i부터 j까지 의 숫자 시퀀스에서 t에 대해 반복
    arw.append(cypro(t))          # arw리스트 끝에 cypro(t) 항목을 추가. 즉 비어있는 arw리스트를 cypro(t)로 채운다.
print(max(arw))                   # arw의 최대값을 출력


INPUT NUM1 : 20
INPUT NUM2 : 10
21

12. 한호준


In [136]:
import requests
import lxml.html
import konlpy
from konlpy.tag import Kkma, Twitter, Komoran, Hannanum
from konlpy.utils import pprint
from collections import Counter


---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-136-7a810a293ac0> in <module>()
      1 import requests
      2 import lxml.html
----> 3 import konlpy
      4 from konlpy.tag import Kkma, Twitter, Komoran, Hannanum
      5 from konlpy.utils import pprint

/Users/initialkommit/.virtualenvs/kookmin/lib/python3.5/site-packages/konlpy/__init__.py in <module>()
     13 from . import data
     14 from . import internals
---> 15 from . import tag

/Users/initialkommit/.virtualenvs/kookmin/lib/python3.5/site-packages/konlpy/tag/__init__.py in <module>()
      2 import warnings
      3 
----> 4 from ._hannanum import Hannanum
      5 from ._kkma import Kkma
      6 from ._komoran import Komoran

/Users/initialkommit/.virtualenvs/kookmin/lib/python3.5/site-packages/konlpy/tag/_hannanum.py in <module>()
      5 import re
      6 
----> 7 import jpype
      8 
      9 from .. import jvm

ImportError: No module named 'jpype'

In [135]:
def extract(url, path):
    res = requests.get(url)
    res.encoding = 'cp949'
    root = lxml.html.fromstring(res.text)
    return root.xpath(path)

In [123]:
url = "http://news.naver.com/main/read.nhn?oid=421&sid1=101&aid=0002030562&mid=shm&cid=428288&mode=LSD&nh=20160430115322"
path = '//div[@id="articleBodyContents"]'