1. DataFrame的概念
定义:
DataFrame,中文叫数据框。是pandas模块最常用的数据类型,是一个二维的矩阵数据表。
一个DataFrame,它由3部分组成:
既有行索引(index),可以用来定位到具体的某一行。
也有列索引(columns),用来定位到具体的某一列。
通过index和columns,可以定位到一个值,能快速进行数据的筛选和定位。
在某种程度上,可以认为DataFrame是“具有相同index的Series的集合”。
因此,DataFrame的同一列中,值的数据类型相同。
但是,列和列之间的数据类型可以不同。
同样的,和Series类似,DataFrame的行索引index是可以选择性定义的。
如果没有定义index,index就会默认从0开始生成。
2. 构造一个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)
这几行代码,构造了一个DataFrame。
第1行,导入pandas模块。
第3行,定义了一个字典。
第4行,定义了一个列表。
第6行,使用DataFrame构造函数创建了一个DataFrame,并赋值给了变量df。
第8行,将这个创建的DataFrame输出。
在构造过程中:字典中的keys,就成为了DataFrame中的列索引columns。
字典中的values,就成为了DataFrame中的值values。
参数index用于定义DataFrame的行索引(index)。
只需要将一个列表赋值给参数index。
示例中,我们将定义的列表city赋值给参数index。
city中的值,会成为DataFrame的index。
若不传入参数index,那么生成的DataFrame的index就会默认从0开始生成。
将pd.DataFrame()函数创建的DataFrame,赋值给了df这个变量。
将df输出可以看到,它是一个DataFrame对象:
列索引(columns)是由字典data的的keys组成;
值(values)是由字典data的的值组成;
行索引(index)是由列表city的值组成。
2. 传入列表
除了字典外,我们还可以用列表的方式构造一个DataFrame。
如图,列表的数据依次成为DataFrame的values。
此时,参数data是嵌套列表,没有自定义columns。
生成的DataFrame的columns会默认从0开始生成。
也就是说,参数data传入的是列表时,需要在pd.DataFrame()
函数内使用参数columns,用于自定义列索引columns。
3. DataFrame的常用属性
DataFrame的属性,与Series非常相似。
同样的,我们学习DataFrame的3种常用属性:
1. dtypes
我们知道,DataFrame对象有多列数据,数据类型也是:字符串型、整型、浮点型、布尔型。
我们访问DataFrame对象的dtypes
属性,会返回DataFrame对象每一列的数据类型。
2. values
我们访问DataFrame对象的values
属性,会以数组的形式返回DataFrame对象的值values。
import pandas as pd
# 定义一个字典和一个列表
data = {'rank':[1, 2, 3, 4],'GDP':[80855, 77388, 68024, 47251]}
city = ['GD','JS','SD','ZJ']
# 使用DataFrame构造函数,传入参数:字典data作为values和columns,列表city作为index
# 构造出的DataFrame赋值给df
df = pd.DataFrame(data, index=city)
# 用print输出变量df的每一列数据的值
print(df.values)
3. index
同理,我们访问DataFrame的index
属性,可以获取它的行索引index。
示例中,我们通过访问DataFrame对象的index
属性,返回了变量df的行索引index,将其输出。
根据输出可以看到,返回了变量df的索引index,即变量city所存储的列表的值。
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的行索引
print(df.index)
4. DataFrame的轴
因为DataFrame是一个二维的数据结构。
因此,它有一个新的属性:轴(axis)。
轴(axis),是用来为超过一维的数组定义属性。
二维数组有两个轴,三维数组有三个轴,以此类推。
对于DataFrame而言:
第0轴垂直向下,即axis=0是垂直方向进行操作;
第1轴水平向右,即axis=1是水平方向进行操作。
如果要按行或者按列来对DataFrame内的数据进行求和,可以使用sum()
函数。
那么在sum()
函数中,就可以使用axis
参数来指定求和的方向。
右侧展示了:
当axis=0
时,是在垂直的方向上进行求和操作;
当axis=1
时,是在水平的方向上进行求和操作。