
Dataframe 一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。其结构图示意图,如下所示:
Dataframe 的每一行数据都可以看成一个 Series 结构,只不过,Dataframe 为这些行中每个数据值增加了一个列标签。因此 Dataframe 其实是从 Series 的基础上演变而来。在数据分析任务中 Dataframe 的应用非常广泛,因为它描述数据的更为清晰、直观。
下面对 Dataframe 数据结构的特点做简单地总结,如下所示:
创建 Dataframe 对象的语法格式如下:
import pandas as pd pd.Dataframe( data, index, columns, dtype, copy)
| 参数名称 | 说明 |
|---|---|
| data | 输入的数据,可以是 ndarray,series,list,dict,标量以及一个 Dataframe。 |
| index | 行标签,如果没有传递 index 值,则默认行标签是 np.arange(n),n 代表 data 的元素个数。 |
| columns | 列标签,如果没有传递 columns 值,则默认列标签是 np.arange(n)。 |
| dtype | dtype表示每一列的数据类型。 |
| copy | 默认为 False,表示复制数据 data。 |
1) 创建空的Dataframe对象
>>> pd.Dataframe() Empty Dataframe Columns: [] Index: []
2) 列表创建DataFame对象
可以使用单一列表或嵌套列表来创建一个 Dataframe。
>>> data = [1,2,3,4,5]
>>> pd.Dataframe(data)
0
0 1
1 2
2 3
3 4
4 5
#嵌套
data = [['Alex',10],['Bob',12],['Clarke',13]]
pd.Dataframe(data,columns=['Name','Age'])
Name Age
0 Alex 10
1 Bob 12
2 Clarke 13
3) 字典嵌套列表创建
pd.Dataframe({'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]})
4) 列表嵌套字典创建Dataframe对象
列表嵌套字典可以作为输入数据传递给 Dataframe 构造函数。默认情况下,字典的键被用作列名。
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
pd.Dataframe(data)
a b c
0 1 2 NaN
1 5 10 20.0
5) Series创建Dataframe对象
pd.Dataframe({'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])})
one two
a 1.0 1
b 2.0 2
c 3.0 3
d NaN 4
1) 列索引选取数据列
df ['one'] a 1.0 b 2.0 c 3.0 d NaN Name: one, dtype: float64
2) 列索引添加数据列
#使用df['列']=值,插入新的数据列 ... #将已经存在的数据列做相加运算 df['four']=df['one']+df['three'] insert() 方法插入新的列: #注意是column参数 #数值1代表插入到columns列表的索引位置 df.insert(1,column='score',value=[91,90,75])
3) 列索引删除数据列
通过 del 和 pop() 都能够删除 Dataframe 中的数据列。
#使用del删除
del df['one']
print(df)
#使用pop方法删除
df.pop('two')
print (df)
1) 标签索引选取
可以将行标签传递给 loc 函数
df.loc['index, columns']
loc 允许接两个参数分别是行和列,参数之间需要使用“逗号”隔开,但该函数只能接收标签索引。
2) 整数索引选取
通过将数据行所在的索引位置传递给 iloc 函数
iloc 允许接受两个参数分别是行和列,参数之间使用“逗号”隔开,但该函数只能接收整数索引。
3) 切片操作多行选取
4) 添加数据行
使用 append() 函数,可以将新的数据行添加到 Dataframe 中,该函数会在行末追加数据行。
5) 删除数据行
您可以使用行索引标签,从 Dataframe 中删除某一行数据。如果索引标签存在重复,那么它们将被一起删除。
drop()
Dataframe 的属性和方法,与 Series 相差无几,如下所示:
| 名称 | 属性&方法描述 |
|---|---|
| T | 行和列转置。 |
| axes | 返回一个仅以行轴标签和列轴标签为成员的列表。 |
| dtypes | 返回每列数据的数据类型。 |
| empty | Dataframe中没有数据或者任意坐标轴的长度为0,则返回True。 |
| ndim | 轴的数量,也指数组的维数。 |
| shape | 返回一个元组,表示了 Dataframe 维度。(n index, n columns) |
| size | Dataframe中的元素数量。 |
| values | 使用 numpy 数组表示 Dataframe 中的元素值。 |
| head() | 返回前 n 行数据。 |
| tail() | 返回后 n 行数据。 |
| shift() | 将行或列移动指定的步幅长度 |
10) shift()移动行或列
如果您想要移动 Dataframe 中的某一行/列,可以使用 shift() 函数实现。它提供了一个periods参数,该参数表示在特定的轴上移动指定的步幅。
shif() 函数的语法格式如下:
Dataframe.shift(periods=1, freq=None, axis=0)
| 参数名称 | 说明 |
|---|---|
| peroids | 类型为int,表示移动的幅度,可以是正数,也可以是负数,默认值为1。 |
| freq | 日期偏移量,默认值为None,适用于时间序。取值为符合时间规则的字符串。 |
| axis | 如果是 0 或者 "index" 表示上下移动,如果是 1 或者 "columns" 则会左右移动。 |
| fill_value | 该参数用来填充缺失值。 |