Pandas
pandas是一个基于NumPy的模块,它的功能在于数据的筛选清洗和处理,与NumPy模块相比,pandas模块更擅长处理二维数据。
pandas模块主要有Series和DataFrame两种数据结构。
安装:在终端中输入代码:pip install pandas即可。
一、series数据结构
1)series的概念
Series,中文叫做序列,pandas模块的一种数据类型。是一个一维的、带索引(index)的数组对象。
右侧是一个print出来的Series,它由3部分构成。左侧是索引(index),右侧是值(values),下面是值(values)的数据类型。
一个索引对应一个值。索引和值之间,有空格隔开。
2)series和字典的相同和差异点
Series 和字典有一定的相似之处:
- 一个字典中,通过键(key),可以访问所对应的值(value)。
- Series也是如此,一个Series的索引(index)在左边,值(values)在右边,可以通过左边的索引index访问到右边对应的值values。
Series 和字典有一定的差异点:
- Series中的数据是有顺序的。除了直接通过index访问外,还能通过0,1,2这样的位置进行访问。
- Series的index是可以定义的。如果没有定义index,index就会默认从0开始生成。
3)series的值的类型
Series的值(values)可以是多种数据类型:字符串、整型、浮点型、布尔型。
一个Series在print输出时,值的数据类型会在底部,用dtype标示出来。
需要注意的是,一个Series里的所有值,数据类型都是一样的。
二、series的构造函数
import pandas as pd
GDP = [80855, 77388, 68024, 47251, 40471]
city = ['GD','JS','SD','ZJ','HN']
info = pd.Series(GDP,index = city)
#参数index用于定义Series的索引(index)。
print(info)
结果
GD 80855
JS 77388
SD 68024
ZJ 47251
HN 40471
dtype: int64
- 值(values)是由列表GDP的值组成;
- 索引(index)是由列表city的值组成;
- 值(values)的数据类型是整型。
三、访问Series数据
1. 位置索引访问
这种访问方式和列表相同,是基于元素自身的下标来进行访问。对于一个列表list,list[i]表示list的第i+1个元素。
同理,我们通过这种方式就可以获得Series序列中的每个数据。示例中,我们通过info[0]输出了info的第一个数据。
import pandas as pd
info = pd.Series([80855, 77388, 68024, 47251, 40471],index = ['GD','JS','SD','ZJ','HN'])
结果
80855
2. 索引标签访问
这种访问方式和字典相同,把index中的索引标签当做字典的key,而把Series序列的值当做字典的value。
示例中,我们通过索引标签’JS’输出了info中对应的数据。
import pandas as pd
info = pd.Series([80855, 77388, 68024, 47251, 40471],index = ['GD','JS','SD','ZJ','HN'])
# 通过索引标签'JS'输出了info中对应的数据
print(info['JS'])
二、DataFrame
1、定义
DataFrame,中文叫数据框。是pandas模块最常用的数据类型,是一个二维的矩阵数据表
2、组成
右侧是一个DataFrame,它由3部分组成:
- 既有行索引(index),可以用来定位到具体的某一行。
- 也有列索引(columns),用来定位到具体的某一列。
- 通过index和columns,可以定位到一个值,能快速进行数据的筛选和定位。
因此,DataFrame的同一列中,值的数据类型相同。但是,列和列之间的数据类型可以不同。
3、索引
同样的,和Series类似,DataFrame的行索引index是可以选择性定义的。如果没有定义index,index就会默认从0开始生成。
4、构造函数
通过调用的pandas模块里的***DataFrame()***函数,可以构造一个DataFrame。
1)用字典的方法
import pandas as pd
data= {'rank':[1, 2, 3, 4],'GDP':[80855, 77388, 68024, 47251]}
city= ['GD','JS','SD','ZJ']
df= pd.DataFrame(data, index=city)
print(df)
结构
rank GDP
GD 1 80855
JS 2 77388
SD 3 68024
ZJ 4 47251
- 示例中data是一个字典,传入pd.DataFrame()函数;
- 字典的keys,会成为DataFrame的列索引columns;
- 字典的values是列表,列表中的值,会成为DataFrame的值values。
- 字典的values是对应的列表,并且每个列表中的元素个数相同。
2、用列表的方法
- 此时,参数data是嵌套列表,没有自定义columns。生成的DataFrame的columns会默认从0开始生成。
- 也就是说,参数data传入的是列表时,需要在pd.DataFrame()函数内使用参数columns,用于自定义列索引columns。
5、DataFrame属性
-
dtypes
我们访问DataFrame对象的的dtypes属性,会返回DataFrame对象每一列的数据类型。 -
values
我们访问DataFrame对象的values属性,会以数组的形式返回DataFrame对象的值values。 -
index
同理,我们访问DataFrame的index属性,可以获取它的行索引index。
6、DataFrame的轴
轴(axis),是用来为超过一维的数组定义属性。二维数组有两个轴,三维数组有三个轴,以此类推。
对于DataFrame而言:
第0轴垂直向下,即axis=0是垂直方向进行操作;
第1轴水平向右,即axis=1是水平方向进行操作。
如果要按行或者按列来对DataFrame内的数据进行求和,可以使用sum()函数。
那么在sum()函数中,就可以使用axis参数来指定求和的方向。
右侧展示了:
当axis=0时,是在垂直的方向上进行求和操作;
当axis=1时,是在水平的方向上进行求和操作。