Pandas数据结构
Pandas有两个
最主要
也是最重要
的数据结构: Series 和 DataFrame
类型 | 描述 |
---|---|
Series | 一维 的数据结构。 |
DataFrame | 二维 的、表格型 的数据结构。 |
数据结构—Series
Series是一个类似
一维数组
的对象,它能够保存任何类型
的数据,主要由一组数据
和与之相关的索引
两部分构成,函数如下:
pandas.Series( data, index, dtype, name, copy)
参数说明:
data
:一组数据(ndarray 类型)。index
:数据索引标签,如果不指定,默认从 0 开始
。dtype
:数据类型,默认会自己判断。name
:设置名称。copy
:拷贝数据,默认为False
。
注意:
Series的索引位于左边,数据位于右边。
index | element |
---|---|
0 | 1 |
1 | 2 |
2 | 3 |
3 | 4 |
4 | 5 |
Series的创建方式
Pandas的Series类对象可以使用以下构造方法创建:
class pandas.Series(data = None,index = None,dtype = None,
name = None,copy = False,fastpath = False)
data:表示传入的数据
。
index:表示索引
,唯一
且与数据长度相等
,默认会自动创建
一个从0~N
的整数索引。
通过
传入一个列表
来创建一个Series类对象:
# 创建Series类对象
ser_obj = pd.Series([1, 2, 3, 4, 5])
# 创建Series类对象,并指定索引
ser_obj = pd.Series([1, 2, 3, 4, 5],
index=['a', 'b', 'c', 'd', 'e'])
除了使用列表构建Series类对象外,还可以使用
dict
进行构建。
year_data = {2001: 17.8, 2002: 20.1, 2003: 16.5}
ser_obj2 = pd.Series(year_data)
使用索引和获取数据
为了能
方便
地操作Series对象中的索引和数据,所以该对象提供了两个属性index
和values
分别进行获取。
# 获取ser_obj的索引
ser_obj.index
# 获取ser_obj的数据
ser_obj.values
当然,我们也可以直接
使用索引
来获取数据
。
# 获取位置索引3对应的数据
ser_obj[3]
当某个索引对应的数据进行运算以后,其运算的结果会
替换原数据
,仍然与这个索引保持着对应的关系。
ser_obj * 2
数据结构—DataFrame
DataFrame是一个类似于
二维数组
或表格
(如excel)的对象,它每列
的数据可以是不同
的数据类型。
注意:
DataFrame的索引不仅有行索引
,还有列索引
,数据可以有多列。
DataFrame的创建方式
Pandas的DataFrame类对象可以使用以下构造方法创建:
pandas.DataFrame(data = None,index = None,columns = None,
dtype = None,copy = False )
index
:表示行标签
。若不设置该参数,则默认会自动
创建一个从0~N
的整数索引。
columns
:列标签
。
通过
传入数组
来创建DataFrame类对象:
# 创建数组
demo_arr = np.array([['a', 'b', 'c'],
['d', 'e', 'f']])
# 基于数组创建DataFrame对象
df_obj = pd.DataFrame(demo_arr)
在创建DataFrame类对象时,如果为其
指定了列索引
,则DataFrame的列会按照指定索引
的顺序进行排列
。
df_obj = pd.DataFrame(demo_arr, columns=['No1', 'No2', 'No3'])
index | No1 | No2 | No3 |
---|---|---|---|
0 | a | b | c |
1 | d | e | f |
使用列索引或访问属性获取数据
我们可以使用
列索引
的方式来获取一列数据
,返回的结果是一个Series对象。
# 通过列索引的方式获取一列数据
element = df_obj['No2']
# 查看返回结果的类型
type(element)#pandas.core.series.Series
我们还可以使用
访问属性
的方式来获取一列数据
,返回的结果是一个Series对象。
# 通过属性获取列数据
element = df_obj.No2
# 查看返回结果的类型
type(element)#pandas.core.series.Series
注意:
在获取
DataFrame的一列数据
时,推荐使用列索引
的方式完成,主要是因为在实际使用中,列索引的名称中很有可能带有一些特殊字符(如空格)
,这时使用“点字符”进行访问就显得不太合适了。
增加列
要想为DataFrame
增加一列数据
,则可以通过给列索引或者列名称赋值
的方式实现。
# 增加No4一列数据
df_obj['No4'] = ['g', 'h']
删除列
要想
删除
某一列数据,则可以使用del语句
实现。
# 删除No3一列数据
del df_obj['No3']