{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Python 入门演示" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 简单的数学运算" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "整数相加,得到整数:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 + 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "浮点数相加,得到浮点数:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "4.5" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2.0 + 2.5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "整数和浮点数相加,得到浮点数:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "4.5" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "2 + 2.5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 变量赋值" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Python**使用`<变量名>=<表达式>`的方式对变量进行赋值" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "a = 0.2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 字符串 String" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "字符串的生成,单引号与双引号是等价的:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'hello world'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"hello world\"\n", "s" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'hello world'" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = 'hello world'\n", "s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "三引号用来输入包含多行文字的字符串:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello\n", "world\n" ] } ], "source": [ "s = \"\"\"hello\n", "world\"\"\"\n", "print s" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello\n", "world\n" ] } ], "source": [ "s = '''hello\n", "world'''\n", "print s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "字符串的加法:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'hello world'" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"hello\" + \" world\"\n", "s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "字符串索引:\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'h'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s[0]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'d'" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s[-1]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'hello'" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s[0:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "字符串的分割:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['hello', 'world']" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = \"hello world\"\n", "s.split()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "查看字符串的长度:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "11" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 列表 List" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python用`[]`来生成列表" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[1, 2.0, 'hello', 6.0]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = [1, 2.0, 'hello', 5 + 1.0]\n", "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "列表加法:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[1, 2.0, 'hello', 6.0, 1, 2.0, 'hello', 6.0]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a + a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "列表索引:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a[1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "列表长度:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(a)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "向列表中添加元素:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[1, 2.0, 'hello', 6.0, 'world']" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a.append(\"world\")\n", "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 集合 Set" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python用{}来生成集合,集合中不含有相同元素。" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{2, 3, 4}" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = {2, 3, 4, 2}\n", "s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "集合的长度:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(s)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "向集合中添加元素:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{1, 2, 3, 4}" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s.add(1)\n", "s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "集合的交:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{2, 3, 4}" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = {1, 2, 3, 4}\n", "b = {2, 3, 4, 5}\n", "a & b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "并:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{1, 2, 3, 4, 5}" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a | b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "差:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{1}" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a - b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "对称差:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{1, 5}" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a ^ b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 字典 Dictionary " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python用`{key:value}`来生成Dictionary。" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{'cats': 4, 'dogs': 5}" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d = {'dogs':5, 'cats':4}\n", "d" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "字典的大小" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(d)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "查看字典某个键对应的值:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "5" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d[\"dogs\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "修改键值:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{'cats': 4, 'dogs': 2}" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d[\"dogs\"] = 2\n", "d" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "插入键值:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{'cats': 4, 'dogs': 2, 'pigs': 7}" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d[\"pigs\"] = 7\n", "d" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "所有的键:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['cats', 'dogs', 'pigs']" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.keys()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "所有的值:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[4, 2, 7]" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.values()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "所有的键值对:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[('cats', 4), ('dogs', 2), ('pigs', 7)]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d.items()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 数组 Numpy Arrays" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "需要先导入需要的包,Numpy数组可以进行很多列表不能进行的运算。" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([1, 2, 3, 4])" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from numpy import array\n", "a = array([1, 2, 3, 4])\n", "a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "加法:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([3, 4, 5, 6])" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a + 2" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([2, 4, 6, 8])" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a + a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 画图 Plot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python提供了一个很像MATLAB的绘图接口。" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "from matplotlib.pyplot import plot\n", "plot(a, a**2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 循环 Loop" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['1', '2', '3', '4', '5']" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "line = '1 2 3 4 5'\n", "fields = line.split()\n", "fields" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "15" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "total = 0\n", "for field in fields:\n", " total += int(field)\n", "total" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python中有一种叫做列表推导式(List comprehension)的用法:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[1, 2, 3, 4, 5]" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "numbers = [int(field) for field in fields]\n", "numbers" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "15" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(numbers)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "写在一行:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "15" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum([int(field) for field in line.split()])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 文件操作 File IO" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "d:\\Users\\lijin\n" ] } ], "source": [ "cd ~" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "写文件:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": true }, "outputs": [], "source": [ "f = open('data.txt', 'w')\n", "f.write('1 2 3 4\\n')\n", "f.write('2 3 4 5\\n')\n", "f.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "读文件:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "[[1, 2, 3, 4], [2, 3, 4, 5]]" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f = open('data.txt')\n", "data = []\n", "for line in f:\n", " data.append([int(field) for field in line.split()])\n", "f.close()\n", "data\n" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 4]\n", "[2, 3, 4, 5]\n" ] } ], "source": [ "for row in data:\n", " print row" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "删除文件:" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import os\n", "os.remove('data.txt')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 函数 Function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python用关键词`def`来定义函数。" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def poly(x, a, b, c):\n", " y = a * x ** 2 + b * x + c\n", " return y\n", "\n", "x = 1\n", "poly(x, 1, 2, 3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "用Numpy数组做参数x:" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 6, 11, 18])" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = array([1, 2, 3])\n", "poly(x, 1, 2, 3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "可以在定义时指定参数的默认值:" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from numpy import arange\n", "\n", "def poly(x, a = 1, b = 2, c = 3):\n", " y = a*x**2 + b*x + c\n", " return y\n", "\n", "x = arange(10)\n", "x\n", "array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 3, 6, 11, 18, 27, 38, 51, 66, 83, 102])" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poly(x)" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([ 3, 5, 9, 15, 23, 33, 45, 59, 75, 93])" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poly(x, b = 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 模块 Module" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Python中使用`import`关键词来导入模块。" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import os" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "当前进程号:" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "4400" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.getpid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "系统分隔符:" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'\\\\'" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "os.sep" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## - 类 Class" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "用`class`来定义一个类。\n", "`Person(object)`表示继承自`object`类;\n", "`__init__`函数用来初始化对象;\n", "`self`表示对象自身,类似于`C` `Java`里面`this`。" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class Person(object):\n", " def __init__(self, first, last, age):\n", " self.first = first\n", " self.last = last\n", " self.age = age\n", " def full_name(self):\n", " return self.first + ' ' + self.last" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "构建新对象:" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": true }, "outputs": [], "source": [ "person = Person('Mertle', 'Sedgewick', 52)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "调用对象的属性:" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'Mertle'" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "person.first" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "调用对象的方法:" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'Mertle Sedgewick'" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "person.full_name()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "修改对象的属性:" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "collapsed": true }, "outputs": [], "source": [ "person.last = 'Smith'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "添加新属性,d是之前定义的字典:" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{'cats': 4, 'dogs': 2, 'pigs': 7}" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "person.critters = d\n", "person.critters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 网络数据 Data from Web" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "collapsed": true }, "outputs": [], "source": [ "url = 'http://ichart.finance.yahoo.com/table.csv?s=GE&d=10&e=5&f=2013&g=d&a=0&b=2&c=1962&ignore=.csv'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "处理后就相当于一个可读文件:" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close\\n'],\n", " ['2013-11-05', '26.32', '26.52', '26.26', '26.42', '24897500', '24.872115\\n'],\n", " ['2013-11-04',\n", " '26.59',\n", " '26.59',\n", " '26.309999',\n", " '26.43',\n", " '28166100',\n", " '24.88153\\n'],\n", " ['2013-11-01',\n", " '26.049999',\n", " '26.639999',\n", " '26.030001',\n", " '26.540001',\n", " '55634500',\n", " '24.985086\\n']]" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import urllib2\n", "ge_csv = urllib2.urlopen(url)\n", "data = []\n", "for line in ge_csv:\n", " data.append(line.split(','))\n", "data[:4]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "使用`pandas`处理数据:" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWwAAAEECAYAAAAMOA6OAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XeYVdW5+PHvC0PvdagCCqgoBjEaVNRBxaveBDUEFY1o\n9KIx0SDGGCS/6BhjjBqNEvXGHvCqWKNy1asoDkGDEghFYBRBUKSXoUoZhvf3x9qbUzgzp/f38zzz\n7HL23mftNWfeWWftVURVMcYYk/vqZTsBxhhjYmMB2xhj8oQFbGOMyRMWsI0xJk9YwDbGmDxhAdsY\nY/JETAFbROqLyFwRmeJttxWRqSKyRETeFZHW6U2mMcaYWEvYY4DFgN9oexwwVVX7Au9728YYY9Io\nasAWkW7AucATgHi7hwETvfWJwPlpSZ0xxpgDYilh/xn4FbA/aF+pqq7z1tcBpalOmDHGmFB1BmwR\n+T6wXlXnEihdh1DXt936txtjTJqVRHn9JGCYiJwLNAZaisgzwDoR6aSqa0WkM7A+0skiYoHcGGMS\noKoHFZLrLGGr6nhV7a6qvYCLgWmqehnwBnC5d9jlwGt1XKMgfm677baspyHbP5YHlgfFfv+ZyoPa\nxNsO27/SH4GhIrIEON3bNsYYk0bRqkQOUNXpwHRvfTNwZroSZYwx5mDW0zFGZWVl2U5C1lkeWB4U\n+/1DdvNA6qovSfriIprO6xtjTCESETTCQ8eYq0RSnRiTG+wfqjH5IysBGyxQ5AL7x2lMfrE6bGOM\nyRMWsI0xJk9YwDbGmDxhATtJV1xxBb/97W8BmDFjBkcccURKrmVMrtu9G376U6iqynZKiocF7FqU\nlZXRtm1b9u7dW+dxInLg4d0pp5zCZ599VuuxqsqECRPo378/zZs3p3v37lx44YUsXLjwoGsZk+sW\nLIBHH4W2bbOdkuJhATuCFStWMGvWLDp27Mgbb7wR9fhYW7yMGTOGCRMm8Je//IWqqiqWLFnC+eef\nz1tvvRX3tYzJNvuoZp4F7AgmTZrEmWeeyWWXXcbEiRNDXps7dy4DBw6kZcuWXHzxxezevfvAaxUV\nFXTv3j3iNb/44gseeeQRJk+eTFlZGQ0aNKBJkyZccskl3HzzzRHPefzxx+nTpw/t2rXjvPPOY82a\nNQdeGzt2LKWlpbRq1YpjjjmGRYsWAbBnzx5uuukmevToQadOnbj22mtD0mhMquzfH/0Yk1oWsCOY\nNGkSF110ERdeeCHvvPMO69e70WP37t3L+eefz+WXX05VVRUjRozglVdeiaka4/3336d79+5897vf\njSkN06ZNY/z48bz00kusWbOGHj16cPHFFwPwzjvvMGPGDL744gu2bt3KSy+9RLt27QAYN24cS5cu\nZf78+SxdupRVq1bxu9/9LsGcMKZ2FrAzLycDtkhqfhLx4YcfsmrVKoYNG0afPn3o168fzz33HAAf\nf/wx+/btY8yYMdSvX5/hw4dz/PHHx3TdTZs20alTpxju3SX82Wef5aqrrmLAgAE0bNiQu+66i5kz\nZ/L111/TsGFDtm/fTmVlJfv37+fwww+nU6dOqCqPP/44999/P61bt6Z58+bccsstTJ48ObHMMKYO\nFrAzLycDtmpqfhIxceJEzjrrLFq0aAHAiBEjDlSLrF69mq5du4Yc36NHj5iu265du5AqjWj8UrWv\nWbNmtGvXjlWrVjFkyBCuu+46fv7zn1NaWso111zD9u3b2bBhA99++y3HHXccbdq0oU2bNpxzzjls\n3Lgx5vc1JlZWh515ORmws2XXrl28+OKLTJs2jc6dO9O5c2fuu+8+FixYwIIFC+jSpQurVq0KOeer\nr76K6dpnnHEG33zzDXPmzInp+C5durBixYoD2zt37mTTpk0H/mFcf/31zJ49m8WLF7NkyRLuvfde\nOnToQJMmTVi8eDFVVVVUVVWxZcsWtm3bFlsGGBMHK2FnngXsIK+99holJSVUVlYyf/585s+fT2Vl\nJYMHD2bSpEmceOKJlJSUMGHCBKqrq3n11Vf517/+FdO1+/Tpw89+9jNGjhzJ9OnT2bt3L7t372by\n5MncfffdACGzTYwcOZKnn36a+fPns2fPHsaPH8+gQYM45JBDmD17Np988gnV1dU0bdqUxo0bU79+\nfUSE0aNHc8MNN7BhwwYAVq1axbvvvpueDDNFLUqLV5MGUQO2iDQWkU9EZJ6ILBaRu7z95SLyjYjM\n9X7OTn9y02vSpElceeWVdOvWjY4dO9KxY0dKS0u57rrreO6556hfvz6vvvoqf/vb32jXrh0vvvgi\nw4cPj/n6EyZMOFCV0aZNG3r37s3rr7/OsGHDgNB22GeccQZ33HEHw4cPp0uXLixfvvxAXfS2bdu4\n+uqradu2LT179qR9+/b86le/AuDuu++md+/eDBo0iFatWjF06FCWLFmS4pwyBl5/PdspKD4xjYct\n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\nG8sUQyi3yAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ge_csv = urllib2.urlopen(url)\n", "import pandas\n", "ge = pandas.read_csv(ge_csv, index_col=0, parse_dates=True)\n", "ge.plot(y='Adj Close')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }