在我来看,没有必要为了数据分析而去精通Python。我鼓励你使用IPython shell和Jupyter试验示例代码,并学习不同类型、函数和方法的文档。虽然我已尽力让本书内容循序渐进,但读者偶尔仍会碰到没有之前介绍过的内容。

本书大部分内容关注的是基于表格的分析和处理大规模数据集的数据准备工具。为了使用这些工具,必须首先将混乱的数据规整为整洁的表格(或结构化)形式。幸好,Python是一个理想的语言,可以快速整理数据。Python使用得越熟练,越容易准备新数据集以进行分析。

最好在IPython和Jupyter中亲自尝试本书中使用的工具。当你学会了如何启动Ipython和Jupyter,我建议你跟随示例代码进行练习。与任何键盘驱动的操作环境一样,记住常见的命令也是学习曲线的一部分。

笔记:本章没有介绍Python的某些概念,如类和面向对象编程,你可能会发现它们在Python数据分析中很有用。 为了加强Python知识,我建议你学习官方Python教程,https://docs.python.org/3/,或是通用的Python教程书籍,比如:

  • Python Cookbook,第3版,David Beazley和Brian K. Jones著(O’Reilly)
  • 流畅的Python,Luciano Ramalho著 (O’Reilly)
  • 高效的Python,Brett Slatkin著 (Pearson)

2.1 Python解释器

Python是解释性语言。Python解释器同一时间只能运行一个程序的一条语句。标准的交互Python解释器可以在命令行中通过键入python命令打开:

$ python
Python 3.6.0 | packaged by conda-forge | (default, Jan 13 2017, 23:17:12)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-15)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 5
>>> print(a)
5

>>>提示输入代码。要退出Python解释器返回终端,可以输入exit()或按Ctrl-D。

运行Python程序只需调用Python的同时,使用一个.py文件作为它的第一个参数。假设创建了一个hello_world.py文件,它的内容是:

print('Hello world')

你可以用下面的命令运行它(hello_world.py文件必须位于终端的工作目录):

$ python hello_world.py
Hello world

一些Python程序员总是这样执行Python代码的,从事数据分析和科学计算的人却会使用IPython,一个强化的Python解释器,或Jupyter notebooks,一个网页代码笔记本,它原先是IPython的一个子项目。在本章中,我介绍了如何使用IPython和Jupyter,在附录A中有更深入的介绍。当你使用%run命令,IPython会同样执行指定文件中的代码,结束之后,还可以与结果交互:

$ ipython
Python 3.6.0 | packaged by conda-forge | (default, Jan 13 2017, 23:17:12)
Type "copyright", "credits" or "license" for more information. IPython 5.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details. In [1]: %run hello_world.py
Hello world In [2]:

IPython默认采用序号的格式In [2]:,与标准的>>>提示符不同。

2.2 IPython基础

在本节中,我们会教你打开运行IPython shell和jupyter notebook,并介绍一些基本概念。

运行IPython Shell

你可以用ipython在命令行打开IPython Shell,就像打开普通的Python解释器:

$ ipython
Python 3.6.0 | packaged by conda-forge | (default, Jan 13 2017, 23:17:12)
Type "copyright", "credits" or "license" for more information. IPython 5.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details. In [1]: a = 5
In [2]: a
Out[2]: 5

你可以通过输入代码并按Return(或Enter),运行任意Python语句。当你只输入一个变量,它会显示代表的对象:

In [5]: import numpy as np

In [6]: data = {i : np.random.randn() for i in range(7)}

In [7]: data
Out[7]:
{0: -0.20470765948471295,
1: 0.47894333805754824,
2: -0.5194387150567381,
3: -0.55573030434749,
4: 1.9657805725027142,
5: 1.3934058329729904,
6: 0.09290787674371767}

前两行是Python代码语句;第二条语句创建一个名为data的变量,它引用一个新创建的Python字典。最后一行打印data的值。

许多Python对象被格式化为更易读的形式,或称作pretty-printed,它与普通的print不同。如果在标准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}

IPython还支持执行任意代码块(通过一个华丽的复制-粘贴方法)和整段Python脚本的功能。你也可以使用Jupyter notebook运行大代码块,接下来就会看到。

最新文章

  1. cxf和spring结合,发布restFull风格的服务
  2. Error : Must specify a primary resource (JAR or python or R file)
  3. [转]Android 超高仿微信图片选择器 图片该这么加载
  4. ECSHOP购物流程收货人信息详细地址显示省市区
  5. 如何保存ISE综合后的RTL schematic为pdf
  6. 声明了包的类Java命令找不到或无法加载主类
  7. spring常规任务(轻便易)
  8. python下载时报错 Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time
  9. JS学习二(循环)
  10. java反射获取字段的属性值,以及为字段赋值等方法
  11. LeetCode - 二叉树的最大深度
  12. js较深入的知识点
  13. springboot项目打包运行
  14. Python基础之语句1
  15. 坦克大战学习笔记-TankWar
  16. Java CAS同步机制 原理详解(为什么并发环境下的COUNT自增操作不安全): Atomic原子类底层用的不是传统意义的锁机制,而是无锁化的CAS机制,通过CAS机制保证多线程修改一个数值的安全性。
  17. HTML 介绍及标签
  18. 模拟祭-比萨-题解O(n)
  19. ASP.NET MVC 常用路由总结
  20. Spring-session redis 子域名 session

热门文章

  1. Arduino 语法与函数
  2. 正则表达式查找“不包含XXX字符串”
  3. Java之格林威治时间格式转换成北京时间格式
  4. httpd之ab压力测试
  5. 我要告诉你:java接口中可以定义private私有方法
  6. 多测师讲解自动化--rf断言(下)--_高级讲师肖sir
  7. springMvc配置拦截器无效
  8. day50 Pyhton 前端01
  9. 最近集训的图论(思路+实现)题目汇总(内容包含tarjan、分层图、拓扑、差分、奇怪的最短路):
  10. 多路查找树(2-3 树、2-3-4 树、B 树、B+ 树)