Pandas(1)

pandas的数据结构分析

  • 分为series和DataFrame,其中series是一维的数据结构,DataFrame是二维的表格型的数据结构

series

  • series是一个一维数组的对象,他能保存任何类型的数据,主要是由一组数据和与之相关的索引两部分组成
  • 在Pandas中series对象可以通过pd.Series(data=None,index=None,dtapy=None,name=None,copy=False,fastpath=Falsa)创建
header 1header 2
data传入的数据,可以是ndarray list
index索引,必须是唯一的,且与数据的长度相同,如果没有传入索引参数,则默认会创建一个从0~N的整数索引
dype数据的类型
copy是否复制数据,默认为False
# 传入一个列表创建一个Series对象
import pandas as pd
ser_obj = pd.Series([1,2,3,4,5])
ser_obj
OUT:
0    1
1    2
2    3
3    4
4    5
dtype: int64
# 通过index指定索引
ser_obj = pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
ser_obj
OUT:
a    1
b    2
c    3
d    4
e    5
dtype: int64
# 通过dict创建Series对象
year_data = {2001:1.586,2002:3.898,2004:9.222}
ser_obj1=pd.Series(year_data)
ser_obj1
out:
2001    1.586
2002    3.898
2004    9.222
dtype: float64
  • 当数组中的元素进行运算后,和索引的对应关系不变
ser_obj1*2
OUT:
2001     3.172
2002     7.796
2004    18.444
dtype: float64

DataFrame

DataFrame简介

  • DataFrame是一个类似于二维数组或表格的对象,他每列的数据可以是不同的数据类型,与Series类似也是由索引和数据构成但是DataFrame不仅有行索引还有列索引
indexab
0xy
1xy
2xy
3xy

DataFrame创建

  • pd.DataFrame(data=None,index=None,dtapy=None,columns=None,copy=False)
  • index:行标签,如果没有传入索引参数,则默认会创建一个从0~N的整数索引
  • columns:列标签,如果没有传入索引参数,则默认会创建一个从0~N的整数索引
df_obj = pd.DataFrame(demo_arr,columns=['NO1','NO2','NO3'])
df_obj
OUT:
   NO1	NO2	NO3
0	a	b	c
1	d	e	f
  • 创建DataFrame对象,指定列索引
element = df_obj['NO2']
element
OUT:
0    b
1    e
Name: NO2, dtype: object


df_obj.NO2
0    b
1    e
Name: NO2, dtype: object

  • 增加一列数据
df_obj['NO4'] = ['d','g']
df_obj
OUT:
   NO1	NO2	NO3	NO4
0	a	b	c	d
1	d	e	f	g
  • 删除一列数据
del df_obj['NO2']
df_obj
OUT:
   NO3	NO4
0	c	d
1	f	g

Pandas索引操作及高级索引

索引对象

  • pandas中的索引都是index对象,又称为索引对象,该对象是不可以被修改的,以保障数据的安全
ser_obj =  pd.Series(range(5),index=['a','b','c','d','e'])
ser_index = ser_obj.index
ser_index
OUT:
Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
ser_index['2']='cc' 
TypeError: Index does not support mutable operations
  • 创建两个公用一个index对象的Series类对象
ser_obj1 = pd.Series(range(3),index=['a','b','c'])
ser_obj2 = pd.Series(['a','b','c'],index=ser_obj1.index)
ser_obj2.index is ser_obj1.index
OUT:
TRUE
  • Pandas提供的index子类

int64index:针对整数的特殊index对象
multiindex:层次化索引,表示单个轴上的多层索引
datetimeindex:存储纳秒级寄时间戳

重置索引

  • panads中提供了一个重要的方法是reindex(),该方法的作用是对原索引和新索引进行匹配,也就是说新索引含有就索引的数据,而原索引会按照新索引的排序方法进行排序,如果新索引中没有原索引数据,那么程序不仅不会报错,而且会添加新的索引,并将值填充为NaN或者使用fill_vlues填充其他值。
  • DataFrame.reindex(labels=None,index=None,columns=None,axis=None,method=None,copy=True,level=None,fill_value=nan,limit=None,tolerance=None)
  • index:用作索引的新序列
  • method:插值填充方式
  • fill_value:引入缺失值时使用的替代值
  • limit:向前或者后向填充时的最大填充量
ser_obj = pd.Series([1,2,3,4,5],index=['c','d','a','b','e'])
ser_obj
OUT:
c    1
d    2
a    3
b    4
e    5
dtype: int64

#重新索引
ser_obj2 = ser_obj.reindex(['a','b','c','d','e','f','g'])
ser_obj2
OUT:
a    3.0
b    4.0
c    1.0
d    2.0
e    5.0
f    NaN
g    NaN
dtype: float64
#使用fill_value选择填充相同值
ser_obj2 = ser_obj.reindex(['a','b','c','d','e','f','g'],fill_value=6)
ser_obj2
OUT:
a    3
b    4
c    1
d    2
e    5
f    6
g    6
dtype: int64
#使用method选择填充方式
ser_obj4.reindex(range(6),method='ffill')#向前填充
OUT:
0    1
1    1
2    3
3    3
4    5
5    5
dtype: int64
ser_obj4.reindex(range(6),method='bfill')#向后填充
OUT:
0    1
1    3
2    3
3    5
4    5
5    7
dtype: int64
ser_obj4.reindex(range(6),method='nearest')#从最近的索引值进行填充
OUT:
0    1
1    3
2    3
3    5
4    5
5    7
dtype: int64
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ashan927

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

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

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

打赏作者

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

抵扣说明:

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

余额充值