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