作者:耿远昊、Datawhale团队


寄语:Pandas 是基于Numpy的一种工具,是为了解决数据分析任务而创建的,其纳入了大量库和一些标准的数据模型,提供了大量能使我们快速便捷地处理数据的函数和方法。

Datawhale又一开源项目来了!Joyful-Pandas(顾名思义:快乐学习Pandas)由Datawhale成员耿远昊发起,作者结合了三份经典教材的学习经验,历时2个多月时间,结合最新的Pandas版本,编写了这套关于Pandas的开源教程,梳理了Pandas的主线内容。

本项目从Pandas基础、数据分析方法、数据处理类型及动手实践四个模块,对Pandas进行系统性学习。同时,针对内容设计了大量的练习及案例,理论结合实践,巩固数据处理分析能力。

开源初衷

在使用Pandas之前,几乎所有的大型表格处理问题都是用xlrd/xlwt和python循环实现,虽然这已经几乎能完成一切的需求,但其缺点也显而易见,其一就是速度问题,其二就是代码的复用性几乎为0。

曾经也尝试过去零星地学Pandas,但不得不说这个包实在太过庞大,每次使用总觉得盲人摸象,每个函数的参数也很多,学习的路线并不是十分平缓。如果你刚刚手上使用Pandas,那么在碎片的学习过程中,报错是常常发生的事,并且很难修(因为不理解内部的操作),即使修好了下次又不会,令人有些沮丧。

2019年秋季,笔者偶然接触到了Theodore Petrou所著的《Pandas Cookbook》。快速地学习了一遍后,发现之前很多搞不清的概念得到了较好的解答。

之后,笔者又逐步地对着官方的User Guide一字一句查看,通读后建立了大的一些宏观概念。这是一个非常重要的台阶,官方的教程总是会告诉你重点在哪里。

经过了一段时间的思考,结合《Python for Data Analysis》(作者:Pandas之父)、《Pandas Cookbook》和官方的User Guide,按照自己的思路编写了一套关于Pandas的教程,完整梳理Pandas的主线内容。

本着杜绝浅尝辄止的理念,本教程涉及了每个部分的核心概念和函数。最后,希望达到“所写所得即所想”的境界,这大概需要更多的实践,也是笔者努力实现的目标方向。

关于项目的名字,笔者在原先使用Pandas时非常的痛苦(Painful),那现在是时候转变为“Joyful-Pandas”了!

开源内容

Joyful-Pandas共有11个章节,分成了4个模块,涵盖了Pandas基础内容,数据处理过程中常用的数据类型,及在处理过程中涉及到的操作。具体目录详情如下:

模块1 Pandas基础(第1章)

拿到数据后必然先要读取,分析完了数据必然是要保存;读取数据之后,我们面对了怎样的对象(Series? or Dataframe?)是第一重要的课题,因此了解序列和数据框的常规操作及其组件(component)便是必须涉及的内容。

模块2 数据分析方法(第2-5章)

对于一个Series或DataFrame而言,Pandas存在以下四种操作:

索引:如果一个操作使得它的元素信息减少了,那就对应了索引;

分组:数据被分组,从组内提取了关键的信息,使得数据信息被充分地使用;

变形:数据呈现结构或形态上的变化,使得我们更容易地能够地进一步处理数据;

合并:如果一个操作使得原本不属于这个数据框的信息被加入了进来,那往往是涉及到了合并操作。

笔者从数据信息增减的角度出发,将四类操作拆解成了3个板块,分别对应了本项目第2-5章的内容,串联了官方文档关于数据框操作的全部内容,帮助学习者系统梳理。

模块3 数据处理类型(第6-9章)

对序列和数据框这两种容器,Pandas基础对其的结构有了初步理解,而四种操作熟悉了所有相关操作,那么下面就要关心其中的数据类型。

其中涉及来四类特殊的数据类型:

缺失型数据

文本型数据

分类型数据

时间序列型数据

四种数据类型,分别对应了6-9章的内容。同时,在缺失型数据和文本型数据中,详细涉及Pandas1.0版本新的Nullable和string数据类型,这也是从Pandas 0.x升级后具有最大改动的方面。

模块4 动手实践(第10章)

最终,教程1-9章的最后都会加入两个练习题帮助读者巩固本章所学,每一道题都有多个小问,难度逐个上升,与知识点紧密结合。同时在第10章中会添加若干难度不一的综合问题,目前已添加两个经典案例,供大家学习实践。



最后,所有的练习都提供了参考答案,保证了完备性。

写到最后

除了教程主体和练习内容,每一章还加入了问题部分。每个章节设置3-8个问题,问题的内容包含了对知识点的细化认识、对复杂知识点的梳理、对某个函数或Pandas对象设计的思考等,如果在完成练习的基础上认真思考了这些问题,那么相信你对Pandas的掌握程度一定会再上一层楼,最后衷心的希望你能快乐的学习Pandas,体验用Pandas进行数据处理和分析的乐趣。

开源地址

https://github.com/datawhalechina/joyful-pandas

告别痛苦,快乐学习Pandas!开源教程《Joyful-Pandas》发布的更多相关文章

  1. 【干货分享】Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  2. Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  3. [转]Caffe 深度学习框架上手教程

    Caffe 深度学习框架上手教程 机器学习Caffe caffe 原文地址:http://suanfazu.com/t/caffe/281   blink 15年1月 6   Caffe448是一个清 ...

  4. Python 数据处理库 pandas 入门教程

    Python 数据处理库 pandas 入门教程2018/04/17 · 工具与框架 · Pandas, Python 原文出处: 强波的技术博客 pandas是一个Python语言的软件包,在我们使 ...

  5. Caffe 深度学习框架上手教程

    Caffe 深度学习框架上手教程   blink 15年1月   Caffe (CNN, deep learning) 介绍 Caffe -----------Convolution Architec ...

  6. 快速学习 Python 数据分析包 之 pandas

    最近在看时间序列分析的一些东西,中间普遍用到一个叫pandas的包,因此单独拿出时间来进行学习. 参见 pandas 官方文档 http://pandas.pydata.org/pandas-docs ...

  7. 学习Objective-C入门教程(分享)

    原百度文库连接:http://wenku.baidu.com/view/6786064fe518964bcf847c63.html PS:需要原文档的可以留邮箱发送! (我叫雷锋,不要谢我) 学习Ob ...

  8. 程序员用于机器学习编程的Python 数据处理库 pandas 进阶教程

    数据访问 在入门教程中,我们已经使用过访问数据的方法.这里我们再集中看一下. 注:这里的数据访问方法既适用于Series,也适用于DataFrame. **基础方法:[]和. 这是两种最直观的方法,任 ...

  9. 程序员用于机器学习编程的Python 数据处理库 pandas 入门教程

    入门介绍 pandas适合于许多不同类型的数据,包括: · 具有异构类型列的表格数据,例如SQL表格或Excel数据 · 有序和无序(不一定是固定频率)时间序列数据. · 具有行列标签的任意矩阵数据( ...

随机推荐

  1. 第四十九个知识点:描述在IPsec和TLS后的基本想法

    第四十九个知识点:描述在IPsec和TLS后的基本想法 网络安全协议(Internet Protocol Security,IPsec)和安全传输层协议(Transport Layer Securit ...

  2. java 语言基础作业

    1.动手动脑 仔细阅读示例: EnumTest.java,运行它,分析运行结果? 程序运行结果: 实验结论:枚举类型是引用类型!枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象.相同的值则引 ...

  3. CS5210完全替代AG6202|HDMI转VGA不带音频输出的芯片+原理图|替代兼容AG6202

    CS5210完全替代AG6202|HDMI转VGA不带音频输出的芯片+原理图|替代兼容AG6202 安格AG6202是一个HDMI转VGA不带音频解决方案,用于实现HDMI1.4高分辨率视频转VGA转 ...

  4. Java中的构造方法「注意事项」

    构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是调用构造方法. 语法: public 类名称(参数类型 参数名称){ 方法体 } 注意事项: 构造方法的名称必须和所在的类 ...

  5. Kerberos认证过程学习理解

    概念: Kerberos服务器:AS认证服务器,TGS服务授权服务器 Client 客户端,代表使用应用的用户 AppServer 服务端,应用提供各种服务的服务器 Client在Kerberos注册 ...

  6. Swoole 中使用 PDO 连接池、Redis 连接池、Mysqli 连接池

    连接池使用说明 所有连接池的实现均基于 ConnectionPool 原始连接池: 连接池的底层原理是基于 Channel 的自动调度: 开发者需要自己保证归还的连接是可重用的: 若连接不可重用,需要 ...

  7. 前端如何低门槛开发iOS、Android、小程序多端应用

    现如今跨平台开发技术已不是什么新鲜话题了,在市面上也有一些开源的框架可供选择,然而技术成熟.产品服务健全的平台并不多,其中也不乏推陈出新的框架值得关注. 比如最近使用的AVM,由APICloud迭代推 ...

  8. python中多模块导入的注意点

    导入模块常见的方式有  import xxx ,from xxx import yyy  或者 from xxx import yyy as a(为导入包(方法)取别名主要用于防止包名与模块中的变量重 ...

  9. [网络编程] 自己构建一个cgi.FieldStorage()的对象

    问题描述: 通常cgi.FieldStorage()返回一个类似于Python字典的对象. 在cgi框架中必须通过浏览器发送表单过来才能接受消息 那么我该怎么进行本地调试呢? 或者说在没有搭建好一整套 ...

  10. 上传自己的pip模块

    对于模块开发者本质上需要做3件事: 编写模块 将模块进行打包 上传到PyPI(需要先注册PyPI账号) 注册PyPI账号 安装上传工具 基于工具进行上传 对于模块的使用者来说,只需要做2件事: 通过p ...