目录
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