Python大数据分析1:数据的建立

今天我们开始学习Python的数据处理,主要结合非常常见的Pandas工具包来完成。我们主要通过案例的方式来不断练习,讲讲如何利用Python进行数据的各种处理,包括数据的读写、表达、计算、可视化等等内容。

这里我假设大家会基本使用Python,即使比较复杂的程序逻辑还不能掌握也没关系,只需了解Python如何编程即可,比如知道怎么打开一个你熟悉的编辑器编写并运行Python程序

比如可以运行这个程序:

print(‘Hello World!’)

能看到一个熟悉的输出那就可以了!

当然,如果有时间和条件,建议大家对Python不妨简单了解一下。

在进行正式的数据处理之前,我们先进行下必要的准备工作。这里包括几个步骤:

第一,你需要先导入Pandas工具包到你的项目中,比如在Pycharm中选择文件菜单中的设置,在当前项目的项目解释器中,点击右边的那个加号按钮,即可打开添加工具包的窗体。这时一定要保证网络是畅通的,因为接下来就需要在线查询和下载安装工具包。

直接输入pandas,就可以查询到,并点击左下角的“安装包”按钮,等待一会,就可以看到安装完毕的提示信息。

第二,你需要在代码中填下一些基本的代码,这些代码以后都无需更改,每次都写上就行了。

# coding:utf-8

import pandas as pd

from pandas import DataFrame

这个语句看起来很多,但是其实正如我们接下来介绍的各种方法,都是一条一条的语句,数据处理的过程就是按序一条一条的执行,逻辑并不复杂。

那么我们来逐条看看什么意思。

第一条是个编码申请,如果你的程序中有中文,你应该加上去,否则默认会无法识别中文字符而会运行报错。我们这里有汉字学生名称,因此需要使用。这个语句通常不用改,直接复制粘贴上去即可。

第二行表示我们要导入pandas,虽然我们已经导入了这个工具包,但是由于这个包并不属于Python本来自带的内容,因此需要额外的导入声明才能使用。其实对于任何外来的工具包,在Python都是这样两步处理,先设置中安装,再代码中声明导入。

那个as我们先不看,马上就可以知道具体用途。

第三行表示我们要导入pandas中的哪些类,所谓类,可以看成是一个个功能模块,每个类功能各不一样,一般可以根据所需导入必要的类。

这时你不妨运行下,看看有无错误,如果没有,恭喜你,可以开始了!

我们想进行数据处理,我们以一个学生的例子完成很多次课程的讲解,这个学生数据是这样的:

IDnamegenderageheight
000001黎明161.88
000002赵怡春201.78
000003张富平181.81
000004白丽181.86
000005牛玉德171.74
000006姚华181.75
000007李南161.76

其中有5个字段,所谓字段是指列,分别是学号、姓名、性别、年龄和身高。有7条记录,所谓记录是指行,每行代表一个学生。

我们要做的第一件事情就是要把这个数据表达出来,只有这样,才能进行后续的任何处理。

这是个二维的网格,在Pandas中,可以通过DataFrame(数据框架)来表示。我们来定义下:

# coding:utf-8
import pandas as pd
from pandas import DataFrame

data = {'ID': ['000001', '000002', '000003', '000004', '000005', '000006', '000007'],
        'name': ['黎明', '赵怡春', '张富平', '白丽', '牛玉德', '姚华', '李南'],
        'gender': [True, False, True, False, True, False, True],
        'age': [16, 20, 18, 18, 17, 18, 16],
        'height': [1.88, 1.78, 1.81, 1.86, 1.74, 1.75, 1.76]
        }
frame = pd.DataFrame(data)
print(frame)

这里增加了三行代码,其中第一行最长。不过细心的同学应该能看出来,它的结构其实很清楚,首先我看等于号右边,是个花括号括起来的整体,里面有5个组成部分,分别通过逗号来分隔,每个组成部分都是一个通过冒号分隔的两部分组成。

我想我在讲解这个的时候,大家已经看明白了,是的,这里的5个组成部分就是5个字段。每个冒号前的名称就是字段的名称,请注意,在Python中这些名称都是字符,因此需要通过单引号或者双引号括起来。每个冒号后都是一个方括号,里面有几个逗号分隔的字符,就有一个记录对应的字段值。这里我们故意使用了不同的数据类型,ID和姓名都是字符,性别采用了布尔型,比如真表示男生,假表示女生,一般对于这种二值表示,布尔型最为方便,年龄是整数型,身高是小数型。看的出来,我们几乎使用了各种常见数据类型。

建议大家没有经验的话,一定要自己书写这个代码,你既能了解编辑器是如何帮助你完成代码功能,也能熟悉编写代码的过程。虽然简单,但是一次能全部写对也并不容易。

全部定义好的这个就是一个称之为字典的东西,于是我们把它保存到一个叫data的变量中。由此可以看的出来,变量名称不加引号,字符要加引号,这就区别开了。

接下来就以通过pandas包中的DataFrame(数据框架)类来创建一个Frame框架。大家能看到,这里的pd就是刚才我们前面导入pandas时as后面的名称,可以理解为as后面表示给这个工具包起个别名,所以你能看到后面的代码中就直接使用pd来表示pandas,否则你就必须写出全部的名称,就是pandas。

在这里,有些常见的写法还是可以再次说明下。

第一,包中的各个类都是通过这个句号点来表示,你可以大胆的输入观察下,pandas中还有很多很多其他的类。

第二,类后的这个括号可以理解为参数,即表示根据什么数据来生成DataFrame。其实,我们完全可以直接把刚才那个字典放进来,也可以!

第三,这次还是像刚才一样,把创建的DataFrame保存在一个变量中,后续就可以根据frame变量来获取它所存储的数据。

为了测试,我们可以最简单的输出下这个DataFrame看看是不是一个二维表格的样子。

这个显示的结果和我们一开始准备好的数据非常像,也请大家一定要检查下。有几个值得注意的问题:

第一,可能大家会发现有些错误,常见的错误就是在刚才输入那个字典时,这里或者那里遗漏些数据。比如你把这个18遗漏的话,系统就会提示你一个错误,意思是数组必须是同一个长度。这个很好理解!毕竟是一个二维表格嘛。

第二,你可能还会发现这个DataFrame会自动在每行记录前增加一个序号,这个被称为索引号(Index),默认就是从0开始的整数。不过,你也可以自己来改变这个定义,比如,我们在DataFrame变量创建的时候,再增加一个参数,给这个index参数强行设定为6到0,那么结果就会改变。

frame = pd.DataFrame(data, index=[6, 5, 4, 3, 2, 1, 0])

好了,这次就说这么多。

发表评论

邮箱地址不会被公开。 必填项已用*标注