Pandas有三种数据结构:Series、DataFrame和Panel。Series类似于数组;DataFrame类似于表格;Panel类似于Excel的多表单Sheet。
导入方式:
import pandas as pd
1.Series
Series是一种一维数组,包含索引和一个值序列,通过索引来访问数组中的数据。
1.1通过列表创建Series
i = ["a", "c", "d", "a"] v = [2, 4, 5, 7] t = pd.Series(v, index = i, name = "col") print(t) #----------------------------------------- a 2 c 4 d 5 a 7
1.2通过字典创建Series
sdata = {"a" : 100, "b" : 200, "e" : 300} obj3 = pd.Series(sdata) print(obj3) #------------------------------------ a 100 b 200 e 300
2.DataFrame
DataFrame是一个表格型的数据结构,既有行索引也有列索引,每列可以是不同类型的值。
2.1DataFrame索引
data = { 'name':['张三', '李四', '王五', '小明'], 'sex':['female', 'female', 'male', 'male'], 'year':[2001, 2001, 2003, 2002], 'city':['北京', '上海', '广州', '北京'] } df = pd.DataFrame(data) print(df) #------------------------------------------- name sex year city 0 张三 female 2001 北京 1 李四 female 2001 上海 2 王五 male 2003 广州 3 小明 male 2002 北京
DataFrame创建时指定索引
df3 = pd.DataFrame(data, columns = ['name', 'sex', 'year', 'city'], index = ['a', 'b', 'c', 'd']) print(df3) print(df3.index)#显示索引 print(df3.columns)#显示列名 df.index.insert(1,'w')#插入索引 #--------------------------------- name sex year city a 张三 female 2001 北京 b 李四 female 2001 上海 c 王五 male 2003 广州 d 小明 male 2002 北京 Index(['a', 'b', 'c', 'd'], dtype='object') Index(['name', 'sex', 'year', 'city'], dtype='object') Index([0, 'w', 1, 2, 3], dtype='object')
2.2DataFrame常用属性
values | index | columns | dtypes | ndim | shape |
元素 | 索引 | 列名 | 类型 | 维度 | 形状 |
print(df) print('信息表的所有值为:\n',df.values) print('信息表的所有列为:\n',df.columns) print('信息表的数据类型为:\n',df.dtypes) print('信息表的元素个数为:\n ',df.size) print('信息表的维度是\n ',df.ndim) print('信息表的形状为:',df.shape) #------------------------------------- name sex year city 0 张三 female 2001 北京 1 李四 female 2001 上海 2 王五 male 2003 广州 3 小明 male 2002 北京 信息表的所有值为: [['张三' 'female' 2001 '北京'] ['李四' 'female' 2001 '上海'] ['王五' 'male' 2003 '广州'] ['小明' 'male' 2002 '北京']] 信息表的所有列为: Index(['name', 'sex', 'year', 'city'], dtype='object') 信息表的数据类型为: name object sex object year int64 city object dtype: object 信息表的元素个数为: 16 信息表的维度是 2 信息表的形状为: (4, 4)
3.pandas索引操作
3.1重建索引
索引对象是无法修改的,因此需要重建索引对索引重新排序。
obj = pd.Series([7.2,-4.3,4.5,3.6],index = ['b', 'a', 'd', 'c']) print(obj) obj.reindex(['a','b','c','d']) #-------------------------------------------------------------- b 7.2 a -4.3 d 4.5 c 3.6 dtype: float64 a -4.3 b 7.2 c 3.6 d 4.5
3.2索引缺失值填充
对于顺序数据,使用参数method选项进行填充:
method='ffill'或'pad',表示前向值填充
method='bfill'或'backfill',表示后向值填充
缺失值的前向填充:
#前向填充 obj1 = pd.Series(['blue','red','black'],index = [0,2,4]) obj1.reindex(np.arange(6),method = 'ffill') #----------------------------------------- 0 blue 1 blue 2 red 3 red 4 black 5 black
缺失值的后向填充:
obj2 = pd.Series(['blue','red','black'],index = [0,2,4]) obj2.reindex(np.arange(6),method = 'backfill') #--------------------------------------------------------- 0 blue 1 red 2 red 3 black 4 black 5 NaN
3.3更换索引
如果需要将列数据作为索引,则可以通过set_index方法实现;如果需要将索引还原,可以通过reset_index方法实现。
data = { 'name':['张三', '李四', '王五', '小明'], 'sex':['female', 'female', 'male', 'male'], 'year':[2001, 2001, 2003, 2002], 'city':['北京', '上海', '广州', '北京'] } df = pd.DataFrame(data) df5 = df.set_index('city') print(df5) df6 = df5.reset_index('city') print(df6) #---------------------------------------------- name sex year city 北京 张三 female 2001 上海 李四 female 2001 广州 王五 male 2003 北京 小明 male 2002 city name sex year 0 北京 张三 female 2001 1 上海 李四 female 2001 2 广州 王五 male 2003 3 北京 小明 male 2002