{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<hr>\n",
    "# IPython安装环境和基础工具箱介绍\n",
    "\n",
    "- Part 1: Python简介\n",
    "- Part 2: IPython安装环境及notebook介绍\n",
    "- Part 3: 基础工具箱介绍\n",
    "- Part 4: Working with Notebooks"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  Part1：Python简介\n",
    "\n",
    "\n",
    "### python定义\n",
    "\n",
    "Python是一种面向对象、直译式的计算机程序设计语言。它的语法简洁而清晰，具有丰富和强大的类库。它能够很轻松的把用其它语言制作的各种模块(尤其是C/C++)轻松地联结在一起。\n",
    "\n",
    "\n",
    "Python 本身也是由诸多其他语言发展而来的，这包括ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。Python 就是”浓缩的精华”：范·罗萨姆研究过很多语言，从中吸收了许多觉得不错的特性，并将它们溶于一炉。\n",
    "\n",
    "\n",
    "### Python特点 \n",
    "- 高级简单、易学、易读、易维护\n",
    "  - Python是一种代表简单主义思想的语言，有简单的语法，容易上手。\n",
    "  - Python的这种伪代码本质是它最大的优点之一。\n",
    "  - Python使你能够专注于解决问题而不是去搞明白语言本身。\n",
    "  - 不像其他语言，Python 没有给你多少机会使你能够写出晦涩难懂的代码，而是让其他人很快就能理解你写的代码，反之亦然。\n",
    "\n",
    "- 面向对象、高层\n",
    "  - 无需关注底层细节，而C/C++中需要操作指针。\n",
    "  - 与其他语言相比，Python以强大而又简单的方式实现面向对象编程。\n",
    "\n",
    "- 解释性、健壮性\n",
    "  - Python程序不需要编译成二进制代码，可以直接在源代码上运行。\n",
    "  - 对于编译性语言（C/C++），源文件->编译/链接器->可执行文件。\n",
    "  - 一旦Python 由于错误崩溃，解释程序就会转出一个“堆栈跟踪”，那里面有可用到的全部信息，包括程序崩溃的原因以及是那段代码（文件名、行数、行数调用等等）出错了\n",
    "\n",
    "- 免费开源、可移植\n",
    "  - Unix衍生系统，Win32系统家族，掌上平台（掌上电脑/手机），游戏控制台（PSP）等等。\n",
    "\n",
    "- 可扩展、可嵌入\n",
    "  - 如果一段关键代码希望运行得更快或者希望算法不公开，你可以把这部分程序用C或C++编写，然后在Python程序中使用它们。\n",
    "  - 你可以把Python嵌入到C/C++程序，从而向程序用户提供脚本功能。\n",
    "\n",
    "- 丰富的库\n",
    "  - Python标准库确实很庞大，包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、等等。\n",
    "  - 此外，还有其他高质量的库，如wxPython、Twisted和图像库等等。\n",
    "\n",
    "\n",
    "### Python生态圈\n",
    "\n",
    "- 多种解释器\n",
    "- Web应用：Dropbox、豆瓣、Instagram\n",
    "- 科学计算和大数据分析：Numpy、SciPy、Sckit-learn、Pandas、NLTK、Spark、Scrapy\n",
    "- 云计算：OpenStack，GAE、SAE、AWS\n",
    "- 自动化测试：unittest、Nose\n",
    "\n",
    "\n",
    "### Python学习方法\n",
    "\n",
    "- 使用F1查看帮助文档，搜索不懂的问题\n",
    "- 借助help(变量名)查看该变量的方法和属性 \n",
    "- 阅读其他人、其他项目的源代码\n",
    "- 动手编写些小项目程序(计算器/记账软件…)\n",
    "\n",
    "\n",
    "  \n",
    "### 解释器的选择\n",
    "\n",
    "- 官方原始的Python\n",
    "  - 不建议使用，自己一个一个安装所有的包\n",
    "- Pythonxy\n",
    "  - 集成式python科学计算环境，内置了很多科学计算常用的python扩展包，如numpy，matplotlib\n",
    "- Enthought Python Distribution (EPD)\n",
    "  - EPD是一个商业的Python发行版本，包括了众多的科学软件包，作为教学使用免费\n",
    "- Anaconda(推荐选择)\n",
    "  - Python之父吉多·范罗苏姆作为核心成员之一开发\n",
    "  - 支持python2.X和python3.X版本\n",
    "  - 支持windows，linux，mac os系统\n",
    "  - 集成了数据分析，科学计算相关的几乎所有常用安装包；比如Numpy, Scipy, Matplotlib, IPython等等\n",
    "  - 方便安装第三方扩展包\n",
    "    - https://www.continuum.io/downloads\n",
    "  - Anaconda将所有文件都安装属于自己的目录中(home/anaconda)。这意味着它的安装不会对你电脑上的任何版本Python产生影响，同时也不需要特殊权限(像    admin，root)来执行安装\n",
    "  - ./conda list 查看Anaconda安装\n",
    "  \n",
    "\n",
    "### IDE\n",
    "\n",
    "- 原生的IDLE并不好用\n",
    "- Ipython\n",
    "  - ipython 是一个python 的交互式shell，比默认的python shell 功能强大，支持变量自动补全，自动缩进，支持bash shell 命令，内置了许多很有用的功能和函数\n",
    "  \n",
    "Notebook功能\n",
    "\n",
    "- Eclipse+pydev\n",
    "- PyCharm\n",
    "  - 非常好用的Python集成开发环境\n",
    "  - Community版本是免费的\n",
    "  \n",
    "### 认识模块\n",
    "\n",
    "- Python代码的组织形式：.py文件\n",
    "- 典型的模块文件样式\n",
    "  - #!/usr/bin/python \n",
    "  - #encoding: utf-8 | #-\\*-coding:utf8-\\*- | coding:utf8\n",
    "  \n",
    "- python模块的执行方法\n",
    "  - python .py\n",
    "  - import \n",
    "  \n",
    "\n",
    "### 安装并使用pip和virtualenv（后续课程会介绍使用conda）\n",
    "\n",
    "#### pip\n",
    "- pip是最受欢迎的管理第三方(非标准库)Python包的包。\n",
    "- python3.4之后，pip包含在标准Python之中\n",
    "\n",
    "#### virtualenv\n",
    "- 经常和pip一起使用，允许我们将Python包安装到指定的路径(文件夹)中\n",
    "- 多个Python 运行环境共存\n",
    "- 每个环境维护自己的包版本\n",
    "- 相同模块的不同版本\n",
    "  - virtualenv Dev\n",
    "  - activate 激活环境\n",
    "  - deactivate 退出环境\n",
    "  \n",
    "  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The Zen of Python, by Tim Peters\n",
      "\n",
      "Beautiful is better than ugly.\n",
      "Explicit is better than implicit.\n",
      "Simple is better than complex.\n",
      "Complex is better than complicated.\n",
      "Flat is better than nested.\n",
      "Sparse is better than dense.\n",
      "Readability counts.\n",
      "Special cases aren't special enough to break the rules.\n",
      "Although practicality beats purity.\n",
      "Errors should never pass silently.\n",
      "Unless explicitly silenced.\n",
      "In the face of ambiguity, refuse the temptation to guess.\n",
      "There should be one-- and preferably only one --obvious way to do it.\n",
      "Although that way may not be obvious at first unless you're Dutch.\n",
      "Now is better than never.\n",
      "Although never is often better than *right* now.\n",
      "If the implementation is hard to explain, it's a bad idea.\n",
      "If the implementation is easy to explain, it may be a good idea.\n",
      "Namespaces are one honking great idea -- let's do more of those!\n"
     ]
    }
   ],
   "source": [
    "import this"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Part 2: IPython安装环境\n",
    "\n",
    "- 下载Anaconda: https://www.continuum.io/downloads, 有mac版本、Linux版本和windows版本。我们以Mac版本为例。\n",
    "- 清华镜像 https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/\n",
    "- The basic IPython client: at the terminal, simply type `ipython`:\n",
    "\n",
    "\n",
    "    $ ipython\n",
    "    Python 2.7.11 |Anaconda 2.5.0 (x86_64)| (default, Dec  6 2015, 18:57:58) \n",
    "    Type \"copyright\", \"credits\" or \"license\" for more information.\n",
    "\n",
    "    IPython 4.2.0 -- An enhanced Interactive Python.\n",
    "    ?         -> Introduction and overview of IPython's features.\n",
    "    %quickref -> Quick reference.\n",
    "    help      -> Python's own help system.\n",
    "    object?   -> Details about 'object', use 'object??' for extra details.\n",
    "\n",
    "    In [1]: print(\"hello world\")\n",
    "    hello world"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  利用``?``访问文档\n",
    "\n",
    "```ipython\n",
    "In [1]: help(len)\n",
    "Help on built-in function len in module builtins:\n",
    "\n",
    "len(...)\n",
    "    len(object) -> integer\n",
    "    \n",
    "    Return the number of items of a sequence or mapping.\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```ipython\n",
    "In [2]: len?\n",
    "Type:        builtin_function_or_method\n",
    "String form: <built-in function len>\n",
    "Namespace:   Python builtin\n",
    "Docstring:\n",
    "len(object) -> integer\n",
    "\n",
    "Return the number of items of a sequence or mapping.\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```ipython\n",
    "In [3]: L = [1, 2, 3]\n",
    "In [4]: L.insert?\n",
    "Type:        builtin_function_or_method\n",
    "String form: <built-in method insert of list object at 0x1024b8ea8>\n",
    "Docstring:   L.insert(index, object) -- insert object before index\n",
    "```\n",
    "\n",
    "\n",
    "```ipython\n",
    "In [5]: L?\n",
    "Type:        list\n",
    "String form: [1, 2, 3]\n",
    "Length:      3\n",
    "Docstring:\n",
    "list() -> new empty list\n",
    "list(iterable) -> new list initialized from iterable's items\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 函数文档访问\n",
    "\n",
    "```ipython\n",
    "In [6]: def square(a):\n",
    "  ....:     \"\"\"Return the square of a.\"\"\"\n",
    "  ....:     return a ** 2\n",
    "  ....:\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```ipython\n",
    "In [7]: square?\n",
    "Type:        function\n",
    "String form: <function square at 0x103713cb0>\n",
    "Definition:  square(a)\n",
    "Docstring:   Return the square of a.\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "len??"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```\n",
    "Signature: len(obj, /)\n",
    "Type:      builtin_function_or_method\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "len?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```\n",
    "Signature: len(obj, /)\n",
    "Docstring: Return the number of items in a container.\n",
    "Type:      builtin_function_or_method\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tab 健的使用"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Tab-completion of object contents\n",
    "\n",
    "Like with the ``help`` function discussed before, Python has a built-in ``dir`` function that returns a list of these, but the tab-completion interface is much easier to use in practice.\n",
    "To see a list of all available attributes of an object, you can type the name of the object followed by a period (\"``.``\") character and the Tab key:\n",
    "\n",
    "```ipython\n",
    "In [10]: L.<TAB>\n",
    "L.append   L.copy     L.extend   L.insert   L.remove   L.sort     \n",
    "L.clear    L.count    L.index    L.pop      L.reverse  \n",
    "```\n",
    "\n",
    "To narrow-down the list, you can type the first character or several characters of the name, and the Tab key will find the matching attributes and methods:\n",
    "\n",
    "```ipython\n",
    "In [10]: L.c<TAB>\n",
    "L.clear  L.copy   L.count  \n",
    "\n",
    "In [10]: L.co<TAB>\n",
    "L.copy   L.count \n",
    "```\n",
    "\n",
    "If there is only a single option, pressing the Tab key will complete the line for you.\n",
    "For example, the following will instantly be replaced with ``L.count``:\n",
    "\n",
    "```ipython\n",
    "In [10]: L.cou<TAB>\n",
    "\n",
    "```\n",
    "\n",
    "\n",
    "```ipython\n",
    "In [10]: L._<TAB>\n",
    "L.__add__           L.__gt__            L.__reduce__\n",
    "L.__class__         L.__hash__          L.__reduce_ex__\n",
    "```\n",
    "\n",
    "For brevity, we've only shown the first couple lines of the output.\n",
    "Most of these are Python's special double-underscore methods (often nicknamed \"dunder\" methods)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Tab completion when importing\n",
    "\n",
    "Tab completion is also useful when importing objects from packages.\n",
    "Here we'll use it to find all possible imports in the ``itertools`` package that start with ``co``:\n",
    "```\n",
    "In [10]: from itertools import co<TAB>\n",
    "combinations                   compress\n",
    "combinations_with_replacement  count\n",
    "```\n",
    "Similarly, you can use tab-completion to see which imports are available on your system (this will change depending on which third-party scripts and modules are visible to your Python session):\n",
    "```\n",
    "In [10]: import <TAB>\n",
    "Display all 399 possibilities? (y or n)\n",
    "Crypto              dis                 py_compile\n",
    "Cython              distutils           pyclbr\n",
    "...                 ...                 ...\n",
    "difflib             pwd                 zmq\n",
    "\n",
    "In [10]: import h<TAB>\n",
    "hashlib             hmac                http         \n",
    "heapq               html                husl         \n",
    "```\n",
    "(Note that for brevity, I did not print here all 399 importable packages and modules on my system.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 通配符匹配\n",
    "\n",
    "Tab completion is useful if you know the first few characters of the object or attribute you're looking for, but is little help if you'd like to match characters at the middle or end of the word.\n",
    "For this use-case, IPython provides a means of wildcard matching for names using the ``*`` character.\n",
    "\n",
    "\n",
    "```ipython\n",
    "In [10]: *Warning?\n",
    "BytesWarning                  RuntimeWarning\n",
    "DeprecationWarning            SyntaxWarning\n",
    "FutureWarning                 UnicodeWarning\n",
    "ImportWarning                 UserWarning\n",
    "PendingDeprecationWarning     Warning\n",
    "ResourceWarning\n",
    "```\n",
    "\n",
    "Notice that the ``*`` character matches any string, including the empty string.\n",
    "\n",
    "Similarly, suppose we are looking for a string method that contains the word ``find`` somewhere in its name.\n",
    "We can search for it this way:\n",
    "\n",
    "```ipython\n",
    "In [10]: str.*find*?\n",
    "str.find\n",
    "str.rfind\n",
    "```\n",
    "\n",
    "I find this type of flexible wildcard search can be very useful for finding a particular command when getting to know a new package or reacquainting myself with a familiar one."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Jupyter Notebook\n",
    "\n",
    "The Jupyter notebook is a browser-based graphical interface to the IPython shell, and builds on it a rich set of dynamic display capabilities.\n",
    "As well as executing Python/IPython statements, the notebook allows the user to include formatted text, static and dynamic visualizations, mathematical equations, JavaScript widgets, and much more.\n",
    "Furthermore, these documents can be saved in a way that lets other people open them and execute the code on their own systems.\n",
    "\n",
    "Though the IPython notebook is viewed and edited through your web browser window, it must connect to a running Python process in order to execute code.\n",
    "This process (known as a \"kernel\") can be started by running the following command in your system shell:\n",
    "\n",
    "```\n",
    "$ jupyter notebook\n",
    "```\n",
    "\n",
    "This command will launch a local web server that will be visible to your browser.\n",
    "It immediately spits out a log showing what it is doing; that log will look something like this:\n",
    "\n",
    "```\n",
    "$ jupyter notebook\n",
    "[NotebookApp] Serving notebooks from local directory: /Users/jakevdp/PythonDataScienceHandbook\n",
    "[NotebookApp] 0 active kernels \n",
    "[NotebookApp] The IPython Notebook is running at: http://localhost:8888/\n",
    "[NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).\n",
    "```\n",
    "\n",
    "Upon issuing the command, your default browser should automatically open and navigate to the listed local URL;\n",
    "the exact address will depend on your system.\n",
    "If the browser does not open automatically, you can open a window and manually open this address (*http://localhost:8888/* in this example)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Part 3: IPython的功能和基础工具箱介绍\n",
    "\n",
    "### 一. 编写完整代码\n",
    "\n",
    "#### ```IPython``` tells you about the objects you're working with, showing you helpful usage info about functions, methods available, datatypes, and more."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "things = [\"First Name\", \"Last Name\"]\n",
    "def snakify(txt):\n",
    "    \"return string in snake_case\"\n",
    "    return txt.replace(\" \",\"_\").lower()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['first_name', 'last_name']\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'my_name_is_greg'"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print ([snakify(thing) for thing in things] )\n",
    "snakify( \"My Name is Greg\" )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<bold class=\"bold\">Tips: </bold>Comment and uncomment lines with ``` command``` ＋  ```/ ``` if you're on a mac."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 二. 使用交互式命令\n",
    "\n",
    "#### Use many shell commands directly from IPython, including shell scripts.\n",
    "\n",
    "A full intro to using the shell/terminal/command-line is well beyond the scope of this chapter, but for the uninitiated we will offer a quick introduction here.\n",
    "The shell is a way to interact textually with your computer.\n",
    "Ever since the mid 1980s, when Microsoft and Apple introduced the first versions of their now ubiquitous graphical operating systems, most computer users have interacted with their operating system through familiar clicking of menus and drag-and-drop movements.\n",
    "But operating systems existed long before these graphical user interfaces, and were primarily controlled through sequences of text input: at the prompt, the user would type a command, and the computer would do what the user told it to.\n",
    "Those early prompt systems are the precursors of the shells and terminals that most active data scientists still use today.\n",
    "\n",
    "Someone unfamiliar with the shell might ask why you would bother with this, when many results can be accomplished by simply clicking on icons and menus.\n",
    "A shell user might reply with another question: why hunt icons and click menus when you can accomplish things much more easily by typing?\n",
    "While it might sound like a typical tech preference impasse, when moving beyond basic tasks it quickly becomes clear that the shell offers much more control of advanced tasks, though admittedly the learning curve can intimidate the average computer user.\n",
    "\n",
    "As an example, here is a sample of a Linux/OSX shell session where a user explores, creates, and modifies directories and files on their system (``osx:~ $`` is the prompt, and everything after the ``$`` sign is the typed command; text that is preceded by a ``#`` is meant just as description, rather than something you would actually type in):\n",
    "\n",
    "```bash\n",
    "osx:~ $ echo \"hello world\"             # echo is like Python's print function\n",
    "hello world\n",
    "\n",
    "osx:~ $ pwd                            # pwd = print working directory\n",
    "/home/jake                             # this is the \"path\" that we're sitting in\n",
    "\n",
    "osx:~ $ ls                             # ls = list working directory contents\n",
    "notebooks  projects \n",
    "\n",
    "osx:~ $ cd projects/                   # cd = change directory\n",
    "\n",
    "osx:projects $ pwd\n",
    "/home/jake/projects\n",
    "\n",
    "osx:projects $ ls\n",
    "datasci_book   mpld3   myproject.txt\n",
    "\n",
    "osx:projects $ mkdir myproject          # mkdir = make new directory\n",
    "\n",
    "osx:projects $ cd myproject/\n",
    "\n",
    "osx:myproject $ mv ../myproject.txt ./  # mv = move file. Here we're moving the\n",
    "                                        # file myproject.txt from one directory\n",
    "                                        # up (../) to the current directory (./)\n",
    "osx:myproject $ ls\n",
    "myproject.txt\n",
    "```\n",
    "\n",
    "Notice that all of this is just a compact way to do familiar operations (navigating a directory structure, creating a directory, moving a file, etc.) by typing commands rather than clicking icons and menus.\n",
    "Note that with just a few commands (``pwd``, ``ls``, ``cd``, ``mkdir``, and ``cp``) you can do many of the most common file operations.\n",
    "It's when you go beyond these basics that the shell approach becomes really powerful."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/Users/lee/Documents/HZ-python-notebook-base/HZ-python-notebook-base\n",
      "total 31296\n",
      "drwxr-xr-x   7 lee  staff      238  8 11 18:43 \u001b[34m课件html\u001b[m\u001b[m\n",
      "-rwxr-xr-x   1 lee  staff   662209  8 11 18:42 \u001b[31m第3讲-练习题.ipynb\u001b[m\u001b[m\n",
      "-rw-r--r--   1 lee  staff  1850788  8 11 18:22 第4讲-其他一些模块介绍.ipynb\n",
      "-rw-r--r--   1 lee  staff   491826  8 11 17:20 stocks.html\n",
      "-rw-r--r--   1 lee  staff   306711  8 11 17:18 linked_panning.html\n",
      "-rw-r--r--   1 lee  staff   277157  8 11 17:17 color_scatter.html\n",
      "-rw-r--r--   1 lee  staff     7613  8 11 17:15 lines.html\n",
      "-rwxr-xr-x   1 lee  staff  8524136  8 11 10:55 \u001b[31m第3讲-基础工具库.ipynb\u001b[m\u001b[m\n",
      "-rw-r--r--   1 lee  staff    11527  8 11 08:38 graph.pdf\n",
      "-rw-r--r--   1 lee  staff    51316  8 11 08:38 graph.png\n",
      "-rw-r--r--   1 lee  staff    50936  8 11 08:38 figure-2.jpg\n",
      "-rw-r--r--@  1 lee  staff    36996  8 11 08:31 figure-1.jpg\n",
      "-rwxr-xr-x   1 lee  staff   366763  8 10 14:56 \u001b[31m第2讲-python环境和基础语法.ipynb\u001b[m\u001b[m\n",
      "-rw-r--r--   1 lee  staff       15  8 10 14:06 me.txt\n",
      "-rw-r--r--   1 lee  staff      371  8 10 11:11 mprun_demo.pyc\n",
      "-rw-r--r--   1 lee  staff      181  8 10 11:10 mprun_demo.py\n",
      "-rw-r--r--@  1 lee  staff      157  8 10 10:06 myscript.py\n",
      "-rwxr-xr-x   1 lee  staff    26033  8  9 23:25 \u001b[31m第1讲-数据分析方法概述.ipynb\u001b[m\u001b[m\n",
      "-rw-r--r--@  1 lee  staff  3316934  7  7 16:54 Bokeh.pdf\n",
      "drwxr-xr-x@ 10 lee  staff      340  6 28 07:14 \u001b[34mdata\u001b[m\u001b[m\n",
      "drwxr-xr-x@ 38 lee  staff     1292  6 28 07:14 \u001b[34mfigures\u001b[m\u001b[m\n"
     ]
    }
   ],
   "source": [
    "# try these out too\n",
    "! pwd\n",
    "!ls -lt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Capture the output of a shell command and store the results in a python variable."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['hello, world']"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "foo = !echo hello, world\n",
    "foo"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Use curl to download data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n",
      "                                 Dload  Upload   Total   Spent    Left  Speed\n",
      "100  381k  100  381k    0     0  48250      0  0:00:08  0:00:08 --:--:--  103k\n"
     ]
    }
   ],
   "source": [
    "# download salary_data.csv save contents to \n",
    "# a local file in the same directory as this notebook\n",
    "!curl http://www.justinmrao.com/salary_data.csv >> ./salary_data.csvv"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "team\r\n",
      "year\r\n",
      "player\r\n",
      "contract_years_remaining\r\n",
      "contract_thru\r\n",
      "position\r\n",
      "full_name\r\n",
      "salary_year\r\n",
      "salary_total\r\n",
      "year_counter\r\n",
      "obs\r\n",
      "mean_salary\r\n",
      "mean_remaining\r",
      "\r\n"
     ]
    }
   ],
   "source": [
    "# peak at the first row\n",
    "! head -n 1 salary_data.csv | tr  -s \",\" \"\\n\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\"Boston Celtics\"\r\n",
      "\"2002-03\"\r\n",
      "\"Bremer\r\n",
      " J.R.\"\r\n",
      "1\r\n",
      "\"2002-03\"\r\n",
      "\"G\"\r\n",
      "\" Bremer\"\r\n",
      "349458\r\n",
      "349458\r\n",
      "1\r\n",
      "2\r\n",
      "456568.5\r\n",
      "1\r",
      "\r\n"
     ]
    }
   ],
   "source": [
    "# peak at the second row\n",
    "! head -n+2 salary_data.csv | tail -n-1 | tr -s \",\" \"\\n\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 三. 输入输出历史\n",
    "\n",
    "#### In both the shell and the notebook, IPython exposes several ways to obtain the output of previous commands, as well as string versions of the commands themselves.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import math"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9092974268256817"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "math.sin(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.4161468365471424"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "math.cos(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['', 'import math', 'math.sin(2)', 'math.cos(2)', 'print (In)']\n"
     ]
    }
   ],
   "source": [
    "print (In)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{2: 0.9092974268256817, 3: -0.4161468365471424}"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "import math\n"
     ]
    }
   ],
   "source": [
    "print (In[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9092974268256817\n"
     ]
    }
   ],
   "source": [
    "print (Out[2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Out[2] ** 2 + Out[3] ** 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0\n"
     ]
    }
   ],
   "source": [
    "print (_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-0.4161468365471424\n"
     ]
    }
   ],
   "source": [
    "print (__)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9092974268256817\n"
     ]
    }
   ],
   "source": [
    "print (___)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "14 in Out"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "``%history`` 呈现历史命令"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   1: import math\n",
      "   2: math.sin(2)\n",
      "   3: math.cos(2)\n",
      "   4: print (In)\n"
     ]
    }
   ],
   "source": [
    "%history -n 1-4"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 四. 错误与调试\n",
    "\n",
    "#### Code development and data analysis always require a bit of trial and error, and IPython contains tools to streamline this process."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 控制异常 ``%xmode``\n",
    "\n",
    "Most of the time when a Python script fails, it will raise an Exception.\n",
    "When the interpreter hits one of these exceptions, information about the cause of the error can be found in the *traceback*, which can be accessed from within Python.\n",
    "With the ``%xmode`` magic function, IPython allows you to control the amount of information printed when the exception is raised."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def func1(a, b):\n",
    "    return a / b\n",
    "\n",
    "def func2(x):\n",
    "    a = x\n",
    "    b = x - 1\n",
    "    return func1(a, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "ZeroDivisionError",
     "evalue": "division by zero",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mZeroDivisionError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-2-b2e110f6fc8f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-1-d849e34d61fb>\u001b[0m in \u001b[0;36mfunc2\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m      5\u001b[0m     \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m     \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m<ipython-input-1-d849e34d61fb>\u001b[0m in \u001b[0;36mfunc1\u001b[0;34m(a, b)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m     \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mZeroDivisionError\u001b[0m: division by zero"
     ]
    }
   ],
   "source": [
    "func2(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "``%xmode`` takes a single argument, the mode, and there are three possibilities: ``Plain``, ``Context``, and ``Verbose``.\n",
    "The default is ``Context``, and gives output like that just shown before.\n",
    "``Plain`` is more compact and gives less information:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exception reporting mode: Plain\n"
     ]
    }
   ],
   "source": [
    "%xmode Plain"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "ZeroDivisionError",
     "evalue": "division by zero",
     "output_type": "error",
     "traceback": [
      "Traceback \u001b[0;36m(most recent call last)\u001b[0m:\n",
      "  File \u001b[1;32m\"<ipython-input-4-b2e110f6fc8f>\"\u001b[0m, line \u001b[1;32m1\u001b[0m, in \u001b[1;35m<module>\u001b[0m\n    func2(1)\n",
      "  File \u001b[1;32m\"<ipython-input-1-d849e34d61fb>\"\u001b[0m, line \u001b[1;32m7\u001b[0m, in \u001b[1;35mfunc2\u001b[0m\n    return func1(a, b)\n",
      "\u001b[0;36m  File \u001b[0;32m\"<ipython-input-1-d849e34d61fb>\"\u001b[0;36m, line \u001b[0;32m2\u001b[0;36m, in \u001b[0;35mfunc1\u001b[0;36m\u001b[0m\n\u001b[0;31m    return a / b\u001b[0m\n",
      "\u001b[0;31mZeroDivisionError\u001b[0m\u001b[0;31m:\u001b[0m division by zero\n"
     ]
    }
   ],
   "source": [
    "func2(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exception reporting mode: Verbose\n"
     ]
    }
   ],
   "source": [
    "%xmode Verbose"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "ZeroDivisionError",
     "evalue": "division by zero",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mZeroDivisionError\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-6-b2e110f6fc8f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m        \u001b[0;36mglobal\u001b[0m \u001b[0;36mfunc2\u001b[0m \u001b[0;34m= <function func2 at 0x104847730>\u001b[0m\n",
      "\u001b[0;32m<ipython-input-1-d849e34d61fb>\u001b[0m in \u001b[0;36mfunc2\u001b[0;34m(x=1)\u001b[0m\n\u001b[1;32m      5\u001b[0m     \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m     \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m        \u001b[0;36mglobal\u001b[0m \u001b[0;36mfunc1\u001b[0m \u001b[0;34m= <function func1 at 0x1048476a8>\u001b[0m\u001b[0;34m\n        \u001b[0m\u001b[0;36ma\u001b[0m \u001b[0;34m= 1\u001b[0m\u001b[0;34m\n        \u001b[0m\u001b[0;36mb\u001b[0m \u001b[0;34m= 0\u001b[0m\n",
      "\u001b[0;32m<ipython-input-1-d849e34d61fb>\u001b[0m in \u001b[0;36mfunc1\u001b[0;34m(a=1, b=0)\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m        \u001b[0;36ma\u001b[0m \u001b[0;34m= 1\u001b[0m\u001b[0;34m\n        \u001b[0m\u001b[0;36mb\u001b[0m \u001b[0;34m= 0\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m     \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mZeroDivisionError\u001b[0m: division by zero"
     ]
    }
   ],
   "source": [
    "func2(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This extra information can help narrow-in on why the exception is being raised.\n",
    "So why not use the ``Verbose`` mode all the time?\n",
    "As code gets complicated, this kind of traceback can get extremely long.\n",
    "Depending on the context, sometimes the brevity of ``Default`` mode is easier to work with."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 调试\n",
    "\n",
    "The standard Python tool for interactive debugging is **``pdb``**, the Python debugger.\n",
    "This debugger lets the user step through the code line by line in order to see what might be causing a more difficult error.\n",
    "The IPython-enhanced version of this is **``ipdb``**, the IPython debugger.\n",
    "\n",
    "\n",
    "In IPython, perhaps the most convenient interface to debugging is the **``%debug``** magic command.\n",
    "If you call it after hitting an exception, it will automatically open an interactive debugging prompt at the point of the exception.\n",
    "The ``ipdb`` prompt lets you explore the current state of the stack, explore the available variables, and even run Python commands!\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "> \u001b[0;32m<ipython-input-1-d849e34d61fb>\u001b[0m(2)\u001b[0;36mfunc1\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32m      1 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m----> 2 \u001b[0;31m    \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      3 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      4 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      5 \u001b[0;31m    \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\n",
      "ipdb> print (a)\n",
      "1\n",
      "ipdb> print (b)\n",
      "0\n",
      "ipdb> quit\n"
     ]
    }
   ],
   "source": [
    "%debug"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "逐步调试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "> \u001b[0;32m<ipython-input-1-d849e34d61fb>\u001b[0m(2)\u001b[0;36mfunc1\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32m      1 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m----> 2 \u001b[0;31m    \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      3 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      4 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      5 \u001b[0;31m    \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\n",
      "ipdb> up\n",
      "> \u001b[0;32m<ipython-input-1-d849e34d61fb>\u001b[0m(7)\u001b[0;36mfunc2\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32m      3 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      4 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      5 \u001b[0;31m    \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      6 \u001b[0;31m    \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m----> 7 \u001b[0;31m    \u001b[0;32mreturn\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\n",
      "ipdb> print (x)\n",
      "1\n",
      "ipdb> up\n",
      "> \u001b[0;32m<ipython-input-6-b2e110f6fc8f>\u001b[0m(1)\u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32m----> 1 \u001b[0;31m\u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\n",
      "ipdb> quit\n"
     ]
    }
   ],
   "source": [
    "%debug"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用 ``%pdb`` 调试自动化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Exception reporting mode: Plain\n",
      "Automatic pdb calling has been turned ON\n"
     ]
    },
    {
     "ename": "ZeroDivisionError",
     "evalue": "division by zero",
     "output_type": "error",
     "traceback": [
      "Traceback \u001b[0;36m(most recent call last)\u001b[0m:\n",
      "  File \u001b[1;32m\"<ipython-input-9-569a67d2d312>\"\u001b[0m, line \u001b[1;32m3\u001b[0m, in \u001b[1;35m<module>\u001b[0m\n    func2(1)\n",
      "  File \u001b[1;32m\"<ipython-input-1-d849e34d61fb>\"\u001b[0m, line \u001b[1;32m7\u001b[0m, in \u001b[1;35mfunc2\u001b[0m\n    return func1(a, b)\n",
      "\u001b[0;36m  File \u001b[0;32m\"<ipython-input-1-d849e34d61fb>\"\u001b[0;36m, line \u001b[0;32m2\u001b[0;36m, in \u001b[0;35mfunc1\u001b[0;36m\u001b[0m\n\u001b[0;31m    return a / b\u001b[0m\n",
      "\u001b[0;31mZeroDivisionError\u001b[0m\u001b[0;31m:\u001b[0m division by zero\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "> \u001b[0;32m<ipython-input-1-d849e34d61fb>\u001b[0m(2)\u001b[0;36mfunc1\u001b[0;34m()\u001b[0m\n",
      "\u001b[0;32m      1 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc1\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m----> 2 \u001b[0;31m    \u001b[0;32mreturn\u001b[0m \u001b[0ma\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      3 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      4 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0mfunc2\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\u001b[0;32m      5 \u001b[0;31m    \u001b[0ma\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0m\n",
      "ipdb> print (b)\n",
      "0\n",
      "ipdb> quit\n"
     ]
    }
   ],
   "source": [
    "%xmode Plain\n",
    "%pdb on\n",
    "func2(1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Finally, if you have a script that you'd like to run from the beginning in interactive mode, you can run it with the command ``%run -d``, and use the ``next`` command to step through the lines of code interactively."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 部分调试命令\n",
    "\n",
    "There are many more available commands for interactive debugging than we've listed here; the following table contains a description of some of the more common and useful ones:\n",
    "\n",
    "| Command         |  Description                                                |\n",
    "|-----------------|-------------------------------------------------------------|\n",
    "| ``list``        | Show the current location in the file                       |\n",
    "| ``h(elp)``      | Show a list of commands, or find help on a specific command |\n",
    "| ``q(uit)``      | Quit the debugger and the program                           |\n",
    "| ``c(ontinue)``  | Quit the debugger, continue in the program                  |\n",
    "| ``n(ext)``      | Go to the next step of the program                          |\n",
    "| ``<enter>``     | Repeat the previous command                                 |\n",
    "| ``p(rint)``     | Print variables                                             |\n",
    "| ``s(tep)``      | Step into a subroutine                                      |\n",
    "| ``r(eturn)``    | Return out of a subroutine                                  |\n",
    "\n",
    "For more information, use the ``help`` command in the debugger, or take a look at ``ipdb``'s [online documentation](https://github.com/gotcha/ipdb)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 五. 分析和计时\n",
    "\n",
    "- ``%time``: Time the execution of a single statement\n",
    "- ``%timeit``: Time repeated execution of a single statement for more accuracy\n",
    "- ``%prun``: Run code with the profiler\n",
    "- ``%lprun``: Run code with the line-by-line profiler\n",
    "- ``%memit``: Measure the memory use of a single statement\n",
    "- ``%mprun``: Run code with the line-by-line memory profiler\n",
    "\n",
    "安装``line_profiler`` 和 ``memory_profiler`` 模块"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Timing Code Snippets: ``%timeit`` and ``%time``\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 15 µs, sys: 10 µs, total: 25 µs\n",
      "Wall time: 31 µs\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "4950"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%time sum(range(100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The slowest run took 6.87 times longer than the fastest. This could mean that an intermediate result is being cached.\n",
      "100000 loops, best of 3: 1.89 µs per loop\n"
     ]
    }
   ],
   "source": [
    "%timeit sum(range(100))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that because this operation is so fast, ``%timeit`` automatically does a large number of repetitions.\n",
    "For slower commands, ``%timeit`` will automatically adjust and perform fewer repetitions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 loop, best of 3: 501 ms per loop\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "total = 0\n",
    "for i in range(1000):\n",
    "    for j in range(1000):\n",
    "        total += i * (-1) ** j"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The slowest run took 19.73 times longer than the fastest. This could mean that an intermediate result is being cached.\n",
      "100 loops, best of 3: 2.81 ms per loop\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "L = [random.random() for i in range(100000)]\n",
    "%timeit L.sort()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sorting an unsorted list:\n",
      "CPU times: user 54.4 ms, sys: 1.63 ms, total: 56 ms\n",
      "Wall time: 56.3 ms\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "L = [random.random() for i in range(100000)]\n",
    "print(\"sorting an unsorted list:\")\n",
    "%time L.sort()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sorting an already sorted list:\n",
      "CPU times: user 5.49 ms, sys: 207 µs, total: 5.69 ms\n",
      "Wall time: 5.66 ms\n"
     ]
    }
   ],
   "source": [
    "print (\"sorting an already sorted list:\")\n",
    "%time L.sort()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice how much faster the presorted list is to sort, but notice also how much longer the timing takes with ``%time`` versus ``%timeit``, even for the presorted list!\n",
    "This is a result of the fact that ``%timeit`` does some clever things under the hood to prevent system calls from interfering with the timing.\n",
    "For example, it prevents cleanup of unused Python objects (known as *garbage collection*) which might otherwise affect the timing.\n",
    "For this reason, ``%timeit`` results are usually noticeably faster than ``%time`` results.\n",
    "\n",
    "For ``%time`` as with ``%timeit``, using the double-percent-sign cell magic syntax allows timing of multiline scripts:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 605 ms, sys: 6 ms, total: 611 ms\n",
      "Wall time: 631 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "total = 0\n",
    "for i in range(1000):\n",
    "    for j in range(1000):\n",
    "        total += i * (-1) ** j"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 分析完整脚本： ``%prun``\n",
    "\n",
    "Python contains a built-in code profiler (which you can read about in the Python documentation), but IPython offers a much more convenient way to use this profiler, in the form of the magic function ``%prun``.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def sum_of_lists(N):\n",
    "    total = 0\n",
    "    for i in range(5):\n",
    "        L = [j ^ (j >> i) for j in range(N)]#右移动运算符：把\">>\"左边的运算数的各二进位全部右移若干位，\">>\"右边的数指定移动的位数\n",
    "        total += sum(L)\n",
    "    return total"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can call ``%prun`` with a function call to see the profiled results:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " "
     ]
    }
   ],
   "source": [
    "%prun sum_of_lists(1000000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 使用 ``%lprun``逐行分析\n",
    "\n",
    "安装 ``line_profiler``\n",
    "```\n",
    "$ pip install line_profiler\n",
    "```\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%load_ext line_profiler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%lprun -f sum_of_lists sum_of_lists(5000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```\n",
    "Timer unit: 1e-06 s\n",
    "\n",
    "Total time: 0.015923 s\n",
    "File: <ipython-input-16-fa2be176cc3e>\n",
    "Function: sum_of_lists at line 1\n",
    "\n",
    "Line #      Hits         Time  Per Hit   % Time  Line Contents\n",
    "==============================================================\n",
    "     1                                           def sum_of_lists(N):\n",
    "     2         1            2      2.0      0.0      total = 0\n",
    "     3         6            9      1.5      0.1      for i in range(5):\n",
    "     4     25005        15710      0.6     98.7          L = [j ^ (j >> i) for j in range(N)]\n",
    "     5         5          201     40.2      1.3          total += sum(L)\n",
    "     6         1            1      1.0      0.0      return total\n",
    "```\n",
    "\n",
    "The information at the top gives us the key to reading the results: the time is reported in microseconds and we can see where the program is spending the most time.\n",
    "At this point, we may be able to use this information to modify aspects of the script and make it perform better for our desired use case.\n",
    "\n",
    "For more information on ``%lprun``, as well as its available options, use the IPython help functionality (i.e., type ``%lprun?`` at the IPython prompt)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 分析内存使用： ``%memit``    ``%mprun``\n",
    "\n",
    "Another aspect of profiling is the amount of memory an operation uses.\n",
    "This can be evaluated with another IPython extension, the ``memory_profiler``.\n",
    "As with the ``line_profiler``, we start by ``pip``-installing the extension:\n",
    "\n",
    "```\n",
    "$ pip install memory_profiler```\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%load_ext memory_profiler"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "-  ``%memit`` （类比 ``%timeit``）\n",
    "- ``%mprun``  （类比``%lprun``）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "peak memory: 37.47 MiB, increment: 1.25 MiB\n"
     ]
    }
   ],
   "source": [
    "%memit sum_of_lists(10000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Overwriting mprun_demo.py\n"
     ]
    }
   ],
   "source": [
    "%%file mprun_demo.py\n",
    "def sum_of_lists(N):\n",
    "    total = 0\n",
    "    for i in range(5):\n",
    "        L = [j ^ (j >> i) for j in range(N)]\n",
    "        total += sum(L)\n",
    "        del L # remove reference to L\n",
    "    return total"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('',)\n"
     ]
    }
   ],
   "source": [
    "from mprun_demo import sum_of_lists\n",
    "%mprun -f sum_of_lists sum_of_lists(10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```\n",
    "Filename: mprun_demo.py\n",
    "\n",
    "Line #    Mem usage    Increment   Line Contents\n",
    "================================================\n",
    "     1     37.7 MiB      0.0 MiB   def sum_of_lists(N):\n",
    "     2     37.7 MiB      0.0 MiB       total = 0\n",
    "     3     37.7 MiB      0.1 MiB       for i in range(5):\n",
    "     4     37.7 MiB      0.0 MiB           L = [j ^ (j >> i) for j in range(N)]\n",
    "     5     37.7 MiB      0.0 MiB           total += sum(L)\n",
    "     6     37.7 MiB      0.0 MiB           del L # remove reference to L\n",
    "     7     37.7 MiB      0.0 MiB       return total\n",
    "```\n",
    "\n",
    "Here the ``Increment`` column tells us how much each line affects the total memory budget:\n",
    "This is on top of the background memory usage from the Python interpreter itself.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 六. 更多资源\n",
    "\n",
    "#### Web Resources\n",
    "\n",
    "- [The IPython website](http://ipython.org): The IPython website links to documentation, examples, tutorials, and a variety of other resources.\n",
    "- [The nbviewer website](http://nbviewer.jupyter.org/): This site shows static renderings of any IPython notebook available on the internet. The front page features some example notebooks that you can browse to see what other folks are using IPython for!\n",
    "- [A gallery of interesting Jupyter Notebooks](https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks/): This ever-growing list of notebooks, powered by nbviewer, shows the depth and breadth of numerical analysis you can do with IPython. It includes everything from short examples and tutorials to full-blown courses and books composed in the notebook format!\n",
    "- Video Tutorials: searching the Internet, you will find many video-recorded tutorials on IPython. I'd especially recommend seeking tutorials from the PyCon, SciPy, and PyData conferenes by Fernando Perez and Brian Granger, two of the primary creators and maintainers of IPython and Jupyter.\n",
    "\n",
    "\n",
    "\n",
    "#### Books\n",
    "\n",
    "- [*Python for Data Analysis*](http://shop.oreilly.com/product/0636920023784.do): Wes McKinney's book includes a chapter that covers using IPython as a data scientist. Although much of the material overlaps what we've discussed here, another perspective is always helpful.\n",
    "- [*Learning IPython for Interactive Computing and Data Visualization*](https://www.packtpub.com/big-data-and-business-intelligence/learning-ipython-interactive-computing-and-data-visualization): This short book by Cyrille Rossant offers a good introduction to using IPython for data analysis.\n",
    "- [*IPython Interactive Computing and Visualization Cookbook*](https://www.packtpub.com/big-data-and-business-intelligence/ipython-interactive-computing-and-visualization-cookbook): Also by Cyrille Rossant, this book is a longer and more advanced treatment of using IPython for data science. Despite its name, it's not just about IPython–it also goes into some depth on a broad range of data science topics.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 有很多媒体库和工具包\n",
    "#### IPython gives you inline plots and allows you to use virtually any browser supported media."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nlDEUSJIkAP4/n+4fDZd+xFwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x104832c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "## Inline plotting\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "#import pylab as pl\n",
    "X = range(10)\n",
    "y = range(11,21)\n",
    "plt.scatter(X,y, c='r')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Write and run javascript among other languages including Ruby, Octave, Julia, R, etc."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%%javascript\n",
    "function say_hi ( ) {\n",
    "    alert(\"Hello, World\");\n",
    "};\n",
    "\n",
    "say_hi();\n",
    "console.log(\"Welcome!\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Render images from the web via a url or images on your local computer via the filename."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import Image\n",
    "Image(\"http://ipython.org/_static/IPy_header.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "<a id=\"NumPy\"></a>\n",
    "<hr>\n",
    "\n",
    "## NumPy\n",
    "\n",
    "One of the fundamental packages for scientific computing with Python. Many other popular packages and projects use NumPy under the hood, so it's pretty helpful to be familiar with its core concepts.\n",
    "\n",
    "### A collection of tools, utilities, and data structures for working with data.\n",
    "\n",
    "- A powerful N-dimensional array object\n",
    "- Element by element broadcasting operations (as opposed to iterating)\n",
    "- Tools for integrating C/C++ and Fortran code\n",
    "- Linear algebra and other mathematical and random number facilities"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## N-dimensional arrays\n",
    "\n",
    "#### The ```ndarray``` is a bit like a python list only more efficient."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "\"\"\"example taken from Scipy and NumPy by Eli Bressert (p. 6)\"\"\"\n",
    "import numpy as np\n",
    "\n",
    "def list_times(alist, scalar):\n",
    "    for i, val in enumerate(alist):\n",
    "        alist[i] = val * scalar\n",
    "    return alist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "arr = np.arange(1e7)\n",
    "l   = arr.tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10 loops, best of 3: 35.2 ms per loop\n"
     ]
    }
   ],
   "source": [
    "%timeit arr * 1.1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 loop, best of 3: 1.17 s per loop\n"
     ]
    }
   ],
   "source": [
    "%timeit list_times(l, 1.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "len(l) 10000000\n",
      "len(arr) 10000000\n"
     ]
    }
   ],
   "source": [
    "print (\"len(l)\", len(l))\n",
    "print (\"len(arr)\", len(arr))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### The ```ndarray``` is capible of more advanced slicing."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Value in Row One, Column One: 1\n",
      "Value in Row One, Column One: 1\n",
      "Value in All Rows, Column Two: [2 4]\n",
      "Value in Row Two, Both Columns: [[3 4]]\n"
     ]
    }
   ],
   "source": [
    "l = [ [1,2], [3,4] ]\n",
    "arr   = np.array(l)\n",
    "\n",
    "print (\"Value in Row One, Column One: %d\" % l[0][0])\n",
    "print (\"Value in Row One, Column One: %d\" % arr[0,0])\n",
    "print (\"Value in All Rows, Column Two: %s\" % str(arr[::,1]))\n",
    "print (\"Value in Row Two, Both Columns: %s\" % str(arr[1::,]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### You can access elements stored in an ```ndarray``` using ```arr[]``` sub notation ```arr[rows, columns]```.\n",
    "\n",
    "#### Select the entire 10th row like so ```arr[9, :]```.  ```9``` indicates \"row 10\" and ```:``` indicates <em>all</em> columns."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  1,   3,   5,   7,   9,  11,  13,  15,  17,  19,  21,  23,  25,\n",
       "        27,  29,  31,  33,  35,  37,  39,  41,  43,  45,  47,  49,  51,\n",
       "        53,  55,  57,  59,  61,  63,  65,  67,  69,  71,  73,  75,  77,\n",
       "        79,  81,  83,  85,  87,  89,  91,  93,  95,  97,  99, 101, 103,\n",
       "       105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129,\n",
       "       131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155,\n",
       "       157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 177, 179, 181,\n",
       "       183, 185, 187, 189, 191, 193, 195, 197, 199])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "zero_to_1000 = np.arange(0,1000)               # create an array of integers from 0 to 1000\n",
    "zero_to_1000 = zero_to_1000.reshape( (500,2) ) # reshape into 2 dimensions (500 Rows x 2 Cols2)\n",
    "zero_to_1000[:100, 1]                          # select the 2nd columns from the top 100 rows"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False, False],\n",
       "       [False,  True],\n",
       "       [False, False],\n",
       "       [ True, False],\n",
       "       [False, False],\n",
       "       [ True,  True],\n",
       "       [False,  True],\n",
       "       [ True, False],\n",
       "       [False, False],\n",
       "       [False, False]], dtype=bool)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "numbers = np.random.uniform(size=100)\n",
    "numbers = numbers.reshape((50,2))\n",
    "mask = (numbers >= 0.7) & (numbers <= 0.9)\n",
    "mask[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.71448078,  0.78642688,  0.76502446,  0.75724199,  0.71141945,\n",
       "        0.83279868,  0.78487885,  0.85064108,  0.78789528,  0.77373465,\n",
       "        0.76903859,  0.86070058,  0.84117924,  0.78322484,  0.89412315,\n",
       "        0.89325357,  0.70454971,  0.72114956,  0.77694227,  0.72865709,\n",
       "        0.70459049,  0.75678771,  0.7463222 ,  0.86741022,  0.72185287,\n",
       "        0.87948935])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "numbers[mask]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"SciPy\"></a>\n",
    "<hr>\n",
    "\n",
    "## SciPy\n",
    "\n",
    "SciPy contains functions and utilities for common scientific tasks. Most of SciPy's features rely on NumPy and many other scientific projects rely on SciPy.\n",
    "\n",
    "\n",
    "We aren't using SciPy directly in this tutorial, and since it's rather large in scope, we'll just give you some of the project highlights.\n",
    "\n",
    "- Optimization and Minimization\n",
    "    - 80 continuous distributions\n",
    "    - 60 statistical functions\n",
    "- Interpolation\n",
    "- Integration\n",
    "- Statistics\n",
    "- Spatial and Clustering Analysis\n",
    "- Signal and Image Processing\n",
    "- Sparse Matrices"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"Matplotlib\"></a>\n",
    "<hr>\n",
    "\n",
    "## Matplotlib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import pylab as pl\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Make some data to plot\n",
    "x = np.linspace(start=0, stop=2*np.pi, num=10)\n",
    "y1 = np.sin(x)\n",
    "y2 = np.cos(x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Lines"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/lee/anaconda/lib/python3.5/site-packages/matplotlib/figure.py:397: UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure\n",
      "  \"matplotlib is currently using a non-GUI backend, \"\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nQDyJ3j4hIiK+T7cPiIiIiMRhrY02xuQGmuC0+yuH04IvJxAKnMRpl7gTWA5MSY32g6nMxvtTRET8\nlG4fEBEREREREQlQun1AREREREREJECpKCAiIiIiIiISoFQUEBEREREREQlQKgqIiIiIiIiIBCgV\nBUREREREREQClIoCIiIiIiIiIgFKRQERERERERGRAKWigIiIiIiIiEiAUlFAREREREREJECpKCAi\nIiIiIiISoFQUEBEREREREQlQKgqIiIiIiIiIBCgVBUREREREREQClIoCIiIiIiIiIgFKRQERERER\nERGRAKWigIiIiIiIiEiAUlFAREREREREJECpKCAiIiIiIiISoFQUEBEREREREQlQKgqIiIiIiIiI\nBCgVBUREREREREQClIoCIiIiIiIiIgFKRQERERERERGRAKWigIiIiIiIiEiAUlFAREREREREJECp\nKCAiIiIiIiISoFQUEBEREREREQlQKgqIiIiIiIiIBCgVBUREREREREQClIoCIiIiIiIiIgFKRQER\nERERERGRAKWigIiIiIiIiEiAUlFAREREREREJECpKCAiIiIiIiISoFQUEBEREREREQlQKgqIiIiI\niIiIBKiAKgoYY6obY2YbYw4aY6KNMc2T8JpaxpgIY8wZY8xeY0yH1MgqIiIiIiIi4m0BVRQAMgNb\ngJ6ATWxjY8ytwFxgCVAWeB8YZ4yp772IIiIiIiIiIqnDWJvoubFfMsZEA/dZa2cnsM0bQGNrbZk4\nz00Fsllrm6RCTBERERERERGvCbSZAslVCfg23nOLgMouZBERERERERHxKBUFEnYz8Ee85/4Ashpj\nMriQR0RERERERMRj0rkdwN8YY3IBDYF9wBl304iIiIiIiEgACAVuBRZZa48n54UqCiTsMJAn3nN5\ngH+ttWev8ZqGwGdeTSUiIiIiIiJypfbAlOS8QEWBhH0HNI73XIOY569lH8CHH33Ion8WMXfvXIrn\nLs5zVZ6jXN5yXoopad3TTz/Nu+++63YMSUN0TEh8OiYkPh0TEp+OCYnL7ePh9xO/8/7691n802Lu\nzHMnz1V9jlI3lnItT6CLjIzk4Ycfhpjz0eQIqKKAMSYzcDtgYp4qbIwpC/xprT1gjBkC5LPWdoj5\n/mjgiZguBBOAukArIKHOA2cAqpSvQnj5cNb9to5eC3rRZWMX2t/ZnjfqvcEtWW/xxseTNCxbtmyU\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1164ebba8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax=plt.subplots(1,figsize=(12,6))\n",
    "ax.plot(x,y1,label='sin')\n",
    "ax.plot(x,y2,label='cos')\n",
    "ax.legend(fontsize=16)\n",
    "ax.title.set_text(\"This is a graph\\n\")\n",
    "ax.title.set_fontsize(28)\n",
    "ax.axes.set_xlabel(\"X Axis\", fontdict={\"size\":22})\n",
    "ax.axes.set_ylabel(\"Y Axis\", fontdict={\"size\":22})\n",
    "fig.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Histograms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nkpya5JYFy29Jcv4i669PktnZ2S4b/+QnPzn86S+TfLjLY06ygwdvG/50ZZI+/w8n1weH/12p+/rZ\nJH+2hPVX+v4uhX1dPRbO89W+v/OtpX1N1tb+LtzXpf55vpKspec1WVv7u9R9Xenz/PokyZVXXtmt\nMybV9ddfP/xpLczjwb72eE7nPcb6k36wRdTgYHPHB6y6T5LPJdnWWvvwvOW/k+QRrbVtC9Z/clb2\nbzEAAAAr01Naa2/q/aCjOKI9l+QbSc5asPysJF9YZP13JHlKkhuSHBjBeAAAAGC+9UnOzaBHu+t+\nRDtJquqaJB9urT1veL2S7Eny6tba73bfIAAAAEyIURzRTpJXJLmsqq5N8pEMzkJ+ZpLLRrQ9AAAA\nmAgjCe3W2puH35n9Gxm8ZfxjSR7bWvu/o9geAAAATIqRvHUcAAAA1qru36MNAAAAa5nQBgAAgI6W\nLbSr6pyq+uOq+kxV3VFVn6qqS6rqtAXr3beq/mdV7a+qL1TVy6vqlAXr/Kuqel9VfaWqbqyqX16u\n/YBjqapfraoPDufw3iOsY56z6lTVL1bV9cM5e01V/cC4xwTHq6ourKq3VdXnqupgVV20yDq/UVWf\nH76O+duquv+C28+oqtdW1VxVfbmq/rKq7rV8ewFHVlUvqqqPVNWXquqWqnpLVT1gkfXMc1asqnpW\nVX28qvYNL1dX1b9ZsM6yzPHlPKL9PUkqyX9I8sAMzkT+rCS/eWiFYWhcmcFJ2h6e5KlJnpbBSdUO\nrXO3DL7r7PokU0l+OcklVfXM5dgJOA6nJXlzktcvdqN5zmpUVT+T5NIkv5bkwUk+nuQdwxNjwkqw\nIYOTtz47ybecwKaqXpDkOUl+LslDk+zPYI6fPm+1Vyb58ST/Nskjkpyd5K9GO2w4bhcm+f0kD0vy\nmAxer7yzqu5yaAXznFXgpiQvyOD189Yk707y1qrakizzHG+tje2S5D8n+fS86z+W5GtJNs1b9vNJ\nvphk3fD6LySZO3R9uOy3k1w3zn1xcVl4ySCg9y6y3Dx3WXWXJNckedW865Xks0l+Zdxjc3FZ6iXJ\nwSQXLVj2+SQ75l2/e5KvJPnpede/muSJ89Y5f/hYDx33Prm4LLwk2TScnz80b5l57rLqLkluTfL0\n4c/LNsfH/RnteySZ/9bahyf5p9ba3Lxl70iyMcn3zlvnfa21ry9Y5/yq2jjKwUIn5jmryvAjQFuT\nvOvQsjb4m+nvkmwb17igl6q6X5J75/A5/qUkH8435/hDMnin0vx1difZE78HTKZ7ZPDujb2Jec7q\nU1WnVNWunRRwAAADtklEQVSTkpyZ5OrlnuNjC+3he+Gfk+QP5i2+d5JbFqx6y7zbjncdmGTmOavN\npiSnZvE5a76yGtw7gyA52hw/K8mdwxdtR1oHJkJVVQZvj/1Aa+264WLznFWhqr6vqr6cwZHp12Vw\ndHp3lnmOn3RoV9VvD08acqTLNxaeaKGqviPJ/0ry31trf3KyY4BRO5F5DgAwoV6XwTmTnjTugcAI\nfDLJBRl8Bvv1Sd5QVd+z3INY1+Exfi/Jnx5jnc8c+qGqzs7gQ+kfaK39/IL1vpBk4Vlqz5p326H/\nnnWMdaC3Jc3zYzDPWW3mknwji89Z85XV4AsZnHfgrBx+JOSsJP84b53Tq+ruC46E+D1golTVa5I8\nLsmFrbWb591knrMqDD96eeh1+T9W1UOTPC/Jy7OMc/ykj2i31m5trf2fY1y+nvz/I9nvSfIPSZ6x\nyMN9KMmDFpyl9keT7Ety3bx1HlFVpy5YZ3drbd/J7g8sZinz/DiY56wqrbWvJbk2yaMPLRu+LfHR\nSa4e17igl9ba9Rm8wJo/x++ewdmbD83xa5N8fcE65yfZnMGf6TB2w8h+QpJHtdb2zL/NPGcVOyXJ\nGcs9x3sc0T4uwyPZf5/B1xX9SpJ7DV6HJa21Q/+i8M4MQuONw1Ov3yfJS5O8ZvhCLknelOS/JPmT\nqvqdJA9K8twM/pUCxq6q7pvk25Kck+TUqrpgeNOnW2v7Y56zOr0iyWVVdW2Sj2TwFY5nJrlsnIOC\n41VVG5LcP4OjHUly3vDP772ttZsy+DzrS6rq00luyODP7c8meWsyOKFOVf23JK+oqi8m+XKSVyf5\nYGvtI8u6M7CIqnpdkukkFyXZX1WH3oW0r7V2YPizec6KVlW/lcFHlPckuVuSpyR5ZAYHrJJlnOM1\nPGX5yFXVU5Ms/Dx2ZXBy2lPnrXffDN5L/8MZfK/ZZUle1Fo7OG+d70vy2gzefjuX5NWttd8b5fjh\neFXVnyb52UVuelRr7X3DdcxzVp2qenYG/5B6VgbfR/wfW2sfHe+o4PhU1SMzeNfdwhdGl7fWnjFc\n55IMvnv1Hknen+QXW2ufnvcYZ2TwUaPpJGckuWq4zr+MfAfgGKrqYBb5jvgMvvboDfPWuyTmOStU\nVf1xkh/J4EDWviSfSPKy1tq7561zSZZhji9baAMAAMBaMO7v0QYAAIBVRWgDAABAR0IbAAAAOhLa\nAAAA0JHQBgAAgI6ENgAAAHQktAEAAKAjoQ0AAAAdCW0AAADoSGgDAABAR0IbAAAAOvp/YqOBrKZs\nTMgAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11650ec50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "d = np.random.randn(100) * 100.\n",
    "m = d.mean()\n",
    "s = d.std()\n",
    "m_y = 3\n",
    "\n",
    "fig = plt.figure(figsize=(12,6))\n",
    "ax = plt.subplot(111)\n",
    "ax.hist(d, 15)\n",
    "ax.plot(m, m_y, \"yo\")\n",
    "ax.plot([m - s, m + s], [m_y] * 2, \"y--\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Multiple plots."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x119118080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x = np.arange(0, 1000)\n",
    "y = np.random.rand(1000)  # 100 random numbers\n",
    "fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2,2,figsize=(10,10))\n",
    "ax1.plot(x, y)\n",
    "ax2.hist(y)\n",
    "ax3.scatter(x, y)\n",
    "ax4.boxplot(y)\n",
    "pl.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ggplot2 matplotlib theme\n",
    "\n",
    "- [https://s3.amazonaws.com/demo-datasets/matplotlib.zip](https://s3.amazonaws.com/demo-datasets/matplotlib.zip)\n",
    "\n",
    "#### Matplotlib takes some getting used to, but don't fret. There are some solid examples and recipes available online that are super helpful.\n",
    "\n",
    "[http://matplotlib.org/gallery.html](http://matplotlib.org/gallery.html.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"pandas\"></a>\n",
    "<hr>\n",
    "\n",
    "## pandas\n",
    "\n",
    "#### pandas is the utility belt for data analysts using python. The package centers around the pandas ```DataFrame```, a two-dimensional data structure with indexable rows and columns. It has effectively taken the best parts of Base R, R packages like plyr and reshape2 and consolidated them into a single library.\n",
    "\n",
    "#### Library highlights include:\n",
    "\n",
    "- DataFrame\n",
    "- Indexable rows and columns (e.g. selecting columns and rows via column/row names)\n",
    "- Boolean indexing\n",
    "- Graceful treatment of missing or ```NA``` values\n",
    "- Broadcasting (i.e. calling a function on an entire row or column without iteration)\n",
    "- Outstanding ```split```, ```apply```, ```combine```, ```groupby``` functionality\n",
    "- Simple yet powerful string manipulation (again, applied over a large number of strings)\n",
    "- Built-in summary statistics (```mean```, ```std```, ```corr```, etc.)\n",
    "- Merging, joining, data set concatenation\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.26656769337660036"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "df = pd.DataFrame({\"A\": range(10), \"B\": np.random.random(size=10)})\n",
    "df.B.corr(df.A)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"scikit-learn\"></a>\n",
    "<hr>\n",
    "\n",
    "## scikit-learn(sklearn)\n",
    "\n",
    "scikit-learn is composed of a wide number of machine learning algorithms, utilities, and transformations all following a common and consistent API.\n",
    "\n",
    "#### Library highlights include:\n",
    "\n",
    "- Biclustering\n",
    "- Clustering\n",
    "- Covariance estimation\n",
    "- Cross decomposition\n",
    "- Dataset examples\n",
    "- Decomposition\n",
    "- Ensemble methods\n",
    "- Gaussian Process for Machine Learning\n",
    "- Generalized Linear Models\n",
    "- Manifold learning\n",
    "- Gaussian Mixture Models\n",
    "- Nearest Neighbors\n",
    "- Semi Supervised Classification\n",
    "- Support Vector Machines\n",
    "- Decision Trees"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"statsmodels\"></a>\n",
    "<hr>\n",
    "\n",
    "## statsmodels\n",
    "#### statistics & econometrics package with useful tools for parameter estimation & statistical testing\n",
    "\n",
    "#### Features include:\n",
    "- linear regression models\n",
    "- GLMs\n",
    "- time series modeling\n",
    "- integration with `pandas`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "\n",
    "\n",
    "# 推荐阅读材料\n",
    "\n",
    "\n",
    "<center>\n",
    "<h2>Learning IPython for </h2>\n",
    "<h2>Interactive Computing and Data Visualization </h2>\n",
    "<h2></h2>\n",
    "\n",
    "<a href=\"https://www.packtpub.com/big-data-and-business-intelligence/learning-ipython-interactive-computing-and-data-visualization-sec\" target=\"_blank\"><img src=\"https://dz13w8afd47il.cloudfront.net/sites/default/files/imagecache/ppv4_main_book_cover/6989OS_Learning%20IPython%20for%20Interactive%20Computing%20and%20Data%20Visualization.jpg\"></a>\n",
    "</center>\n",
    "https://pic3.zhimg.com/b404fc9b6579414faa092859d1368e52_r.jpg\n",
    "\n",
    "## Some other tutorial help/resources :\n",
    "\n",
    "   - The [IPython website](http://ipython.org)\n",
    "   - Search for \"IPython in depth\" tutorial on youtube and pyvideo, much longer, much deeper\n",
    "   - Ask for help on [Stackoverflow, tag it \"ipython\"](http://stackoverflow.com/questions/tagged/ipython)\n",
    "   - [Mailing list](http://mail.scipy.org/mailman/listinfo/ipython-dev)\n",
    "   - File a [github issue](http://github.com/ipython/ipython)\n",
    "   - [Twitter](https://twitter.com/IPythonDev)\n",
    "   - [Reddit](http://www.reddit.com/r/IPython)\n",
    "   - [Notebook Gallery](https://github.com/ipython/ipython/wiki/A-gallery-of-interesting-IPython-Notebooks)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 基本功能"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## First things first: running code, getting help\n",
    "\n",
    "In the notebook, to run a cell of code, hit `Shift-Enter`. This executes the cell and puts the cursor in the next cell below, or makes a new one if you are at the end.  Alternately, you can use:\n",
    "    \n",
    "- `Alt-Enter` to force the creation of a new cell unconditionally (useful when inserting new content in the middle of an existing notebook).\n",
    "- `Control-Enter` executes the cell and keeps the cursor in the same cell, useful for quick experimentation of snippets that you don't need to keep permanently."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##   Print in Python2\n",
    "\n",
    "- Print是python里很基本很常见的一个操作，它的操作对象是一个字符串。\n",
    "\n",
    "- 使用print时，也可以在语句中添加多个表达式，每个表达式用逗号分隔；在用逗号分隔输出时，print语句会在每个输出项后面自动添加一个空格。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "print 'hello,world'\n",
    "print \"hello\",\"world\"\n",
    "print 'hello %s world' %(\",\")\n",
    "print \"My name is %s. I'm %d years old\" %(\"Albert\",18)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##   Print in Python3\n",
    "\n",
    "- Print是函数操作，使用时应加()，括号里面时函数参数对象\n",
    "\n",
    "%s 用字符串来代替\n",
    "\n",
    "%d 用整型值来代替\n",
    "\n",
    "%f 用浮点型值来代替"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hello,world\n",
      "hello world\n",
      "hello , world\n",
      "My name is Albert. I'm 18 years old\n"
     ]
    }
   ],
   "source": [
    "print ('hello,world')\n",
    "print (\"hello\",\"world\")\n",
    "print ('hello %s world' %(\",\"))\n",
    "print (\"My name is %s. I'm %d years old\" %(\"Albert\",18))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "my name is Albert. I am 18 years old\n"
     ]
    }
   ],
   "source": [
    "#字符串格式化\n",
    "print ('my name is {name}. I am {number} years old'.format(name='Albert',number=18))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "logFile = open(\"me.txt\", \"w\")   # 打开文件\n",
    "print (\"我很聪明！\",end=\"\",file=logFile)\n",
    "logFile.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "please input your name:李lee\n",
      "your name is : 李lee\n"
     ]
    }
   ],
   "source": [
    "# coding: UTF-8\n",
    "myName = input(\"please input your name:\")\n",
    "print (\"your name is :\", myName)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Getting help"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "??np.mean ##help(np.mean)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Accessing the underlying operating system\n",
    "\n",
    "**Note:** the commands below work on Linux or Macs, but may behave differently on Windows, as the underlying OS is different. IPython's ability to access the OS is still the same, it's just the syntax that varies per OS."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/Users/lee/Documents/HZ-python-notebook-base/HZ-python-notebook-base\r\n"
     ]
    }
   ],
   "source": [
    "!pwd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Bokeh.pdf\r\n",
      "color_scatter.html\r\n",
      "\u001b[34mdata\u001b[m\u001b[m\r\n",
      "figure-1.jpg\r\n",
      "figure-2.jpg\r\n",
      "\u001b[34mfigures\u001b[m\u001b[m\r\n",
      "graph.pdf\r\n",
      "graph.png\r\n",
      "lines.html\r\n",
      "linked_panning.html\r\n",
      "me.txt\r\n",
      "mprun_demo.py\r\n",
      "mprun_demo.pyc\r\n",
      "myscript.py\r\n",
      "salary_data.csv\r\n",
      "stocks.html\r\n",
      "\u001b[31m第1讲-数据分析方法概述.ipynb\u001b[m\u001b[m\r\n",
      "\u001b[31m第2讲-python环境和基础语法.ipynb\u001b[m\u001b[m\r\n",
      "\u001b[31m第3讲-练习题.ipynb\u001b[m\u001b[m\r\n",
      "\u001b[31m第3讲-基础工具库.ipynb\u001b[m\u001b[m\r\n",
      "第4讲-其他一些模块介绍.ipynb\r\n",
      "\u001b[34m课件html\u001b[m\u001b[m\r\n"
     ]
    }
   ],
   "source": [
    "!ls"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "My current directory's files:\n",
      "Bokeh.pdf\n",
      "color_scatter.html\n",
      "data\n",
      "figure-1.jpg\n",
      "figure-2.jpg\n",
      "figures\n",
      "graph.pdf\n",
      "graph.png\n",
      "lines.html\n",
      "linked_panning.html\n",
      "me.txt\n",
      "mprun_demo.py\n",
      "mprun_demo.pyc\n",
      "myscript.py\n",
      "salary_data.csv\n",
      "stocks.html\n",
      "第1讲-数据分析方法概述.ipynb\n",
      "第2讲-python环境和基础语法.ipynb\n",
      "第3讲-练习题.ipynb\n",
      "第3讲-基础工具库.ipynb\n",
      "第4讲-其他一些模块介绍.ipynb\n",
      "课件html\n"
     ]
    }
   ],
   "source": [
    "files = !ls\n",
    "print(\"My current directory's files:\")\n",
    "for a_file in files:\n",
    "    print(a_file)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Bokeh.pdf, color_scatter.html, data, figure-1.jpg, figure-2.jpg, figures, graph.pdf, graph.png, lines.html, linked_panning.html, me.txt, mprun_demo.py, mprun_demo.pyc, myscript.py, salary_data.csv, stocks.html, 第1讲-数据分析方法概述.ipynb, 第2讲-python环境和基础语法.ipynb, 第3讲-练习题.ipynb, 第3讲-基础工具库.ipynb, 第4讲-其他一些模块介绍.ipynb, 课件html]\n",
      "BOKEH.PDF\n"
     ]
    }
   ],
   "source": [
    "!echo $files\n",
    "!echo {files[0].upper()}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## magic functions\n",
    "\n",
    "The IPyhton 'magic' functions are a set of commands, invoked by prepending one or two `%` signs to their name, that live in a namespace separate from your normal Python variables and provide a more command-like interface.  They take flags with `--` and arguments without quotes, parentheses or commas. The motivation behind this system is two-fold:\n",
    "    \n",
    "- To provide an orthogonal namespace for controlling IPython itself and exposing other system-oriented functionality.\n",
    "\n",
    "- To expose a calling mode that requires minimal verbosity and typing while working interactively.  Thus the inspiration taken from the classic Unix shell style for commands."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%magic"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "application/json": {
       "cell": {
        "!": "OSMagics",
        "HTML": "Other",
        "SVG": "Other",
        "bash": "Other",
        "capture": "ExecutionMagics",
        "debug": "ExecutionMagics",
        "file": "Other",
        "html": "DisplayMagics",
        "javascript": "DisplayMagics",
        "js": "DisplayMagics",
        "latex": "DisplayMagics",
        "perl": "Other",
        "prun": "ExecutionMagics",
        "pypy": "Other",
        "python": "Other",
        "python2": "Other",
        "python3": "Other",
        "ruby": "Other",
        "script": "ScriptMagics",
        "sh": "Other",
        "svg": "DisplayMagics",
        "sx": "OSMagics",
        "system": "OSMagics",
        "time": "ExecutionMagics",
        "timeit": "ExecutionMagics",
        "writefile": "OSMagics"
       },
       "line": {
        "alias": "OSMagics",
        "alias_magic": "BasicMagics",
        "autocall": "AutoMagics",
        "automagic": "AutoMagics",
        "autosave": "KernelMagics",
        "bookmark": "OSMagics",
        "cat": "Other",
        "cd": "OSMagics",
        "clear": "KernelMagics",
        "colors": "BasicMagics",
        "config": "ConfigMagics",
        "connect_info": "KernelMagics",
        "cp": "Other",
        "debug": "ExecutionMagics",
        "dhist": "OSMagics",
        "dirs": "OSMagics",
        "doctest_mode": "BasicMagics",
        "ed": "Other",
        "edit": "KernelMagics",
        "env": "OSMagics",
        "gui": "BasicMagics",
        "hist": "Other",
        "history": "HistoryMagics",
        "killbgscripts": "ScriptMagics",
        "ldir": "Other",
        "less": "KernelMagics",
        "lf": "Other",
        "lk": "Other",
        "ll": "Other",
        "load": "CodeMagics",
        "load_ext": "ExtensionMagics",
        "loadpy": "CodeMagics",
        "logoff": "LoggingMagics",
        "logon": "LoggingMagics",
        "logstart": "LoggingMagics",
        "logstate": "LoggingMagics",
        "logstop": "LoggingMagics",
        "ls": "Other",
        "lsmagic": "BasicMagics",
        "lx": "Other",
        "macro": "ExecutionMagics",
        "magic": "BasicMagics",
        "man": "KernelMagics",
        "matplotlib": "PylabMagics",
        "mkdir": "Other",
        "more": "KernelMagics",
        "mv": "Other",
        "notebook": "BasicMagics",
        "page": "BasicMagics",
        "pastebin": "CodeMagics",
        "pdb": "ExecutionMagics",
        "pdef": "NamespaceMagics",
        "pdoc": "NamespaceMagics",
        "pfile": "NamespaceMagics",
        "pinfo": "NamespaceMagics",
        "pinfo2": "NamespaceMagics",
        "popd": "OSMagics",
        "pprint": "BasicMagics",
        "precision": "BasicMagics",
        "profile": "BasicMagics",
        "prun": "ExecutionMagics",
        "psearch": "NamespaceMagics",
        "psource": "NamespaceMagics",
        "pushd": "OSMagics",
        "pwd": "OSMagics",
        "pycat": "OSMagics",
        "pylab": "PylabMagics",
        "qtconsole": "KernelMagics",
        "quickref": "BasicMagics",
        "recall": "HistoryMagics",
        "rehashx": "OSMagics",
        "reload_ext": "ExtensionMagics",
        "rep": "Other",
        "rerun": "HistoryMagics",
        "reset": "NamespaceMagics",
        "reset_selective": "NamespaceMagics",
        "rm": "Other",
        "rmdir": "Other",
        "run": "ExecutionMagics",
        "save": "CodeMagics",
        "sc": "OSMagics",
        "set_env": "OSMagics",
        "store": "StoreMagics",
        "sx": "OSMagics",
        "system": "OSMagics",
        "tb": "ExecutionMagics",
        "time": "ExecutionMagics",
        "timeit": "ExecutionMagics",
        "unalias": "OSMagics",
        "unload_ext": "ExtensionMagics",
        "who": "NamespaceMagics",
        "who_ls": "NamespaceMagics",
        "whos": "NamespaceMagics",
        "xdel": "NamespaceMagics",
        "xmode": "BasicMagics"
       }
      },
      "text/plain": [
       "Available line magics:\n",
       "%alias  %alias_magic  %autocall  %automagic  %autosave  %bookmark  %cat  %cd  %clear  %colors  %config  %connect_info  %cp  %debug  %dhist  %dirs  %doctest_mode  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %lf  %lk  %ll  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %lx  %macro  %magic  %man  %matplotlib  %mkdir  %more  %mv  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %popd  %pprint  %precision  %profile  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %rep  %rerun  %reset  %reset_selective  %rm  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode\n",
       "\n",
       "Available cell magics:\n",
       "%%!  %%HTML  %%SVG  %%bash  %%capture  %%debug  %%file  %%html  %%javascript  %%js  %%latex  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile\n",
       "\n",
       "Automagic is ON, % prefix IS NOT needed for line magics."
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%lsmagic"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1000000 loops, best of 3: 353 ns per loop\n"
     ]
    }
   ],
   "source": [
    "%timeit range(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1000000 loops, best of 3: 732 ns per loop\n"
     ]
    }
   ],
   "source": [
    "%%timeit\n",
    "range(10)\n",
    "range(100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1000 loops, best of 3: 416 µs per loop\n"
     ]
    }
   ],
   "source": [
    "%timeit L = [n ** 2 for n in range(1000)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%timeit?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 squared is 1\n",
      "2 squared is 4\n",
      "3 squared is 9\n"
     ]
    }
   ],
   "source": [
    "%run myscript.py"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Part 4: Working with Notebooks\n",
    "### Directory Layout\n",
    "\n",
    "* IPython Notebooks are just files (`.ipynb`) on your file system\n",
    "* The Notebook server is aware of Notebooks in a single directory, which we call the **Notebook directory**\n",
    "* If you cd to a Notebook directory and type:\n",
    "\n",
    "        ipython notebook\n",
    "\n",
    "  you will see the Notebooks in that directory in the dashboard"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Notebook Files\n",
    "* Are just that - files (`.ipynb`) on your file system\n",
    "* Contain JSON data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import nbformat\n",
    "with open('第1讲-数据分析方法概述.ipynb') as f:\n",
    "    nb = nbformat.read(f,4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Saving and Exporting\n",
    "\n",
    "IPython Notebooks can also be exported to `.py` files (see \"File:Download As\" menu item). You can tell the Notebook server to always save these `.py` files alongside the `.ipynb` files by starting the Notebook as:\n",
    "\n",
    "    ipython notebook --script\n",
    "\n",
    "You can import Notebooks from the main Dashboard or simply by copying a Notebook into the Notebook directory."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Overview of the UI\n",
    "\n",
    "* Dashboard\n",
    "* Notebook area and cells\n",
    "* Menu\n",
    "* Toolbar\n",
    "\n",
    "### Cell types\n",
    "\n",
    "* Code\n",
    "* Markdown\n",
    "* Raw text\n",
    "* Heading\n",
    "\n",
    "### Keyboard Shortcuts\n",
    "\n",
    "* `Shift-Enter` to run a cell\n",
    "* `Ctrl-Enter` to run a cell in place\n",
    "* Show all keyboard shortcuts using `Ctrl-m h`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Python基本元素：数字、字符串和变量\n",
    "\n",
    "### 变量、名字和对象\n",
    "\n",
    "#### 变量\n",
    "Python中的数据——布尔值、整数、浮点值、字符串，甚至大型数据结构、函数以及程序——都是以**对象**(object)形式存在的。对象就像一个盒子，数据装在里面。对象有不同类型，比如布尔型和整型，类型决定可以对它可进行的操作。Python时强类型，即无法修改一个已有对象的类型。\n",
    "\n",
    "\n",
    "Python2中，一个int型包含32位，可以存储从-2147483648到2147483647的整数。一个long型包含64位，可以存储从-9223372036854775808到9223372036854775807的整数。Python3中，long型被舍弃，int型可以存储超过64位整数\n",
    "\n",
    "\n",
    "- Python变量不需要声明类型\n",
    "- 定义：变量名=值\n",
    "- 变量名字大小写敏感\n",
    "- 命名规则：必须以字母或者下划线开头\n",
    "- 可以同时定义多个变量\n",
    "  - a,b=‘python’,10\n",
    "- 内置数字类型\n",
    "  - 整型、长整型\n",
    "  - 浮点\n",
    "  - 复数 \n",
    "  - 布尔类型\n",
    "    - True,False\n",
    "  - 空的列表、None的布尔都是False\n",
    "  - 字符串\n",
    "  - None\n",
    "- 数学运算符\n",
    "  - 除法取余：%\n",
    "  - 除法取整：//\n",
    "- 比较运算符\n",
    "- 逻辑操作符\n",
    "  -  and\n",
    "  -  or\n",
    "  -  not\n",
    "\n",
    "变量命名规则\n",
    "\n",
    "- 由字母或下划线开始\n",
    "- 其它字符可以是数字，字母， 或下划线\n",
    "- 区分大小写\n",
    "- 尽量见名知义\n",
    "- 不能使用关键字\n",
    "\n",
    "Python关键字\n",
    "\n",
    "and,class,elif,finally,if,lambda,print,while;\n",
    "\n",
    "as,continue,else,for,import,not,raise,with;\n",
    "\n",
    "assert,except,from,in,or,return,yield;\n",
    "\n",
    "break,del,exec,global,is,pass,try,None;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0\n",
      "0.0\n"
     ]
    }
   ],
   "source": [
    "print (float(True))\n",
    "print (float(False))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "98.0\n",
      "99.0\n"
     ]
    }
   ],
   "source": [
    "print (float(98))\n",
    "print (float(99))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "98.6\n",
      "-1.5\n",
      "10000.0\n"
     ]
    }
   ],
   "source": [
    "print (float('98.6'))\n",
    "print (float('-1.5'))\n",
    "print (float('1.0e4'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 变量赋值\n",
    "\n",
    "- Python 是动态类型语言，不需要预先声明变量类型，变量的类型和初值在赋值时被初始化\n",
    "\n",
    "\n",
    "变量的基本数字类型\n",
    "\n",
    "int (有符号整数)   12  012  0x12\n",
    "\n",
    "long (长整数)     123456L  -8383828l\n",
    "\n",
    "bool (布尔值)     True     False\n",
    "\n",
    "float (浮点值)     3.2  3.5e-2   -1.5E3\n",
    "\n",
    "complex (复数)     3.0+2j    4.8-3.5J"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "counter = 0\n",
    "miles = 1000.0\n",
    "name = 'Bob'\n",
    "counter = counter + 1\n",
    "kilometers = 1.609 * miles"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9\n",
      "2.6\n",
      "1.6\n",
      "1.0\n",
      "-5\n"
     ]
    }
   ],
   "source": [
    "print (2+2*3+5%2)\n",
    "print (8/5+ 8//5)\n",
    "print (8.0/5)\n",
    "print (8.0//5)\n",
    "print (-2 * 3 + 21 // 4 ** 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n",
      "True\n",
      "False\n",
      "False\n"
     ]
    }
   ],
   "source": [
    "print (3.14 <= 3.14159)\n",
    "print ('A'<= 'B')                 # 比较ASCII码值\n",
    "print (3.14 != 3.14)              # <>渐渐被淘汰\n",
    "print ('a'<= 'A')                 # 比较ASCII码值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "False\n",
      "True\n",
      "False\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "print ((2 < 4) and (2 == 4))\n",
    "print ((2 > 4) or (2 < 4))\n",
    "print (not (2<4))\n",
    "print (3 < 4 < 5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 通过代码缩进来区分代码区块结构，避免输入太多的花括号和关键字\n",
    "   - Python用缩进表示代码块，没有其他语言的大括号\n",
    "   - 缩进是强制检查，整个代码缩进必须一致，否则无法运行\n",
    "   - 用4个空格或者Tab进行缩进\n",
    "   - IDE自动保证缩进的一致\n",
    "- 使用#注释，注释是程序中会被Python忽略的一短文本\n",
    "- 使用\\连接，一行程序的(非强制性)最大长度建议为80个字符"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<hr>\n",
    "# 基本数据结构\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  一. 序列（列表、元组、字符串和集合）\n",
    "\n",
    "#### Python的序列中的每个元素都有自己的编号。Python中有6种内建的序列，其中列表和元组是最常见的类型。其他包括字符串、Unicode字符串、buffer对象和xrange对象。下面重点介绍下列表、元组和字符串。\n",
    "\n",
    "注：python3中xrange不存在，只有range对象，用处同xrange"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1、列表\n",
    "\n",
    "列表是可变的，这是它区别于字符串和元组的最重要的特点，一句话概括即：列表可以修改，而字符串和元组不能。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "list"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample_list = ['a',1,('a','b')]\n",
    "type(sample_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['a', 1, ('a', 'b')]\n"
     ]
    }
   ],
   "source": [
    "print (sample_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample_list.append(0) # 尾部插入某个值\n",
    "del sample_list[1] #删除某个值\n",
    "sample_list[0:0] = ['sample value'] # 头部插入某个值\n",
    "len(sample_list) #计算长度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sample_list2=sample_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sample_list[0]='test'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['test', 'a', ('a', 'b'), 0]"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample_list2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "sample_list3=sample_list[:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['test', 'a', ('a', 'b'), 0]"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample_list3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 常用操作list的方法  \n",
    "- 追加元素：list.append(var)       \n",
    "- 插入元素：list.insert(index,var)  \n",
    "- 返回最后一个元素并删除：list.pop(var)       \n",
    "- 删除第一次出现的该元素：list.remove(var)       \n",
    "- 元素在列表中出现的个数：list.count(var)     \n",
    "- 元素的位置,无则抛异常：list.index(var) \n",
    "- 合并list到L上：list.extend(list)  \n",
    "- 正序排序：list.sort()   \n",
    "- 倒序排序： list.reverse()\n",
    "- 返回var在列表中出现的次数：list.count(var)\n",
    "- 创建由参数“分裂”得到的字符串元素列表：list.split()\n",
    "- 以字符串列表作为参数，使用分隔符作为主调对象，将每个元素放置到新的字符串中：list.join()\n",
    "\n",
    "\n",
    "#### 关于 list的复制  \n",
    "- L1 = L\n",
    "    - L1为L的别名，用C来说就是指针地址相同，对L1操作即对L操作。函数参数就是这样传递的  \n",
    "- L1 = L[:]   \n",
    "    - L1为L的克隆，即另一个拷贝。 \n",
    "- L1 = L.copy()\n",
    "    - L1为L的克隆，即另一个拷贝"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2、元组\n",
    "\n",
    "元组与列表一样，也是一种序列，唯一不同的是元组不能被修改（字符串其实也有这种特点）。 \n",
    "\n",
    "- 能保存任意数量任意类型的Python 对象\n",
    "- 元组元素用小括号 ( )包裹\n",
    "- 元素的个数及元素的值不可以改变\n",
    "- 索引运算符[ i ]得到下标为i的元素\n",
    "- 切片运算符[ i : j]得到从下标i到下标j-1的子集\n",
    "- 第一个字符元素为 0，最后一个元素索引为-1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1, 2, 3)\n",
      "('j', 'e', 'f', 'f')\n",
      "(1, 2, 3)\n"
     ]
    },
    {
     "ename": "TypeError",
     "evalue": "'int' object is not iterable",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-49-916e407da42b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      5\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mt2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mt3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mt4\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m123\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      8\u001b[0m \u001b[0mprint\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mt4\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mTypeError\u001b[0m: 'int' object is not iterable"
     ]
    }
   ],
   "source": [
    "t1=tuple([1,2,3])\n",
    "t2=tuple(\"jeff\")\n",
    "t3=tuple((1,2,3))\n",
    "print (t1)\n",
    "print (t2)\n",
    "print (t3)\n",
    "t4=tuple(123)\n",
    "print (t4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 't4' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-50-832cd73aeebe>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mt4\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m: name 't4' is not defined"
     ]
    }
   ],
   "source": [
    "t4.append(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 一般用逗号分隔一些值来创建元组；\n",
    "\n",
    "- 元组大部分时候是通过圆括号括起来的；\n",
    "\n",
    "- 空元组可以用没有包含内容的圆括号来表示；"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3、字符串\n",
    "\n",
    "字符串是由数字、字母、下划线组成的一串字符。字符串不能被修改。\n",
    "\n",
    "- 大多数程序员在处理字符串上花费的时间要远远超过处理数字的时间。逻辑思维(以及创造力)的重要性要远远超过数学能力。\n",
    "- 对Unicode的支持使得Python3可以包含世界上任何书面语言以及许多特殊符号。对于Unicode的支持是Python3从Python2中分离出来的重要原因之一。\n",
    "- 计算机很多时候都在处理字符串，比如写电子邮件和文章、发送短信或即时消息、发布博客、利用百度查找信息、浏览网页等。\n",
    "- 字符串类型是由Python提供的数据库集类型之一。\n",
    "\n",
    "\n",
    "\n",
    "- 包含在单引号或双引号之间的字符集合\n",
    "- 索引运算符[ i ]得到下标为i的字符\n",
    "- 切片运算符[ i : j]得到从下标i到下标j-1的子串\n",
    "- 第一个字符索引为 0，最后一个字符索引为-1\n",
    "- 加号(+)用于字符串连接运算\n",
    "- 星号(*)用于字符串复制\n",
    "- in用于判断某个子串是否在字符串中\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello world\n",
      "H\n",
      "H\n",
      "e\n",
      "l\n",
      "l\n",
      "o\n",
      " \n",
      "w\n",
      "o\n",
      "r\n",
      "l\n",
      "d\n"
     ]
    }
   ],
   "source": [
    "str1='Hello world'\n",
    "print (str1)\n",
    "print (str1[0])\n",
    "for c in str1:\n",
    "    print (c)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def cmp(a, b):\n",
    "    return (a > b) - (a < b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-1\n"
     ]
    }
   ],
   "source": [
    "str2=str1.replace(' ',',') ###字符串替换\n",
    "print (cmp(str1,str2))  ###字符串比较"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "H_e_l_l_o_,_w_o_r_l_d\n",
      "Hello world;Hello,world\n"
     ]
    }
   ],
   "source": [
    "print ('_'.join(str2))  ###字符串连接\n",
    "content = '%s;%s' % tuple((str1,str2)) \n",
    "print (content)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 常用字符串处理函数\n",
    "\n",
    "- 转化为大写：S.upper()\n",
    "- 转化为小写：S.lower()\n",
    "- 首字母大写：S.capitalize()\n",
    "- 是否是首字母大写：S.istitle()\n",
    "- 字母是否全是大写：S.isupper()\n",
    "- 字母是否全是小写：S.islower()\n",
    "- 去掉字符串的左右空格：S.strip()\n",
    "- 去掉字符串的左边空格：S.lstrip()\n",
    "- 去掉字符串的右边空格：S.rstrip()\n",
    "- 计算出现次数：S.count(substr, [start, [end]])\n",
    "- 是否全是字母和数字：S.isalnum() \n",
    "- 是否全是字母：S.isalpha() \n",
    "- 是否全是空白字符：S.isspace()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4、集合\n",
    "\n",
    "- 用set()创建集合对象\n",
    "- 集合中的元素不重复\n",
    "- 支持数学集合操作\n",
    "- 集合是无序的\n",
    "- 集合里的元素是不可变的（能够hash的）\n",
    "- 不支持索引和切片操作\n",
    "- set：可变集合\n",
    "- frozenset：不可变集合\n",
    "- 可变集合(set)特有的方法\n",
    "  - s.add(item)\n",
    "  - s.clear()\n",
    "  - s.discard(item)、s.remove(item)\n",
    "  - s.update(t)\n",
    "  - s.difference_update(t)：从s中删除和t交集的部分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "set()"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "empty_set = set()\n",
    "empty_set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{0, 2, 4, 6, 8}"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "even_numbers = {0,2,2,4,6,8}\n",
    "even_numbers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'e', 'l', 'r', 's', 't'}"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "set('letters')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'apple', 'banana', 'orange'}"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "set(['apple','banana','orange'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'apple', 'cherry', 'orange'}"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#字典作为参数传入set()函数时，只有键会被使用\n",
    "set({'apple':'red','orange':'orange','cherry':'red'})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  二. 映射（字典）\n",
    "\n",
    "映射中的每个元素都有一个名字，如你所知，这个名字专业的名称叫键。字典（也叫散列表）是Python中唯一内建的映射类型。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "apple\n"
     ]
    }
   ],
   "source": [
    "dict = {\"a\":\"apple\",\"b\":\"banana\",\"g\":\"grape\",\"o\":\"orange\"}\n",
    "print (dict[\"a\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "del(dict[\"a\"]) #删除字典元素\"a\"\n",
    "dict[\"g\"]=\"grapefruit\" #添加字典元素“g”"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dict[o] =  orange\n",
      "dict[b] =  banana\n",
      "dict[g] =  grapefruit\n"
     ]
    }
   ],
   "source": [
    "for k in dict:\n",
    "    print (\"dict[%s] = \"%k,dict[k])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dict[o] =  orange\n",
      "dict[b] =  banana\n",
      "dict[g] =  grapefruit\n"
     ]
    }
   ],
   "source": [
    "for (k,v) in dict.items():  ##遍历元素\n",
    "    print (\"dict[%s] = \"%k,v)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 字典的常用方法 \n",
    "- dict.keys()：返回字典的key列表 \n",
    "- dict.values()：返回字典的value列表 \n",
    "- dict.get(k,d)：返回字典中的'd'个value值  \n",
    "- dict.update(dict2)：合并两个字典，若有相同键值，则覆盖原来的值\n",
    "- dict.setdefault(k,d)：创建新的元素'd'并设置默认值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  三. Array and Dataframe\n",
    "\n",
    "多维数据结构。在Numpy包和pandas包中详细介绍。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<hr>\n",
    "# 基本语法"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 一.  条件和条件语句\n",
    "\n",
    "- Python主要作用条件判断的是if语句，由三部分组成: 关键字本身, 用于判断结果真假的条件表达式, 以及当表达式为真或者非零时执行的代码块；\n",
    "- if语句的语法如下：\n",
    "    \n",
    "    if expression: \n",
    "      expr_true_suite；\n",
    "- 结合else语句语法如下：\n",
    "\n",
    "    if expression:\n",
    "      expr_true_suite\n",
    "    else:\n",
    "      expr_false_suite\n",
    "      \n",
    "- 结合elif语句语法如下：\n",
    "\n",
    "    if expression1:\n",
    "      expr1_true_suite\n",
    "    elif expression2:\n",
    "      expr2_true_suite"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n"
     ]
    }
   ],
   "source": [
    "value=0\n",
    "if value>1 and value<=2:\n",
    "    print (1) \n",
    "elif value>2:\n",
    "    print (2)\n",
    "else:\n",
    "    print (value)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 二.  循环和循环语句\n",
    "\n",
    "### 1. While\n",
    "\n",
    "while循环的语句格式如下：\n",
    "\n",
    "    while expression:\n",
    "       suite_to_repeat\n",
    "       \n",
    "suite_to_repeat子句会一直循环执行, 直到expression 值返回为false。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "the index is: 0\n",
      "the index is: 1\n",
      "the index is: 2\n",
      "the index is: 3\n",
      "the index is: 4\n",
      "the index is: 5\n",
      "the index is: 6\n",
      "the index is: 7\n",
      "the index is: 8\n"
     ]
    }
   ],
   "source": [
    "count = 0\n",
    "while (count < 9):\n",
    "    print ('the index is:', count)\n",
    "    count += 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. For\n",
    "\n",
    "for循环的语句格式如下：\n",
    "\n",
    "    for iter_var in iterable:\n",
    "        suite_to_repeat\n",
    "       \n",
    "for循环会访问一个可迭代对象(例如序列或是迭代器)中的所有元素, 并在所有条目都处理过后结束循环。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "the index is: 0\n",
      "the index is: 1\n",
      "the index is: 2\n",
      "the index is: 3\n",
      "the index is: 4\n",
      "the index is: 5\n",
      "the index is: 6\n",
      "the index is: 7\n",
      "the index is: 8\n"
     ]
    }
   ],
   "source": [
    "for i in range(9):\n",
    "    print ('the index is:', i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 Donn Lee\n",
      "2 Shirley Lee\n",
      "3 Ben Lee\n",
      "4 Janice Lee\n",
      "5 David Lee\n",
      "6 Yen Lee\n",
      "7 Wendy Lee\n"
     ]
    }
   ],
   "source": [
    "nameList = ['Donn', 'Shirley', 'Ben', 'Janice','David', 'Yen', 'Wendy']\n",
    "for i, eachLee in enumerate(nameList):\n",
    "    print (\"%d %s Lee\" % (i+1, eachLee))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 三.  函数\n",
    "\n",
    "数学上的函数，是指给定一个输入，就会有唯一输出的一种对应关系。编程语言里的函数跟这个意思差不多，但也有不同。函数就是一块语句，这块语句有个名字，你可以在需要时反复地使用这块语句。它有可能需要输入，有可能会返回输出。\n",
    "\n",
    "\n",
    "函数的语句格式如下：\n",
    "   \n",
    "    def function_name(input):\n",
    "        function_suite #函数体"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hello, world\n"
     ]
    }
   ],
   "source": [
    "def hello1():\n",
    "    print ('hello, world')\n",
    "    \n",
    "test1=hello1()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def hello2(name):\n",
    "    return ('Hello,%s' %(name))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello,Albert\n"
     ]
    }
   ],
   "source": [
    "test2=hello2('Albert')\n",
    "print (test2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 四. 类\n",
    "\n",
    "类是一种数据结构,我们可以用它来定义对象。类是现实世界的抽象的实体以编程形式出现。实例是这些对象的具体化。可以类比一下,类是蓝图或者模型,用来产生真实的物体(实例)。因此为什么是术语“class”?这个术语很可能起源于使用类来识别和归类特定生物所属的生物种族,类还可以派生出相似但有差异的子类。编程中类的概念就应用了很多这样的特征。\n",
    "\n",
    "类的语言格式如下：\n",
    "    \n",
    "    class ClassName(object): \n",
    "         class_suite #类体"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "100"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "class C(object):\n",
    "    foo = 100\n",
    "\n",
    "test3=C()\n",
    "test3.foo\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3.0, -4.5)"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "class Complex:\n",
    "    def __init__(self, realpart, imagpart): ##__init__构造器，默认行为，是预定义的\n",
    "        self.r = realpart\n",
    "        self.i = imagpart\n",
    "\n",
    "x = Complex(3.0, -4.5)\n",
    "x.r, x.i"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 五. 模块\n",
    "\n",
    "模块是Pyhon最高级别的程序组织单元，它将程序代码和数据封装起来以便重用。实际的角度，模块往往对应Python程序文件。\n",
    "每个文件都是一个模块，并且模块导入其他模块之后就可以使用导入模块定义的变量名。模块可以由两个语句和一个重要的内置函数进行处理。\n",
    "- 将整个模块导入，格式为：import module;\n",
    "- 从某个模块中导入某个函数,格式为：from somemodule import somefunction;\n",
    "- 从某个模块中导入多个函数,格式为：from somemodule import firstfunc, secondfunc, thirdfunc\n",
    "- 将某个模块中的全部函数导入，格式为：from somemodule import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from numpy import abs,sum,where,sqrt\n",
    "from numpy import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 六. 推导式\n",
    "\n",
    "> 列表推导式\n",
    "\n",
    "- 形式一：[expression for item in iterable]\n",
    "- 形式二：[expression for item in iterable if condition]\n",
    "\n",
    "> 字典推导式\n",
    "\n",
    "- 形式：{key_expression : value_expression for expression in iterable}\n",
    "\n",
    "> 集合推导式\n",
    "\n",
    "- 形式： {expression for expression in iterable}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1, 2, 3, 4, 5]"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "number_list = [number for number in range(1,6)]\n",
    "number_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1, 3, 5]"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a_list = [number for number in range(1,6) if number % 2 == 1]\n",
    "a_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'e': 2, 'l': 1, 'r': 1, 's': 1, 't': 2}"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "word = 'letters'\n",
    "letter_counts = {letter: word.count(letter) for letter in word}\n",
    "letter_counts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{1, 4}"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a_set = {number for number in range(1,6) if number % 3 == 1}\n",
    "a_set"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### zip()并行迭代\n",
    "\n",
    "- 通过zip()函数对多个序列进行并行迭代\n",
    "- zip()函数在最短序列“用完”时停止执行\n",
    "- zip()函数配对两个元祖。函数返回值既不是元祖也不是列表，而是一个整合在一起的可迭代变量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Monday :drink coffee - eat apple - enjoy tiramisu\n",
      "Tuesday :drink beer - eat banana - enjoy ice cream\n",
      "Wednesday :drink tea - eat peach - enjoy pie\n"
     ]
    }
   ],
   "source": [
    "days = ['Monday','Tuesday','Wednesday']\n",
    "fruits = ['apple','banana','peach']\n",
    "drinks = ['coffee','beer','tea']\n",
    "desserts = ['tiramisu','ice cream','pie','pudding']\n",
    "for day,fruit,drink,dessert in zip(days,fruits,drinks,desserts):\n",
    "    print (day,\":drink\",drink,\"- eat\",fruit,\"- enjoy\",dessert)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### range()生成自然序列\n",
    "\n",
    "- range()函数返回在特定区间的自然数序列，不需要创建和存储复杂的数据结构，列如列表和元祖。这允许在不适用计算机全部内存的情况下创建较大的区间，也不会使你的程序崩溃。\n",
    "- range()函数用法类似使用切片：range(start,stop,step)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n",
      "1\n",
      "2\n"
     ]
    }
   ],
   "source": [
    "for x in range(0,3):\n",
    "    print (x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2\n",
      "1\n",
      "0\n"
     ]
    }
   ],
   "source": [
    "for x in range(2,-1,-1):\n",
    "    print (x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2, 1, 0]\n",
      "[0, 2, 4, 6, 8, 10]\n"
     ]
    }
   ],
   "source": [
    "print (list(range(2,-1,-1)))\n",
    "print (list(range(0,11,2)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Assignments"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 模式编辑 (Mode Editor)\n",
    "在`Jupyter Notebook`中有两种状态：\n",
    "+ `编辑状态 (Editor Mode)`。在编辑状态时右上角会出现铅笔图标，按`Esc`键切换回命令状态。\n",
    "+ `命令状态 (Command Mode)`。按`Enter`键（或者双击cell）变为编辑状态"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 单元类型 (cell type)\n",
    "`Jupyter Notebook`文档由一系列的单元 (cell) 组成，主要用的两类单元是：\n",
    "+ `markdown cell`, 命令模式下，按`m`可将单元切换为`markdown cell`。\n",
    "+ `code cell`，命令模式下，按`y`可将单元切换为`code cell`。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 命令模式下常用快捷键\n",
    "\n",
    "+ 查看快捷键帮助：`h`\n",
    "+ 保存: `s`\n",
    "+ cell间移动: `j`, `k`\n",
    "+ 添加cell: `a`, `b`\n",
    "+ 删除cell: `dd`\n",
    "+ cell编辑: `x`, `c`, `v`, `z`\n",
    "+ 中断kernel: `ii`\n",
    "+ 重启kernel: `00`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 拆分单元 (split cell)\n",
    "\n",
    "编辑模式下按`control+shift+-`可拆分cell"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 合并单元\n",
    "在命令模式下，先用`shift+j`或`shift+k`选中想合并的单元，然后用`shift+m`合并"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数学公式\n",
    "\n",
    "`Jupyter Notebook`中采用[mathjax](https://www.mathjax.org/)渲染数学公式，渲染出的效果如下\n",
    "$$\\left( \\sum_{k=1}^n a_k b_k \\right)^2 \\leq \\left( \\sum_{k=1}^n a_k^2 \\right) \\left( \\sum_{k=1}^n b_k^2 \\right)$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 查看对象信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%pdoc np\n",
    "np.*cos*?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 魔法函数 (magic functions)\n",
    "+ `%`开头的为单行魔法函数\n",
    "+ `%%`开头的为cell魔法函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "total 32064\r\n",
      "-rwxr-xr-x   1 lee  staff   368620  8 11 22:32 \u001b[31m第2讲-python环境和基础语法.ipynb\u001b[m\u001b[m*\r\n",
      "-rw-r--r--   1 lee  staff       15  8 11 22:24 me.txt\r\n",
      "-rw-r--r--   1 lee  staff   390643  8 11 22:12 salary_data.csv\r\n",
      "drwxr-xr-x   7 lee  staff      238  8 11 18:43 \u001b[34m课件html\u001b[m\u001b[m/\r\n",
      "-rwxr-xr-x   1 lee  staff   662209  8 11 18:42 \u001b[31m第3讲-练习题.ipynb\u001b[m\u001b[m*\r\n",
      "-rw-r--r--   1 lee  staff  1850788  8 11 18:22 第4讲-其他一些模块介绍.ipynb\r\n",
      "-rw-r--r--   1 lee  staff   491826  8 11 17:20 stocks.html\r\n",
      "-rw-r--r--   1 lee  staff   306711  8 11 17:18 linked_panning.html\r\n",
      "-rw-r--r--   1 lee  staff   277157  8 11 17:17 color_scatter.html\r\n",
      "-rw-r--r--   1 lee  staff     7613  8 11 17:15 lines.html\r\n",
      "-rwxr-xr-x   1 lee  staff  8524136  8 11 10:55 \u001b[31m第3讲-基础工具库.ipynb\u001b[m\u001b[m*\r\n",
      "-rw-r--r--   1 lee  staff    11527  8 11 08:38 graph.pdf\r\n",
      "-rw-r--r--   1 lee  staff    51316  8 11 08:38 graph.png\r\n",
      "-rw-r--r--   1 lee  staff    50936  8 11 08:38 figure-2.jpg\r\n",
      "-rw-r--r--@  1 lee  staff    36996  8 11 08:31 figure-1.jpg\r\n",
      "-rw-r--r--   1 lee  staff      371  8 10 11:11 mprun_demo.pyc\r\n",
      "-rw-r--r--   1 lee  staff      181  8 10 11:10 mprun_demo.py\r\n",
      "-rw-r--r--@  1 lee  staff      157  8 10 10:06 myscript.py\r\n",
      "-rwxr-xr-x   1 lee  staff    26033  8  9 23:25 \u001b[31m第1讲-数据分析方法概述.ipynb\u001b[m\u001b[m*\r\n",
      "-rw-r--r--@  1 lee  staff  3316934  7  7 16:54 Bokeh.pdf\r\n",
      "drwxr-xr-x@ 10 lee  staff      340  6 28 07:14 \u001b[34mdata\u001b[m\u001b[m/\r\n",
      "drwxr-xr-x@ 38 lee  staff     1292  6 28 07:14 \u001b[34mfigures\u001b[m\u001b[m/\r\n"
     ]
    }
   ],
   "source": [
    "%ls -lt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%magic"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "application/json": {
       "cell": {
        "!": "OSMagics",
        "HTML": "Other",
        "SVG": "Other",
        "bash": "Other",
        "capture": "ExecutionMagics",
        "debug": "ExecutionMagics",
        "file": "Other",
        "html": "DisplayMagics",
        "javascript": "DisplayMagics",
        "js": "DisplayMagics",
        "latex": "DisplayMagics",
        "perl": "Other",
        "prun": "ExecutionMagics",
        "pypy": "Other",
        "python": "Other",
        "python2": "Other",
        "python3": "Other",
        "ruby": "Other",
        "script": "ScriptMagics",
        "sh": "Other",
        "svg": "DisplayMagics",
        "sx": "OSMagics",
        "system": "OSMagics",
        "time": "ExecutionMagics",
        "timeit": "ExecutionMagics",
        "writefile": "OSMagics"
       },
       "line": {
        "alias": "OSMagics",
        "alias_magic": "BasicMagics",
        "autocall": "AutoMagics",
        "automagic": "AutoMagics",
        "autosave": "KernelMagics",
        "bookmark": "OSMagics",
        "cat": "Other",
        "cd": "OSMagics",
        "clear": "KernelMagics",
        "colors": "BasicMagics",
        "config": "ConfigMagics",
        "connect_info": "KernelMagics",
        "cp": "Other",
        "debug": "ExecutionMagics",
        "dhist": "OSMagics",
        "dirs": "OSMagics",
        "doctest_mode": "BasicMagics",
        "ed": "Other",
        "edit": "KernelMagics",
        "env": "OSMagics",
        "gui": "BasicMagics",
        "hist": "Other",
        "history": "HistoryMagics",
        "killbgscripts": "ScriptMagics",
        "ldir": "Other",
        "less": "KernelMagics",
        "lf": "Other",
        "lk": "Other",
        "ll": "Other",
        "load": "CodeMagics",
        "load_ext": "ExtensionMagics",
        "loadpy": "CodeMagics",
        "logoff": "LoggingMagics",
        "logon": "LoggingMagics",
        "logstart": "LoggingMagics",
        "logstate": "LoggingMagics",
        "logstop": "LoggingMagics",
        "ls": "Other",
        "lsmagic": "BasicMagics",
        "lx": "Other",
        "macro": "ExecutionMagics",
        "magic": "BasicMagics",
        "man": "KernelMagics",
        "matplotlib": "PylabMagics",
        "mkdir": "Other",
        "more": "KernelMagics",
        "mv": "Other",
        "notebook": "BasicMagics",
        "page": "BasicMagics",
        "pastebin": "CodeMagics",
        "pdb": "ExecutionMagics",
        "pdef": "NamespaceMagics",
        "pdoc": "NamespaceMagics",
        "pfile": "NamespaceMagics",
        "pinfo": "NamespaceMagics",
        "pinfo2": "NamespaceMagics",
        "popd": "OSMagics",
        "pprint": "BasicMagics",
        "precision": "BasicMagics",
        "profile": "BasicMagics",
        "prun": "ExecutionMagics",
        "psearch": "NamespaceMagics",
        "psource": "NamespaceMagics",
        "pushd": "OSMagics",
        "pwd": "OSMagics",
        "pycat": "OSMagics",
        "pylab": "PylabMagics",
        "qtconsole": "KernelMagics",
        "quickref": "BasicMagics",
        "recall": "HistoryMagics",
        "rehashx": "OSMagics",
        "reload_ext": "ExtensionMagics",
        "rep": "Other",
        "rerun": "HistoryMagics",
        "reset": "NamespaceMagics",
        "reset_selective": "NamespaceMagics",
        "rm": "Other",
        "rmdir": "Other",
        "run": "ExecutionMagics",
        "save": "CodeMagics",
        "sc": "OSMagics",
        "set_env": "OSMagics",
        "store": "StoreMagics",
        "sx": "OSMagics",
        "system": "OSMagics",
        "tb": "ExecutionMagics",
        "time": "ExecutionMagics",
        "timeit": "ExecutionMagics",
        "unalias": "OSMagics",
        "unload_ext": "ExtensionMagics",
        "who": "NamespaceMagics",
        "who_ls": "NamespaceMagics",
        "whos": "NamespaceMagics",
        "xdel": "NamespaceMagics",
        "xmode": "BasicMagics"
       }
      },
      "text/plain": [
       "Available line magics:\n",
       "%alias  %alias_magic  %autocall  %automagic  %autosave  %bookmark  %cat  %cd  %clear  %colors  %config  %connect_info  %cp  %debug  %dhist  %dirs  %doctest_mode  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %lf  %lk  %ll  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %lx  %macro  %magic  %man  %matplotlib  %mkdir  %more  %mv  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %popd  %pprint  %precision  %profile  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %rep  %rerun  %reset  %reset_selective  %rm  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode\n",
       "\n",
       "Available cell magics:\n",
       "%%!  %%HTML  %%SVG  %%bash  %%capture  %%debug  %%file  %%html  %%javascript  %%js  %%latex  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile\n",
       "\n",
       "Automagic is ON, % prefix IS NOT needed for line magics."
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%lsmagic"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Writing hello.py\n"
     ]
    }
   ],
   "source": [
    "%%writefile hello.py\n",
    "print(\"hello World\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hello world\n"
     ]
    }
   ],
   "source": [
    "%run hello.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Writing message.py\n"
     ]
    }
   ],
   "source": [
    "%%writefile message.py\n",
    "print(message)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "message = \"hello world\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'message' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m/Users/lee/Documents/HZ-python-notebook-base/HZ-python-notebook-base/message.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m: name 'message' is not defined"
     ]
    }
   ],
   "source": [
    "%run message.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hello world\n"
     ]
    }
   ],
   "source": [
    "%run -i message.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "?%run"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [conda root]",
   "language": "python",
   "name": "conda-root-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
