DataFrame介绍
与Series不同,DataFrame是由一组数据与行、列索引组成的二维数据结构
DataFrame属性:
- values:表格中值
- columns:列索引
- index:行索引
- shape:形状
创建DataFrame
创建DataFrame的方法有很多,可以通过列表,元组,字典,外部导入等。
1. 列表、元组的传入
列表和元组传入方式基本一致。
- 传入一列数据
单列表传入:该列表的值会显示成一列,并且行、列索引均是从默认值0开始。
import pandas as pd
df1 = pd.DataFrame(['a','b','c'])
df1
# 返回值
0
0 a
1 b
2 c
- 传入多列数据
嵌套列表传入:会根据嵌套列表显示成多列数据。嵌套的列表也可以换成元组。
df2 = pd.DataFrame ([['a','A'],['b','B'],['c','C']])
df2
# 返回值
0 1
0 a A
1 b B
2 c C
#改成元组后,具有相同的返回值
df3 = pd.DataFrame ((['a','A'],['b','B'],['c','C']))
df3
2. 字典的传入
传入一个字典时,字典的key值相当于列索引,如果不设置行索引,将依旧从0计数。
data = {
'小写':['a','b','c'],'大写':['A','b','C']}
df3 = pd.DataFrame (data)
df3
# 返回
小写 大写
0 a A
1 b b
2 c C
行、列索引的设置、查询,切片
1. 设置行列索引
在DataFrame中可以使用index和columns来规定其索引值。
df4 = pd.DataFrame ((['a','A'],['b','B'],['c','C']),index = [1,2,3],columns =['小写','大写'])
df4
#返回值
小写 大写
1 a A
2 b B
3 c C
2. 查询行列索引
# 获取列索引
df4.columns
# 返回
Index(['小写', '大写'], dtype='object')
#获取行索引
df4 .index
# 返回
Int64Index([1, 2, 3], dtype='int64')
3. 数据切片
DataFrame可以对行,列通过索引进行切片处理。
# 新建一个DataFrame
import pandas as pd
import numpy as np
df5 = pd.DataFrame(np.arange(16).reshape((4,4)),index = [1,2,3,4],columns=['A','B','C','D'])
df5
# 返回
A B C D
1 0 1 2 3
2 4 5 6 7
3 8 9 10 11
4 12 13 14 15
- 选取单列
传入需要提取的列名
df5["A"]
# 返回
1 0
2 4
3 8
4 12
Name: A, dtype: int32
- 选取多列
将需要的列名,以列表的形式传入
df5[["A",'B']]
# 返回
A B
1 0 1
2 4 5
3 8 9
4 12 13
- 选取单行
传入所需行号
df5[2:3]
# 返回
A B C D
3 8 9 10 11
- 选取多行
和选取单行方法一样(强迫症0.0)
df5[:3]
# 返回
A B C D
1 0 1 2 3
2 4 5 6 7
3 8 9 10 11
- 按条件选取行
感觉这个方法只适用单列单条件情景,还是推荐使用pandas中的loc函数
df5[df5["A"]>5]
# 返回
A B C D
3 8 9 10 11
4 12 13 14 15
索引修改
- 通过修改属性来修改索引
import numpy as np
import pandas as pd
df6 = pd.DataFrame(np.arange(16).reshape((4,4)),index = list('abcd'),columns=['A','B','C','D'])
df6.columns = [1,2,3,4] #修改列属性
df6.index = [1,2,3,