1、Python基本数据 Basic data processing of Python 统计 Department of Computer Science and Technology Department of University Basic Computer Teaching Nanjing University 数据分析 4 数据描述 3 数据整理 数据收集 1 2 简单数据处理 过程 2 Nanjing University 便捷数据获取 用 Python玩转数据 Nanjing University 用 Python获取数据 本地数据如何获取 ? 文件的打开,读写和关闭 文件打开 读
2、文件 写文件 文件关闭 4 Nanjing University 用 Python获取数据 网络数据如何获取 ? 抓取网页,解析网页内容 urllib urllib2 httplib httplib2 5 Nanjing University yahoo财经 数据 http:/ 6 Nanjing University 利用 urllib库获取 yahoo财经 数据 7 # Filename: dji.py import urllib import re dStr = urllib.urlopen(http:/ m = re.findall( (.*?) (.*?).*?(.*?).*?, d
3、Str) if m: print m print n print len(m) else: print not match File Nanjing University 数据形式 包含多个字符串( dji) AXP, American Express Company, 86.40 BA, The Boeing Company, 122.24 CAT, Caterpillar Inc., 99.44 CSCO, Cisco Systems, Inc., 23.78 CVX, Chevron Corporation, 115.91 8 Nanjing University 便捷网络数据 是否能够
4、简单方便并且快速的方式获得雅虎财经上各上市公司股票的历史数据? # Filename: quotes.py from matplotlib.finance import quotes_historical_yahoo from datetime import date import pandas as pd today = date.today() start = (today.year-1, today.month, today.day) quotes = quotes_historical_yahoo(AXP, start, today) df = pd.DataFrame(quotes)
5、 print df File 9 Nanjing University 便捷网络数据 quotes的 内容 日期 收盘 价 开盘价 最高 价 最低 价 成交量 10 Nanjing University 便捷网络数据 自然语言工具包 NLTK 古腾 堡语料库 布朗语料库 路透社语料库 网络和聊天文本 from nltk.corpus import gutenberg import nltk print gutenberg.fileids() uausten-emma.txt, uausten-persuasion.txt, uausten-sense.txt, ubible-kjv.txt,
6、ublake-poems.txt, ubryant-stories.txt, uburgess-busterbrown.txt, ucarroll-alice.txt, uchesterton-ball.txt, uchesterton-brown.txt, uchesterton-thursday.txt, uedgeworth-parents.txt, umelville-moby_dick.txt, umilton-paradise.txt, ushakespeare-caesar.txt, ushakespeare-hamlet.txt, ushakespeare-macbeth.tx
7、t, uwhitman-leaves.txt texts = gutenberg.words(shakespeare-hamlet.txt) u, uThe, uTragedie, uof, uHamlet, uby, . Source brown 11 Nanjing University 数据准备 用 Python玩转数据 Nanjing University 数据形式 30支成分股( dji)股票数据的逻辑结构 公司代码 公司名 最近一次成交价 美国运通公司( quotes)股票详细数据的逻辑结构 日期 开盘价 收盘价 最高价 最低价 成交量 13 Nanjing University
8、数据整理 quotes数据 加属性名 # Filename: quotesproc.py from matplotlib.finance import quotes_historical_yahoo from datetime import date import pandas as pd today = date.today() start = (today.year-1, today.month, today.day) quotes = quotes_historical_yahoo(AXP, start, today) fields = date,open,close,high,low,
9、volume quotesdf = pd.DataFrame(quotes, columns = fields) print quotesdf File 14 Nanjing University 数据 整理 dji数据:加属性名 code name lasttrade AXP BA CAT XOM quotes数据:加属性名 date open close high low volume 735190.0 735191.0 735192.0 735551.0 15 Nanjing University 数据整理 用 1,2,作为 索引 quotesdf = pd.DataFrame(quot
10、es, columns = fields) quotesdf = pd.DataFrame(quotes, index = range(1,len(quotes)+1),columns = fields) 16 Nanjing University 数据 整理 如果可以直接用 date作为索引 , quotes的时间能否转换成常规 形式(如下图中的效果)? from datetime import date firstday = date.fromordinal(735190) lastday = date.fromordinal(735551) firstday datetime.date(
11、2013, 11, 18) lastday datetime.date(2014, 11, 14) Source 17 Nanjing University 时间序列 # Filename: quotesproc.py from matplotlib.finance import quotes_historical_yahoo from datetime import date from datetime import datetime import pandas as pd today = date.today() start = (today.year-1, today.month, to
12、day.day) quotes = quotes_historical_yahoo(AXP, start, today) fields = date,open,close,high,low,volume list1 = for i in range(0,len(quotes): x = date.fromordinal(int(quotesi0) y = datetime.strftime(x,%Y-%m-%d) list1.append(y) quotesdf = pd.DataFrame(quotes, index = list1, columns = fields) quotesdf =
13、 quotesdf.drop(date, axis = 1) print quotesdf File 转换成常规时间 转换成固定格式 删除原 date列 18 Nanjing University 创建时间序列 import pandas as pd dates = pd.date_range(20141001, periods=7) dates 2014-10-01, ., 2014-10-07 Length: 7, Freq: D, Timezone: None import numpy as np dates = pd.DataFrame(np.random.randn(7,3),ind
14、ex=dates,columns = list(ABC) dates A B C 2014-10-01 1.302600 -1.214708 1.411628 2014-10-02 -0.512343 2.277474 0.403811 2014-10-03 -0.788498 -0.217161 0.173284 2014-10-04 1.042167 -0.453329 -2.107163 2014-10-05 -1.628075 1.663377 0.943582 2014-10-06 -0.091034 0.335884 2.455431 2014-10-07 -0.679055 -0
15、.865973 0.246970 7 rows x 3 columns Source 19 Nanjing University 数据显示 用 Python玩转数据 Nanjing University 数据 显示 djidf quotesdf 21 Nanjing University 数据显示 djidf.index Int64Index(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, dtype=int64) djid
16、f.columns Index(ucode, uname, ulasttrade, dtype=object) dijdf.values array(AXP, American Express Company, 90.67, BA, The Boeing Company, 128.86, XOM, Exxon Mobil Corporation, 95.09, dtype=object) djidf.describe quotesdf.index Index(u2013-11-18, u2013-11-19, u2013-11-20, u2013-11-21, u2013-11-22, u20
17、13-11-25, u2013-11-26, u2013-11-27, -04-08, u2014-04-09, u2014-04-10, u2014-04-11, ., dtype=object) Source 索引的格式 23 Nanjing University 数据 显示 djidf.head(5) code name lasttrade 0 AXP American Express Company 90.67 1 BA The Boeing Company 128.86 2 CAT Caterpillar Inc. 101.34 3 CSCO Cisco Systems, Inc.
18、26.32 4 CVX Chevron Corporation 116.32 5 rows x 3 columns djidf.tail(5) code name lasttrade 25 UTX United Technologies Corporation 107.45 26 V Visa Inc. 248.84 27 VZ Verizon Communications Inc. 51.50 28 WMT Wal-Mart Stores Inc. 82.96 29 XOM Exxon Mobil Corporation 95.09 5 rows x 3 columns Source df:
19、5 df25: 显示方式 : 显示 行 专用方式 切片 查看 道琼斯 工业股中前 5只和后5只的股票基本信息? 24 Nanjing University 数据选择 用 Python玩转数据 Nanjing University 数据选择 选择方式 : 选择行 选择列 选择区域 筛选(条件选择) 26 Nanjing University 数据选择 quotesdfu2013-12-02:u2013-12-06 open close high low volume 2013-12-02 85.092126 84.37 85.596624 84.241402 3620800 2013-12-03
20、 83.976989 83.70 84.412256 83.294410 3546100 2013-12-04 83.303123 83.59 84.322031 82.857969 3579700 2013-12-05 83.362906 83.63 84.075156 83.244198 3677800 2013-12-06 84.663680 85.00 85.158268 84.426277 2666600 5 rows x 5 columns Source 选择 方式 : 选择行 切片 索引 美国运通公司2013年 12月 2日至 2013年 12月 6日间的股票交易信息? 27 N
21、anjing University 数据选择 djidfcode 0 AXP 1 BA 2 CAT 29 XOM Name: code, dtype: object djidf.code 0 AXP 1 BA 2 CAT 29 XOM Name: code, dtype: object Source 选择 方式 : 选择列 列名 不支持 djidfcode, lasttrade djidfcode:lasttrade 道琼斯工业股公司代码? 28 Nanjing University 数据选择 选择 方式 : 行、列 标签 label( loc) djidf.loc1:5, code name
22、 lasttrade 1 BA The Boeing Company 128.86 2 CAT Caterpillar Inc. 101.34 3 CSCO Cisco Systems, Inc. 26.32 4 CVX Chevron Corporation 116.32 5 DD E. I. du Pont de Nemours and Company 70.80 5 rows x 3 columns djidf.loc:,code,lasttrade code lasttrade 0 AXP 90.67 1 BA 128.86 2 CAT 101.34 29 XOM 95.09 30 r
23、ows x 2 columns Source 道琼斯工业股中标号是 1至 5的股票信息以及所有股票的代码和最近一次交易价? 29 Nanjing University 数据选择 选择 方式 : 行和列的区域 标签 label( loc) 单个值 at djidf.loc1:5,code,lasttrade code lasttrade 1 BA 128.86 2 CAT 101.34 3 CSCO 26.32 4 CVX 116.32 5 DD 70.80 5 rows x 2 columns djidf.loc1,lasttrade 128.86 djidf.at1,lasttrade 128.86 Source 道琼斯工业股中标号是 1至 5的股票代码和最近一次交易价 ?标号是 1的股票的最近一次交易价? 30