大家好,基于Python的数据科学实践课程又到来了,大家尽情学习吧。本期内容主要由程茜与政委联合推出。
在前面我们读取了火锅的团购数据之后,最先做的不是直接就对数据进行分析,而是要了解数据。俗话说,知己知彼,方能百战百胜,所以了解数据就从数据类型与结构开始吧。
基本数据类型
Python有很多数据类型,这里我们将会简要介绍布尔值,整数,浮点数,复数,字符串与时间类型。
1、整数
整数又称为整型,也就是int类型。在Python中,可以直接对整数进行算数运算。整数与数学中定义的整数概念一致。比如1,-2,45687等等。
数据分析中,经常需要知道变量是什么类型才可以进行相应的运算。在Python中有一个type 函数,可以用来查看基本的数据类型。
语法:type(变量名) 用来查看变量的数据类型
1type(200) #返回值int
2type(-1) #返回值int
3type(pow(2,10)) #返回值int,pow(2,10)是2的10次方
4type(True) #返回值bool
看到这里,大家肯定会问,导入一个数据集后,每个数据集有很多个变量,我不能一个一个查看数据类型吧。这里给大家再讲一个函数,dtypes函数,可以用来查看所有字段的数据类型。继续在coupon这个数据集上使用。
例1
1coupon.dtypes
运行结果如下:
图1
可以看到“团购活动ID”“与购买人数”都是整数变量。大家思考一下,“团购活动ID”需要用整数变量来存储吗?
2、浮点数
简单的说就是带小数点的数字,也就是float型。例如
1type(85.0) #返回值float
2type(4/5) #返回值float
在图2中可以看到,团购价、市场价等都是浮点数。具体来看一个例子,“六婆串串香火锅”团购的团购价“85.0”为浮点数。
图2
3、复数
Python中,复数的虚数部分通过后缀“j”来表示,例如:
例2
112.3+4j #创建复数
还可以使用real和imag函数来查看复数的实部和虚部。
例3
1(3+1 j) .real#返回值3 .0
2(3+1 j) .imag#返回值1 .0
在这里划一下重点:虚部的系数如果是1,也需要写出来哈!不信你可以试试!
4、布尔值
布尔值就是逻辑值,“对”或者“错”,“是”或者“否”。就像人们对火锅的态度只有“爱”或者“不爱”,这就对应了逻辑值True和False。它们的主要用途是进行逻辑运算,所以可以通过“==”,“>”,"<"等创建布尔值。首先,来看一些简单的例子。
11== 1#返回值True
21> 2#返回值False
31!= 2#返回值True
4( 1!= 2) and( 1== 1) #返回值True
5( 1!= 2) or( 1> 2) #返回值False
那么,逻辑运算能在数据分析中帮我们做什么呢?这里咱们回到火锅的例子上。首先,导入coupon_nm数据集。这里如下图可以发现,在coupon中,第一行和第三行的团购名都是“壹分之贰豪华生日派对套餐”。那么一个自然的问题是它们到底是不是同一个团购呢?
图3
解决的办法是通过比对团购ID来确定是不是同一个团购活动,这时候就可以用到布尔运算。
具体操作代码如下:
例4
1coupon.iloc[0,2] == coupon.iloc[2,2] #如果不做特殊说明,本书都假设读者已经导入了需要使用的数据集。
由于二者相等这件事不成立,所以这个布尔运算返回了False。在Python中,利用Pandas模块导入的数据都以数据框(Data Frame)的方式存储。而从数据框中取出某行某列就需要在数据集后加.iloc,并用方括号[ ,]表示行列的位置,行数在前,列数在后。但是要注意Python中从零开始计数,所以coupon.iloc[0,2]表示第一行第三列,coupon.iloc[2,2]表示第三行第三列。这些具体的函数操作都会在后面讲解,这里大家可以先去试着理解布尔运算的用途。
当然,还可以利用布尔值寻找需要的数据。比如,最近大家都很喜欢吃“六婆串串香火锅”,那么如何找到“六婆串串香火锅”的数据呢?大家可以试试下面的方法。
例5
1coupon[coupon[ '店名']== '六婆串串香火锅']
如图4所示,利用布尔值,一行代码就可以寻找到需要的数据。
图4
布尔数据类型会经常在数据科学的实践中使用,其目的就是通过快速实现简单的逻辑运算来处理数据。
5、字符串类型
5.1
字符串的表示
字符串就是一系列字符,也就是str型。简单来讲,就是用一对单引号(')、双引号(")或三引号(''')括起来的一串字符。比如:''Python分析火锅数据'','Python'等。
例6
1type( '六婆串串香火锅') #返回值str
其中,'六婆串串香火锅'是字符串str类型。
5.2
字符串的常用操作
Python提供了5种常用的操作,分别是“+”(字符串拼接)、“*”(复制)、“in”(是否在字符串中),单个索引和切片索引,len(字符串长度)。
例7
1name= '六婆串串香火锅'
2name* 3#返回值为 '六婆串串香火锅六婆串串香火锅六婆串串香火锅'
3'六婆'inname#返回值为True
4name[ 0] #返回值为 '六'
5name[ 2: 4] #返回值为 '串串'
6len( name) #返回值为 7
字符串类型的数据其实是通过一种特殊的数据结构列表(list)存储的。更多的理解字符串的例子可以从下面的数据结构的介绍中获得。
6、数据类型转换
数据类型转换在项目实践中经常用到,比如一个火锅店的月销售额是一个字符类型,转换为数字类型才可以进行统计分析,比如计算均值。Python提供了便捷的数据类型转换函数。举例如下表:
表1
火锅数据中的字段“团购活动ID”,Python认为它是数值型。但是,此时客户ID相加减是没有意义的,其本质是字符串。这就需要更改数值型数据为字符型数据。str函数就成功的将第一条数据的ID“38744470”转换成字符串'38744470'。
例8
1ID = coupon.loc[0,'团购活动ID']
2ID = str(ID) #转换数据类型
3print(type(ID)) #返回值为str
好了,今天就讲到这里。
作业:请大家导入shops_nm.xlsx数据,查看每个变量的数据类型,并查看商铺中是否有“六婆串串香火锅”的信息。
责任编辑: