美文网首页Pandas我爱编程
第三节 Pandas入门基础

第三节 Pandas入门基础

作者: owolf | 来源:发表于2018-08-03 22:50 被阅读31次

    本章节以及后续章节的源码,当然也可以从我的github下载,在源码中我自己加了一些中文注释。

    现在是晚上九点十五,哎,今天要写的东西有点多,看来又得推到明天了。不该刷抖音看微博,emmmmmm..........

    进入正题:

    Pandas含有使数据清洗和分析工作变得更快更简单的数据结构和操作工具。pandas经常和其它工具一同使用,如数值计算工具NumPy和SciPy,分析库statsmodels和scikit-learn,和数据可视化库matplotlib。pandas是基于NumPy数组构建的,特别是基于数组的函数和不使用for循环的数据处理。

    虽然pandas采用了大量的NumPy编码风格,但二者最大的不同是pandas是专门为处理表格和混杂数据设计的。而NumPy更适合处理统一的数值数组数据。

    使用pandas首先要了解它的两个数据结构:Series和DataFrame

    一、Series

    Series是一种类似于一维数组的对象,它由一组数据以及一组与之相关的数据标签(即索引)组成。

    二、DataFrame

    DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类(数值、字符串、布尔值等)

    可以输入给DataFrame构造器的数据:

    构建DataFrame

    三、索引对象

    pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)。构建Series和DataFrame时,所用的任何数组或其他序列标签都会被转换成一个Index

    与python的集合不同,pandas的Index可以包含重复的标签

    每个索引都有一些方法和属性,它们可用于设置逻辑并回答有关该索引所包含的数据的常见问题。表5-2列出了这些函数。

    四、Pandas基本功能

    1、重新索引(reindex函数)

    reindex函数的参数:

    插值(method)的选项:

    2、丢弃指定轴上的项

    丢弃某条轴上的一个或多个项很简单,只要有一个索引数组或列表即可。drop方法返回的是一个在指定轴上删除了指定值的新对象。

    用标签序列调用drop会从行标签(axis 0)删除值 通过传递axis=1或axis='columns'可以删除列的值

    3、索引、选取和过滤

    利用标签的切片运算与普通的Python切片运算不同,其末端是包含的

    通过布尔型DataFrame进行索引  

    (1)  loc和iloc的区别

    iloc主要使用数字来索引数据,而不能使用字符型的标签来索引数据。而loc则刚好相反,只能使用字符型标签来索引数据,不能使用数字来索引数据,不过有特殊情况,当数据框dataframe的行标签或者列标签为数字,loc就可以来其来索引。

    (2)ix是一种混合索引,字符型标签和整型数据索引都可以。在pandas0.20.0及以上版本,ix已经丢弃,请尽量使用loc和iloc;

    所以,在pandas中,有多个方法可以选取和重新组合数据,对于DataFrame,表5-4进行了总结。

    4、整数索引

    处理整数索引的pandas对象常常难住新手,因为它与Python内置的列表和元组的索引语法不同。例如,你可能不认为下面的代码会出错:

    ser = pd.Series(np.arange(3.))

    ser

    ser[-1]

    这里,pandas可以勉强进行整数索引,但是会导致小bug。我们有包含0,1,2的索引,但是引入用户想要的东西(基于标签或位置的索引)很难,另外,对于非整数索引,就不会产生歧义

    为了进行统一,如果轴索引含有整数,数据选取总会使用标签。为了更准确,请使用loc(标签)或iloc(整数)

    5、算术运算和数据对齐

    pandas最重要的一个功能是,它可以对不同索引的对象进行算术运算。在将对象相加时,如果存在不同的索引对,则结果的索引就是该索引对的并集。对于有数据库经验的用户,这就像在索引标签上进行自动外连接。

    自动的数据对齐操作在不重叠的索引处引入了NA值。缺失值会在算术运算过程中传播

    对于DataFrame,对齐操作会同时发生在行和列上:

    把它们相加后将会返回一个新的DataFrame,其索引和列为原来那两个DataFrame的并集:

    表下列出了Series和DataFrame的算术方法。它们每个都有一个副本,以字母r开头,它会翻转参数。因此这两个语句是等价的:

    灵活的算术方法:

    DataFrame和Series之间的运算:

    当我们从arr减去arr[0],每一行都会执行这个操作,这就叫做广播(broadcasting)

    默认情况下,DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列,然后沿着行一直向下广播:

    如果某个索引值在DataFrame的列或Series的索引中找不到,则参与运算的两个对象就会被重新索引以形成并集:

    如果你希望匹配行且在列上广播,则必须使用算术运算方法。例如:

    6、函数应用和映射

    另一个常见的操作是将函数应用到由各列或行所形成的一维数组上,DataFrame 的apply方法即可实现该功能

    这里的函数f,计算了一个Series的最大值和最小值的差,在frame的每列都执行了一次。结果是一个Series,使用frame的列作为索引。

    7、排序和排名

    要对行或列索引进行排序,可使用sort_index方法,它将返回一个已排序的新对象

    在排序时,任何缺失值默认都会被放到Series的末尾

    排名用rank()函数,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的:

    条目0和2没有使用平均排名6.5,它们被设成了6和7,因为数据中标签0位于标签2的前面。

    排名时用于破坏平级关系的method选项:

    8、带有重复值的轴索引

    8、汇总和计算描述统计

    pandas对象拥有一组常用的数学和统计方法。它们大部分都属于越简和汇总统计,用于从Series中提取单个值(如sum和mean)或从DataFrame的行或列中提取一个Series。

    约简方法的选项:

    描述和汇总统计方法:

    10、相关系数和协方差

    相关系数和协方差是通过参数对计算出来的。我们选取来自Yahoo!Finance的股票价格和成交量:

    在看代码前先干两件事:

    一、pip install pandas_datareader安装这个模块,然后把这个模块下(\Lib\site-packages\pandas_datareader)下的fred.py文件中的pandas.core.common import is_list_like修改为pandas.api.types import is_list_like

    二、pip install fix_yahoo_finance安装这个模块,在获取数据前运行以下代码即可:

    import fix_yahoo_finance as fy

    fy.pdr_override()

    AAPL的数据

    11、唯一值、值计数以及成员资格

    唯一值、值计数、成员资格方法:

    结果中的行标签是所有列的唯一值。后面的频率值是每个列中这些值的相应计数。

    五、层次化索引

    层次化索引是pandas的一项重要功能,它使你能在一个轴上拥有多个(两个以上)索引级别。

    重新调整某条轴上各级别的顺序,或根据指定级别上的值对数据进行排序。swaplevel接受两个级别编号或名称,并返回一个互换了级别的新对象(但数据不会发生变化):

    sort_index则根据单个级别中的值对数据进行排序。交换级别时,常常也会用到sort_index,这样最终结果就是按照指定顺序进行字母排序了:

    许多对DataFrame和Series的描述和汇总统计都有一个level选项,它用于指定在某条轴上求和的级别。再以上面那个DataFrame为例,我们可以根据行或列上的级别来进行求和:

    如果想要将DataFrame的一个或多个列当做行索引来用,或者希望将行索引变成DataFrame的列,使用set_index函数和reset_index函数

    六、面板数据

    pandas有一个Panel数据结构,可以看做一个三维版的DataFrame。pandas的大部分开发工作都集中在表格型数据的操作上,因为这些数据更常见,而且层次化索引也使得多数情况下没必要使用真正的N维数组。

    可以使用DataFrame对象组成的字典或一个三维ndarray来创建Panel对象:

    快速学习:

    第一节 NumPy基础(一)

    第二节 NumPy基础(二)

    第三节 Pandas入门基础

    第四节 数据加载、存储

    第五节 数据清洗

    第六节 数据合并、重塑

    第七节 数据聚合与分组运算

    第八节 数据可视化

    第九节 pandas高级应用

    第十节 时间序列

    第十一节 Python建模库

    数据分析案例--1880-2010年间全美婴儿姓名的处理

    数据分析案例--MovieLens 1M数据集

    数据分析案例--USA.gov数据

    数据分析案例--2012联邦选举委员会数据库

    数据分析案例--USDA食品数据库

    相关文章

      网友评论

        本文标题:第三节 Pandas入门基础

        本文链接:https://www.haomeiwen.com/subject/ooguvftx.html