1.2快速回顾面向对象技术的基础知识3
1.3Python5
1.4Python库7
1.4.1Python标准库7
1.4.2数据科学库8
1.5试用IPython和JupyterNotebook9
1.5.1使用IPython交互模式作为计算器10
1.5.2使用IPython解释器执行Python程序11
1.5.3在JupyterNotebook中编写和执行代码12
1.6云和物联网16
1.6.1云16
1.6.2物联网17
1.7大数据有多大18
1.7.1大数据分析22
1.7.2数据科学和大数据正在带来改变:用例23
1.8案例研究:大数据移动应用程序24
1.9数据科学入门:人工智能——计算机科学与数据科学的交叉学科26
1.10小结28
第2章Python程序设计概述29
2.1简介29
2.2变量和赋值语句30
2.3算术运算31
2.4print函数、单引号和双引号34
2.5三引号字符串36
2.6从用户处获取输入37
2.7决策:if语句和比较运算符39
2.8对象和动态类型43
2.9数据科学入门:基础的描述性统计44
2.10小结46
第3章控制语句48
3.1简介48
3.2控制语句概述49
3.3if语句49
3.4if...else和if...elif...else语句50
3.5while语句53
3.6for语句54
3.6.1可迭代对象、列表和迭代器55
3.6.2内置函数range55
3.7增强赋值56
3.8序列控制迭代和格式化字符串56
3.9边界值控制的迭代57
3.10内置函数range:深入讨论59
3.11使用Decimal类型处理货币金额59
3.12break和continue语句63
3.13布尔运算符and、or和not63
3.14数据科学入门:集中趋势度量—均值、中值和众数66
3.15小结67
第4章函数69
4.1简介69
4.2函数定义70
4.3多参数函数72
4.4随机数生成74
4.5案例研究:一个运气游戏76
4.6Python标准库79
4.7math模块中的函数80
4.8在IPython中使用制表符自动补全81
4.9默认参数值82
4.10关键字参数83
4.11不定长参数列表83
4.12方法:属于对象的函数84
4.13作用域规则85
4.14import:深入讨论87
4.15向函数传递参数:深入讨论88
4.16递归91
4.17函数式编程93
4.18数据科学入门:离中趋势度量95
4.19小结96
第5章序列:列表和元组97
5.1简介97
5.2列表98
5.3元组102
5.4序列解包104
5.5序列切片106
5.7将列表传递给函数109
5.8列表排序110
5.9序列搜索111
5.10列表的其他方法113
5.11使用列表模拟堆栈115
5.12列表推导式116
5.13生成器表达式118
5.14过滤、映射和归约118
5.15其他的序列处理函数120
5.16二维列表122
5.17数据科学入门:模拟和静态可视化124
5.17.1掷600、60,000、6,000,000次骰子的图例124
5.17.2实现掷骰子中不同点数出现次数和百分比的可视化126
5.18小结132
第二部分Python数据结构、字符串和文件
第6章字典和集合136
6.1简介136
6.2字典137
6.2.1创建字典137
6.2.2遍历字典138
6.2.3基本的字典操作138
6.2.4字典的keys和values方法140
6.2.5字典的比较141
6.2.6示例:学生成绩字典142
6.2.7示例:单词计数143
6.2.8字典的update方法144
6.2.9字典推导式145
6.3集合146
6.3.1集合的比较147
6.3.2集合的数学运算148
6.3.3集合的可变运算符和方法150
6.3.4集合推导式151
6.4数据科学入门:动态可视化151
6.4.1动态可视化的工作原理152
6.4.2实现动态可视化154
6.5小结156
第7章使用NumPy进行面向数组的编程158
7.1简介158
7.2从现有数据创建数组159
7.3数组属性160
7.4用特定值填充数组162
7.5从范围创建数组162
7.6列表与数组的性能比较:引入%timeit164
7.7数组运算符165
7.8NumPy计算方法167
7.9通用函数168
7.10索引和切片170
7.11视图:浅拷贝171
7.12视图:深拷贝173
7.13重塑和转置174
7.14数据科学入门:pandasSeries和DataFrame176
7.14.1Series177
7.14.2DataFrame181
7.15小结188
第8章字符串:深入讨论190
8.1简介190
8.2格式化字符串191
8.2.1表示类型191
8.2.2字段宽度和对齐方式193
8.2.3数字格式化193
8.2.4字符串的format方法194
8.3拼接和重复字符串195
8.4去除字符串中的空白字符196
8.5字符大小写转换196
8.6字符串的比较运算符197
8.7查找子字符串197
8.8替换子字符串199
8.9字符串拆分和连接199
8.10字符串测试方法201
8.11原始字符串202
8.12正则表达式介绍202
8.12.1re模块与fullmatch函数203
8.12.2替换子字符串和拆分字符串207
8.12.3其他搜索功能、访问匹配207
8.13数据科学入门:pandas、正则表达式和数据治理210
8.14小结214
第9章文件和异常215
9.1简介215
9.2文件216
9.3文本文件处理217
9.3.1向文本文件中写入数据:with语句的介绍217
9.3.2从文本文件中读取数据218
9.4更新文本文件220
9.5使用JSON进行序列化221
9.7关于文件的附加说明224
9.8处理异常225
9.8.1被零除和无效输入226
9.8.2try语句226
9.8.3在一条except子句中捕获多个异常229
9.8.4一个函数或方法引发了什么异常229
9.8.5try子句的语句序列中应该书写什么代码229
9.9finally子句229
9.10显式地引发一个异常231
9.11(选学)堆栈展开和回溯232
9.12数据科学入门:使用CSV文件234
9.12.1Python标准库模块csv234
9.12.2将CSV文件数据读入pandasDataFrame中236
9.12.3读取泰坦尼克号灾难数据集237
9.12.4用泰坦尼克号灾难数据集做简单的数据分析238
9.12.5乘客年龄直方图239
9.13小结240
第三部分Python高级主题
第10章面向对象编程242
10.1简介242
10.2自定义Account类244
10.2.1试用Account类245
10.2.2Account类的定义246
10.2.3组合:对象引用作为类的成员248
10.3属性访问控制248
10.4用于数据访问的property249
10.4.1试用Time类249
10.4.2Time类的定义251
10.4.3Time类定义的设计说明254
10.5模拟“私有”属性255
10.6案例研究:洗牌和分牌模拟257
10.6.1试用Card类和DeckOfCards类257
10.6.2Card类:引入类属性258
10.6.3DeckOfCards类260
10.6.4利用Matplotlib显示扑克牌图像262
10.7继承:基类和子类265
10.8构建继承层次结构:引入多态性267
10.8.1基类CommissionEmployee267
10.8.2子类SalariedCommission-Employee270
10.8.3以多态方式处理Commission-Employee和SalariedComm-issionEmployee273
10.8.4关于基于对象和面向对象编程的说明274
10.9鸭子类型和多态性274
10.10运算符重载276
10.10.1试用Complex类277
10.10.2Complex类的定义278
10.11异常类层次结构和自定义异常279
10.12具名元组280
10.13Python3.7的新数据类简介281
10.13.1创建Card数据类282
10.13.2使用Card数据类284
10.13.3数据类相对于具名元组的优势286
10.13.4数据类相对于传统类的优势286
10.14使用文档字符串和doctest进行单元测试286
10.15命名空间和作用域290
10.17小结300
第四部分人工智能、云和大数据案例研究
第11章自然语言处理304
11.1简介304
11.2TextBlob305
11.2.1创建一个TextBlob对象307
11.2.2将文本标记为句子和单词307
11.2.3词性标注308
11.2.4提取名词短语309
11.2.5使用TextBlob的默认情感分析器进行情感分析309
11.2.6使用NaiveBayesAnalyzer进行情感分析310
11.2.7语言检测与翻译311
11.2.8变形:复数化和单数化312
11.2.9拼写检查和拼写校正313
11.2.10规范化:词干提取和词形还原314
11.2.11词频314
11.2.12从WordNet中获取单词定义、同义词和反义词315
11.2.13删除停用词317
11.2.14n元318
11.3使用柱状图和词云可视化词频319
11.3.1使用pandas可视化词频319
11.3.2使用词云可视化词频321
11.4使用Textatistic库进行可读性评估324
11.5使用spaCy命名实体识别326
11.6使用spaCy进行相似性检测327
11.7其他NLP库和工具328
11.8机器学习和深度学习自然语言应用328
11.9自然语言数据集329
11.10小结329
第12章Twitter数据挖掘331
12.1简介331
12.2TwitterAPI概况333
12.3创建一个Twitter账户334
12.4获取Twitter凭据,创建应用程序334
12.5什么是推文336
12.6Tweepy339
12.7通过Tweepy进行Twitter身份验证340
12.9.3获取一个用户的推文345
12.10搜索的推文346
12.12推文分析前的清理或预处理352
12.13Twitter流API353
12.13.1创建StreamListener的子类353
12.13.2启动流处理356
12.14推文情感分析357
12.15地理编码和映射361
12.15.1获取和映射推文362
12.15.2tweetutilities.py中的实用函数366
12.15.3LocationListener类367
12.16存储推文的方法368
12.18小结369
第13章IBMWatson和认知计算370
13.1简介370
13.2IBM云账户和云控制台372
13.3Watson服务372
13.4额外的服务和工具375
13.5Watson开发者云PythonSDK377
13.6案例研究:旅行者翻译伴侣APP377
13.6.1准备工作378
13.6.2运行APP379
13.6.3SimpleLanguageTranslator.py脚本代码分析380
13.7Watson资源390
13.8小结391
第14章机器学习:分类、回归和聚类392
14.1简介392
14.1.1scikit-learn393
14.1.2机器学习的类别394
14.1.3scikit-learn中内置的数据集396
14.1.4典型的数据科学研究的步骤396
14.2案例研究:用k近邻算法和Digits数据集进行分类(第1部分)397
14.2.1k近邻算法398
14.2.2加载数据集399
14.2.3可视化数据402
14.2.4拆分数据以进行训练和测试404
14.2.5创建模型405
14.2.6训练模型405
14.2.7预测数字类别406
14.3案例研究:利用k近邻算法和Digits数据集进行分类(第2部分)407
14.3.1模型准确性指标407
14.3.2k折交叉验证410
14.3.3运行多个模型以找到模型411
14.3.4超参数调整413
14.5案例研究:基于加利福尼亚房价数据集的多元线性回归418
14.5.1加载数据集418
14.5.2使用pandas探索数据420
14.5.3可视化特征422
14.5.4拆分数据以进行训练和测试426
14.5.5训练模型426
14.5.6测试模型427
14.5.7可视化预测房价和期望房价427
14.5.8回归模型指标428
14.5.9选择模型429
14.6案例研究:无监督学习(第1部分)—降维430
14.7案例研究:无监督学习(第2部分)—k均值聚类433
14.7.1加载Iris数据集435
14.7.2探索Iris数据集:使用pandas进行描述性统计436
14.7.3使用Seaborn的pairplot可视化数据集438
14.7.4使用KMeans估计器440
14.7.5主成分分析降维442
14.7.6选择聚类估计器444
14.8小结445
第15章深度学习447
15.1简介447
15.1.1深度学习应用449
15.1.2深度学习演示450
15.1.3Keras资源450
15.2Keras内置数据集450
15.3自定义Anaconda环境451
15.4神经网络452
15.5张量454
15.6用于视觉的卷积神经网络:使用MNIST数据集进行多分类455
15.6.1加载MNIST数据集457
15.6.2数据探索457
15.6.3数据准备459
15.6.4创建神经网络模型461
15.6.5训练和评价模型468
15.6.6保存和加载模型472
15.7用TensorBoard可视化神经网络的训练过程473
15.8ConvnetJS:基于浏览器的深度学习训练和可视化476
15.9针对序列的递归神经网络:使用IMDb数据集进行情感分析477
15.9.1加载IMDb影评数据集478
15.9.2数据探索478
15.9.3数据准备480
15.9.4创建神经网络481
15.9.5训练和评价模型483
15.10调整深度学习模型484
15.11在ImageNet上预训练的CNN模型485
15.12小结486
第16章大数据:Hadoop、Spark、NoSQL和IoT488
16.1简介488
16.2关系数据库和结构化查询语言492
16.2.1books数据库493
16.2.2SELECT查询497
16.2.3WHERE子句497
16.2.4ORDERBY子句498
16.2.5从多个表中合并数据:INNERJOIN499
16.2.6INSERTINTO语句500
16.2.7UPDATE语句501
16.2.8DELETEFROM语句502
16.3NoSQL和NewSQL大数据数据库简述502
16.3.1NoSQL键-值数据库503
16.3.2NoSQL文档数据库503
16.3.3NoSQL列式数据库504
16.3.4NoSQL图数据库504
16.3.5NewSQL数据库505
16.4案例研究:MongoDBJSON文档数据库506
16.4.1创建MongoDBAtlas集群506
16.4.2将推文存入MongoDB中507
16.5Hadoop515
16.5.1概述516
16.5.2通过MapReduce汇总Romeo-AndJuliet.txt中的单词长度518
16.5.3在MicrosoftAzureHDInsight中创建ApacheHadoop集群518
16.5.4Hadoop流520
16.5.5实现映射器520
16.5.6实现归约器521
16.5.7准备运行MapReduce示例522
16.5.8运行MapReduce作业523
16.6Spark525
16.6.1概述525
16.6.2Docker和JupyterDocker堆栈526
16.6.3使用Spark的单词计数529
16.6.4MicrosoftAzure上的Spark单词计数532
16.7Spark流:使用pyspark-notebookDocker堆栈计算Twitter主题标签535