第1章 准备工作(Preliminaries)
1.1重要的Python库
1.1.1NumPy
NumPy(Numerical Python的简称)是Python科学计算的基础包。Numpy不仅为Python提供快速的数组处理能力,而且NumPy在数据分析⽅⾯还有另外⼀个主要作⽤,即作为在算法和库之间传递数据的容器。对于数值型数据,NumPy数组在存储和处理数据时要⽐内置的Python数据结构⾼效得多。
1.1.2pandas
pandas提供了快速便捷处理结构化数据的⼤量数据结构和函数。⾃从2010年出现以来,它使Python成为强⼤⽽⾼效的数据分析环境。本书⽤得最多的pandas对象是DataFrame,它是
⼀个⾯向列(column-oriented)的⼆维表结构,另⼀个是Series,⼀个⼀维的标签化数组对象。
pandas兼具NumPy⾼性能的数组计算功能以及电⼦表格和关系型数据库(如SQL)灵活的数据处理功能。它提供了复杂精细的索引功能,以便更为便捷地完成重塑、切⽚和切块、聚合以及选取数据⼦集等操作。
1.1.3matplotlib
matplotlib是最流⾏的⽤于绘制图表和其它⼆维数据可视化的Python库。它最初由John D.Hunter(JDH)创建,⽬前由⼀个庞⼤的开发⼈员团队维护。它⾮常适合创建出版物上⽤的图表。虽然还有其它的Python可视化库,matplotlib却是使⽤最⼴泛的,并且它和其它⽣态⼯具配合也⾮常完美
1.2引入惯例
Python社区已经⼴泛采取了⼀些常⽤模块的命名惯例:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import statsmodels as sm
因此,当你看到np.arange时,就应该想到它引⽤的是NumPy中的arange函数
第2章 Python语法基础,IPython和Jupyter Notebooks
2.1 Python基础
加载Numpy库,生成随机数(IPython可读性较强)
import numpy as np
data = {
i : np.random.randn() for i in range(7)}
data
#输出
{
0: -0.05757878139706212,
1: -0.7783998166155556,
2: -0.8518952223355938,
3: -0.07822225232974736,
4: -1.317626542766965,
5: 1.3368188882374743,
6: 0.305922679176145}
在标准Python解释器上打印data,可读性较差如下
>>> from numpy.random import randn
>>> data = {
i : randn() for i in range(7)}
>>> print(data)
{
0: -1.5948255432744511, 1: 0.10569006472787983, 2: 1.972367135977295,
3: 0.15455217573074576, 4: -0.24058577449429575, 5: -1.2904897053651216,
6: 0.3308507317325902}
2.1.1 Tab补全
按下Tab,会搜索已输⼊变量(对象、函数等等)的命名空间
an_apple = 27
an_example = 42
an #<Press Tab>
Tab代码补全同样适用于模块中,Tab键也可以补全文件路径
import datetime
datetime. #<Press Tab>
2.1.2 自省
在变量前后使⽤问号?
,可以显示对象的信息:
b = [1,2,3]
b?
#输出结果如下
Type: list
String form: [1, 2, 3]
Length: 3
Docstring:
Built-in mutable sequence.
If no argument is given, the constructor creates a new empty list.
The argument must be an iterable if specified.
也可以作为对象的⾃省。如果对象是⼀个函数或实例⽅法,定义过的⽂档字符串,也会显示出信息。假设我们写了⼀个如下的函数:
def add_numbers(a, b):
"""
Add two numbers together
Returns
-------
the_sum : type of arguments
"""
return a + b
使用 ?
显示 add_numbers()
信息
add_numbers?
#输出结果如下
Signature: add_numbers(a, b)
Docstring:
Add two numbers together
Returns
-------
the_sum : type of arguments
File: d:\jupyter notebook\<ipython-input-94-0e543d60c645>
Type: function
使⽤ ??
会显示函数的源码
add_numbers??
#输出结果如下
Signature: add_numbers(a, b)
Source:
def add_numbers(a, b):
"""
Add two numbers together
Returns
-------
the_sum : type of arguments
"""
return a + b
File: d:\jupyter notebook\<ipython-input-94-0e543d60c645>
Type: function
?
还有⼀个⽤途,就是像Unix或Windows命令⾏⼀样搜索IPython的命名空间。字符与通配符结合可以匹配所有的名字。例如,我们可以获得所有包含load的 NumPy
命名空间:
np.*load*?