DataFrame: 多种类型的列构成的二维标签数据结构(多列)

DataFrame类:

pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

参数:

data: 一维数据,二维数据
index: 行标签
columns: 列标签

1. Dataframe创建

一行一列

1
2
# 一维数
pd.DataFrame(data=np.arange(1,4))
0
0 1
1 2
2 3

多列

1
2
3
# 多维数据 data为4X4
data = np.arange(16).reshape(4,4)
pd.DataFrame(data=data)
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15

设置index与columns

1
2
3
4
# 设置index与columns
data = np.arange(16).reshape(4,4)
pdata = pd.DataFrame(data=data, index=list('abcd'), columns=['c1','c2','c3','c4'])
pdata
1
2
3
4
# 设置index与columns
data = {'c1':[1,2,3], 'c2':[4,5,6]}
pdata = pd.DataFrame(data=data)
pdata

设置列标签

1
2
3
# 设置列标签
pdata.columns = ['t1','t2']
pdata

2. DataFrame对象访问

获取指定列

1
2
# 获取一列数据,返回Series对象
pdata['c1']

输出:

1
2
3
4
0    1
1 2
2 3
Name: c1, dtype: int64
1
2
# 取多列数据
pdata[['c1','c2']]

输出:

c1 c2
0 1 4
1 2 5
2 3 6

loc操作

loc操作:使用类似列表方式去对数据进行访问,支持bool索引

1
2
3
4
# 获取第一行
pdata.loc[0]
# 获取第一行指定c1,c2列
pdata.loc[0,['c1','c2']]
1
2
3
# 获取列索引
for item in pdata:
print(item)

输出:

1
2
3
c1
c2
c3
1
2
3
# 按列遍历
for item in pdata.items():
print(item)

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
('c1', 0    1
1 2
2 3
Name: c1, dtype: int64)
('c2', 0 4
1 5
2 6
Name: c2, dtype: int64)
('c3', 0 7
1 8
2 9
Name: c3, dtype: int64)

1
2
3
# 按行遍历
for item in pdata.iterrows():
print(item)

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
(0, c1    1
c2 4
c3 7
Name: 0, dtype: int64)
(1, c1 2
c2 5
c3 8
Name: 1, dtype: int64)
(2, c1 3
c2 6
c3 9
Name: 2, dtype: int64)

3. DataFrame修改

1
2
3
4
5
6
7
# 修改元素
import pandas as pd
data = {'c1':[1,2,3], 'c2':[4,5,6], 'c3':[7,8,9]}
pdata = pd.DataFrame(data=data)
# 修改c1列值
pdata['c1'] = 0
pdata
1
2
3
4
5
6
7
# DataFrame插入列
import pandas as pd
data = {'c1':[1,2,3], 'c2':[4,5,6], 'c3':[7,8,9]}
pdata = pd.DataFrame(data=data)
# 修改c1列值
pdata['c4'] = [-1,-1,-1]
pdata
1
2
3
4
5
6
7
# DataFrame插入行
import pandas as pd
data = {'c1':[1,2,3], 'c2':[4,5,6], 'c3':[7,8,9]}
pdata = pd.DataFrame(data=data)
# 修改c1列值
pdata.loc[3] = [-1,-1,-1]
pdata