Python数据分析的起手式(3)函数、方法和包

本文内容整理自DataCamp课程之 Intro to Python for Data Science.

本系列将包括以下内容:

  • Python 基础
  • Python 列表 list
  • 函数、方法和包 (本文)
  • Numpy 入门

访问 我的github 可下载本文对应的notebook以及练习答案,便于亲手实践。


注意:本文代码基于Python3版本。如果要在python2中执行,需要先导入_future_模块。

#仅在Python2中使用
#from __future__ import division
#from __future__ import print_function

1. 函数 Functions

函数是一段可重复使用的代码,往往是为了解决某个特定的任务。Python中有大量现成的函数可以调用,大大减轻了自己写代码的工作量。可以将函数看成是一个黑盒子,只需喂给它特定的参数,就能生成想要的结果。

Functions

来看上一讲中使用的家庭身高数据,我们使用 max() 函数找出最高的身高。

fam = [1.73, 1.68, 1.71, 1.89]
tallest = max(fam)
print(tallest)

1.89

使用 round() 函数对该身高作近似估计。

round(tallest, 1)

1.9

round(tallest)

2

注意,上面采用了不同的参数个数,输出结果也不一样,这是为什么呢?我们可以使用帮助函数 help() 来查看round函数的说明。

help(round)

Help on built-in function round in module builtins: round(...) round(number[, ndigits]) -> number Round a number to a given precision in decimal digits (default 0 digits). This returns an int when called with one argument, otherwise the same type as the number. ndigits may be negative.

从函数的说明中可以发现,round 函数有两个参数:其一是 number,它是需要做近似的数值,不可缺省;其二是 ndigits,是需要近似的小数点位数,由中括号括起,表示可以省略,默认值是0。这就解释了先前的例子。当然,查看函数还有一个方法,就是在函数名前加问号,比如 ?round

练习3-1:

Python中有许多内建函数,通过下面的练习让我们来使用一下。

# 创建两个变量 var1 和 var2
var1 = [1, 2, 3, 4]
var2 = True

# 打印输出变量 var1 的类型

# 打印输出变量 var1 的长度

# 将变量 var2 转化成整形变量 out2

print(type(out2))

提示:type() 判断变量类型;len() 计算列表长度;int() 强制转换成整形。

下面这个练习是将两组列表合并,并对数据元素进行降序排列。

# 创建连个列表 first 和 second
first = [11.25, 18.0, 20.0]
second = [10.75, 9.50]

# 将first 和 second 合并成新的列表 full

# 对 full 进行降序排列,存入新的变量 full_sorted

# 打印输出列表 full_sorted

提示:排序函数是 sorted(), 参数 reverse 控制升序还是降序。

2. 方法 Methonds

本系列第二讲的最后提到了对象,Python中的一切都可以看成对象,列表是对象,整形、浮点型、布尔型、字符串也都是对象。每一种对象,都有其对应的属性和方法,用句点(.)标记法来访问它们。方法(Methods)可以看做是属于对象的函数。

我们先看一看列表的一些方法。

family = ['me', 1.73, 'sister', 1.68, 'mom', 1.71, 'dad', 1.89]
family.index("mom")

4

.index(obj) 给出了 obj 所对应的索引。

family.count(1.73)

1

.count(obj) 返回对象 obj 在列表中出现的次数。

family.append("brother")
family.append("1.79")
family

['me', 1.73, 'sister', 1.68, 'mom', 1.71, 'dad', 1.89, 'brother', '1.79']

.append(obj) 向列表中添加一个对象 obj。

可以使用 dir(list) 来查看列表对象的所有方法和属性。

我们再来看字符串的一些方法。

sister = 'liz'
sister.capitalize()

'Liz'

.capitalize() 把字符串的第一个字符大写。

sister.replace('z', 'sa')

'lisa'

.replace(str1, str2) 把字符串中的 str1 替换成 str2。

练习3-2:

字符串类型内建方法练习:

# 创建字符串变量 room
room = "poolhouse"

# 对变量room使用 upper() 方法,存入变量 room_up中

# 打印输出 room 和 room_up,,观察upper()方法的作用效果

# 打印输出room中字符'o'的个数

列表类型内建方法练习(1):

# 创建列表 areas
areas = [11.25, 18.0, 20.0, 10.75, 9.50]

# 打印输出元素 20.0 的索引值

# 打印输出元素 14.5 在 areas 中出现的次数

列表类型内建方法练习(2):

# 创建列表 areas
areas = [11.25, 18.0, 20.0, 10.75, 9.50]

# 使用 append 方法在areas中增加 游泳池面积24.5和车库面积 15.45

# 打印输出areas

# 使用 reverse 方法,将 areas 列表原地翻转

# 打印输出 areas

3. 包 Packages

Python中的包(packages)可以看作是一系列相关模块的组合。而模块又是什么呢?它是Python中的一个源码文件(如mod1.py),包含了可执行代码、函数和类。常见的Python包有:用于数值计算的Numpy,用于数据分析的Pandas,用于绘图的Matplotlib,以及用于机器学习的Scikit-learn。

安装包的方法,可以使用 pip 或 conda, 在命令行中输入 pip install package_nameconda install package_name。(前提是具备了pip工具或者conda环境,如果没有,还得事先选择一种来安装。)

在Python中导入包,采用 import package_name 的形式。比如:

import numpy
numpy.array([1,2,3])

array([1, 2, 3])

上面使用的 numpy.array() 是创建一维数组。如果嫌包名称太长,也可以赋予它简化的形式,方法如下:

import numpy as np
np.array([1,2,3])

array([1, 2, 3])

注意了,此时调用包中的函数时,需要将包名带上,以告知Python该函数的来源。如果忽略了包名,将出现如下错误:

array([1,2,3])

--------------------------------------------------------------------------- NameError Traceback (most recent call last) in () ----> 1 array([1,2,3]) NameError: name 'array' is not defined

但是如果采用 from ... import ... 的形式将该函数直接导入时,则可以忽略包名。如下:

from numpy import array
array([1,2,3])

array([1, 2, 3])

然而这种方法,容易让其他代码阅读者傻傻分不清函数的来源。

练习3-3:

计算圆的周长和半径:

# 定义圆的半径r
r = 0.43

# 导入数学包 math 

# 计算圆的周长 C (提示,math.pi给出圆周率)
C = 

# 计算圆的面积 A
A =

# 输出
print("Circumference: " + str(C))
print("Area: " + str(A))

补充:

关于 我的github 中文件下载的方式:

  • 如果下载单个文件,点击所要下载的文件,在新打开的页面中找到右上方的 raw 按钮,右击另存为即可。另外文件名需要删除后缀 .txt,而保留原始格式后缀,如 .ipynb 。

  • 如果打包下载,回到github库的根目录中,点击右上方绿色的 Clone and download 按钮,选择 Download ZIP 即可。

本文使用Jupyter notebook 编写,关于它的说明和安装方法,可以参考我之前的两篇文章。

  • 左手程序员,右手作家:你必须会的Jupyter Notebook

  • 致Python初学者们 - Anaconda入门使用指南

你可能感兴趣的:(Python数据分析的起手式(3)函数、方法和包)