一、pandas的数据结构分析
1、Pandas中有两个主要的数据结构:Series(一维的数据结构)和DataFrame(二维的、表格型的数据结构)。
2、Series是一个类似一维数组的对象,它能够保存任何类型的数据,主要由一组数据和与之相关的索引两部分构成。
注意:Series的索引位于左边,数据位于右边。
(1)、创建方法:
class pandas.Series(data = None,index = None,dtype = None, name = None,copy = False,fastpath = False)
data:表示传入的数据。
index:表示索引,唯一且与数据长度相等,默认会自动创建一个从0~N的整数索引。
(2)、通过传入一个列表来创建一个Series类对象:
d1=pd.Series([1,2,3,4,5])
#创建Series类对象,并指定索引:
d2=pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
#使用dict进行构建
dict={2001:17.8,2002:20.1,2003:16.5}
d3=pd.Series(dict)
(3)、为了能方便地操作Series对象中的索引和数据,所以该对象提供了两个属性index和values分别进行获取。
data = pd.Series([1,2,3])
data.index #获取索引并查看数据类型
data.values #获取数据
#直接使用索引来获取数据
data[3]
(4)、当某个索引对应的数据进行运算以后,其运算的结果会替换原数据,仍然与这个索引保持着对应的关系。
3、DataFrame是一个类似于二维数组或表格(如excel)的对象,它每列的数据可以是不同的数据类型。
注意: DataFrame的索引不仅有行索引,还有列索引,数据可以有多列。
(1)、创建方法:
pandas.DataFrame(data = None,index = None,columns = None, dtype = None,copy = False )
index:表示行标签。若不设置该参数,则默认会自动创建一个从0~N的整数索引。
columns:列标签。
(2)、通过传入数组来创建DataFrame类对象:
# 创建数组
arr = np.array([['a', 'b', 'c'], ['d', 'e', 'f']])
# 基于数组创建DataFrame对象
d1 = pd.DataFrame(arr)
#指定索引顺序
d2 = pd.DataFrame(arr, columns=['No1', 'No2', 'No3'])
(3)、我们可以使用列索引的方式来获取一列数据,返回的结果是一个Series对象。
# 通过列索引的方式获取一列数据
element = d2['No2']
# 查看返回结果的类型
type(element1)
#在获取DataFrame的一列数据时,推荐使用列索引的方式完成,主要是因为在实际使用中,列索引的名称中很有可能带有一些特殊字符(如空格),这时使用“点字符”进行访问就显得不太合适了。
(4)、DataFrame增加,删除一列数据
#增加
d1['No4'] = ['g', 'h']
#删除
del d1['No3']
二、Pandas索引操作及高级索引
1、Pandas中的索引都是Index类对象,又称为索引对象,该对象是不可以进行修改的,以保障数据的安全。
2、Pandas中的索引都是Index类对象,又称为索引对象,该对象是不可以进行修改的,以保障数据的安全。Pandas还提供了很多Index的子类,常见的有如下几种:
(1)Int64Index:针对整数的特殊Index对象。
(2)MultiIndex:层次化索引,表示单个轴上的多层索引。
(3)DatetimeIndex:存储纳秒寄时间戳。
3、reindex()方法的语法格式如下:
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:前向或者后向填充时的最大填充量。