Pandas数据结构

目录

1.Series

1.1通过列表创建Series

1.2通过字典创建Series

2.DataFrame

2.1DataFrame索引

2.2DataFrame常用属性

3.pandas索引操作

3.1重建索引

3.2索引缺失值填充

3.3更换索引


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常用属性

valuesindexcolumnsdtypesndimshape
元素索引列名类型维度形状
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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抱抱宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值