1.Pandas的数据结构分析
Pandas中的两个主要数据结构:Series和DataFrame
Series:一维的数据结构
DataFrame:二维的,表格型的数据结构
(1) Series是一个类似一维数组的对象,它能够保存任何类型的数据,主要由一组数据和与之相关的索引两部分构成。
(2)通过传入一个列表来创建一个Series类对象:
除了使用列表构建Series类对象外,还可以使用dict进行构建。
(3)当某个索引对应的数据进行运算以后,其运算的结果会替换原数据,仍然与这个索引保持着对应的关系。
(4) DataFrame是一个类似于二维数组或表格(如excel)的对象,它每列的数据可以是不同的数据类型。
(5)DataFrame类对象可以使用以下构造方法创建:
(6)在创建DataFrame类对象时,如果为其指定了列索引,则DataFrame的列会按照指定索引的顺序进行排列。
(7) 还可以使用访问属性的方式来获取一列数据,返回的结果是一个Series对象。
(8) 想要DataFrame增减数据,则可以:
2.Pandas索引操作及高级索引:
(1)Pandas中的索引都是Index类对象,又称为索引对象,该对象是不可以进行修改的,以保障数据的安全。
Pandas还提供了很多Index的子类,常见的有如下几种:
(1)Int64Index:针对整数的特殊Index对象。
(2)MultiIndex:层次化索引,表示单个轴上的多层索引。
(3)DatetimeIndex:存储纳秒寄时间戳。
(2)Pandas中提供了一个重要的方法是reindex(),该方法的作用是对原索引和新索引进行匹配,也就是说,新索引含有原索引的数据,而原索引数据按照新索引排序。
(3)reindex()方法的语法格式如下:
(4)如果不想填充为NaN,则可以使用fill_value参数来指定缺失值。
ser_obj.reindex(['a', 'b', 'c', 'd', 'e', 'f'],
fill_value = 6)
(5)如果期望使用相邻的元素值进行填充,则可以使用method参数,该参数对应的值有多个
(6)如果我们希望获取某个数据,既可以通过索引的位置来获取,也可以使用索引名称来获取。
(7)如果使用的是位置索引进行切片,则切片结果是不包含结束位置;如果使用索引名称进行切片,则切片结果是包含结束位置的
(8)如果希望获取的是不连续的数据,则可以通过不连续索引来实现。
(8) DataFrame结构既包含行索引,也包含列索引。其中,行索引是通过index属性进行获取的,列索引是通过columns属性进行获取的。
(9)虽然DataFrame操作索引能够满足基本数据查看请求,但是仍然不够灵活。为此,Pandas库中提供了操作索引的方法来访问数据,具体包括:
loc:基于标签索引(索引名称),用于按标签选取数据。当执行切片操作时,既包含起始索引,也包含结束索引。
iloc:基于位置索引(整数索引),用于按位置选取数据。当执行切片操作时,只包含起始索引,不包含结束索引。
3.算术运算与数据对齐
(1)Pandas执行算术运算时,会先按照索引进行对齐,对齐以后再进行相应的运算,没有对齐的位置会用NaN进行补齐。
(2)如果希望不使用NAN填充缺失数据,则可以在调用add方法时提供fill_value参数的值,fill_value将会使用对象中存在的数据进行补充。
4.数据排序
(1)Pandas中按索引排序使用的是sort_index()方法,该方法可以用行索引或者列索引进行排序
(2) 按索引对Series进行分别排序,示例如下。
ser_obj = pd.Series(range(10, 15), index=[5, 3, 1, 3, 2])
# 按索引进行升序排列
ser_obj.sort_index()
# 按索引进行降序排列
ser_obj.sort_index(ascending = False)
(3)按索引对DataFrame进行分别排序,示例如下。
(4)Pandas中用来按值排序的方法为sort_values(),该方法的语法格式如下。
(5) 按值的大小对Series进行排序的示例如下:
ser_obj = pd.Series([4, np.nan, 6, np.nan, -3, 2])
# 按值升序排列
ser_obj.sort_values()
(6)在DataFrame中,sort_values()方法可以根据一个或多个列中的值进行排序,但是需要在排序时,将一个或多个列的索引传递给by参数才行。
5.统计计算与描述
(1)Pandas为我们提供了非常多的描述性统计分析的指标方法,比如总和、均值、最小值、最大值等。
(2)如果希望一次性输出多个统计指标,则我们可以调用describe()方法实现,语法格式如下
6. 层次化索引
结论:前面所涉及的Pandas对象都只有一层索引结构,又称为单层索引,层次化索引可以理解为单层索引的延伸,即在一个轴方向上具有多层索引。
(1)对于两层索引结构来说,它可以分为内层索引和外层索引。
(2)from_tuples()方法可以将包含若干个元组的列表转换为MultiIndex对象,其中元组的第一个元素作为外层索引,元组的第二个元素作为内层索引。
(3) from_arrays()方法是将数组列表转换为MultiIndex对象,其中嵌套的第一个列表将作为外层索引,嵌套的第二个列表将作为内层索引。