python数据分析编程基础
文章平均质量分 86
首先,快速介绍Python编程语言核心基础,掌握数据科学的有力工具。随后详细介绍数据分析基本工具,通过介绍NumPy、Pandas、MatPlotlib等工具,快速具备数据分析的专业范儿
石 溪
毕业于清华大学计算机系,长期从事知识图谱、自然语言处理等方向的研究工作,同时擅长技术文章写作,是颇受读者欢迎和认可的技术专栏作家。
展开
-
01-详解 Python 容器的用法
给妹子讲python-S01E01好用的列表【要点抢先看】1.python中的容器数据类型概述2.列表类型的异构性、有序性和本地可变性三大优势3.列表的基本操作(增、删、改、分片索引)4.列表的分片赋值与本地排序【妹子说】今天开始学python啦,不过我们从哪里开始学起呢?Python中有一种被称之为“容器”的数据类型,专门用来存放其他类型的对象,就好比小时候用的文具盒,里面放着...原创 2020-11-12 13:09:05 · 973 阅读 · 0 评论 -
02-循环迭代与容器遍历用法解析
0.本集概览1.while循环和for循环的基本用法2.几种容器对象(列表、字典、元组、字符串和文件)的遍历方法3.range、zip、enumerate的循环高级技巧4.列表解析式与字典解析式循环是每个程序语言的最基本最重要的部分之一,这一部分我们来说说循环迭代这个话题。大家肯定会说:循环就是for循环、while循环嘛。不过python的循环使用更方便,涉及的技巧和用法也更值得好好聊聊。1.Python中的循环基本用法现在就来谈谈循环的基本用法,通过这一节你就能愉快的使用python原创 2021-01-09 21:55:25 · 556 阅读 · 2 评论 -
03-字符串用法详解
0.本集概览1.字符串本质上是不可更改的有序字符容器2.字符串常用操作:分片、连接、赋值、遍历等3.字符串进阶操作:查找、替换、提取、连接与空白去除4.字符串的格式化输出与类型转换5.转义字符与原始字符串Python中一项很重要的工作就是进行文本处理,与之紧密相关的数据类型是字符串,这一集,我们由浅入深介绍一系列关于字符串的使用内容。1.字符串的容器本质前面刚刚介绍了容器,字符串本质上也可以理解为字符的容器。他就是由单个字符组成的有序序列,且不可修改。类比前面提到的列表,如正向索引、反原创 2021-01-10 21:39:38 · 469 阅读 · 0 评论 -
04-Python字符编码深入剖析及应用举例
0.本集概览1.字符编码的基本概念和发展过程2.Python的文本字符串和字节字符串3.Python编、解码的本质内涵4.Python编、解码的操作方法5.文本文件读取场景下的应用举例通过前面一集的内容,我们熟悉了字符串的常见用法。不过倒也让我想起一直以来让人困惑的一些概念:ASCII码、Unicode、字符编码什么的,很多朋友一直为此头大,这一集我们就来深入剖析这些内容。先开始我们不讲编程,不堆概念,我们讲讲故事吧。1.字符编码是如何变成今天这样的关于字符编码的概念太多太杂,当ASC原创 2021-03-07 20:59:55 · 350 阅读 · 0 评论 -
05 Python文件操作用法探讨
0.本集概览1.文件操作模式,他的本质是字符串2.文件的读方法和文件迭代器逐行扫描3.文件的关闭与刷新4.二进制文件的读写与对象的文件存储前面两集,我们详细介绍了Python字符串以及编解码的有关内容,这些内容实质上也是文件操作的基础。今天这一集,我们就正好来说说文件操作。1.文件操作模式先预热一下,看一个利用open函数打开文件的简单例子:代码片段:myfile = open('myfile.txt','w')myfile = open('myfile.txt','r')文件读原创 2021-03-07 21:01:44 · 245 阅读 · 0 评论 -
06-Python动态类型与对象拷贝机制分析
0.本集概览1.Python的动态类型和引用机制2.Python的共享引用和垃圾收集机制3.可变对象的原处修改性质4.获取对象独立拷贝的方法5.对象比较、相等判定和真值问题1.动态类型和对象引用有朋友问我,C语言中常常可以看到int a = 1这种表达式,可是Python中怎么没见到这些?回答这个问题,就得谈谈Python中的对象引用机制和动态类型。的确,Python使用变量的时候都没有声明变量的类型,这一点和C语言不同。但是,变量还可以工作,因为在Python中类型是在运行的过程中自动原创 2021-03-07 21:03:52 · 200 阅读 · 0 评论 -
07-一文理顺可迭代对象、迭代器与迭代环境
0.本集概览1.可迭代对象、迭代器、迭代协议究竟是什么2.迭代过程手动演示3.典型可迭代对象举例:文件、字典以及range、enumerate返回值4.使用迭代协议的逐项扫描工具可以称之为迭代环境5.迭代环境还包含很多可以传入可迭代对象的内置方法这一集的标题名称看起来比较绕,反反复复出现的是迭代二字。大家注意,这一节的内容很pythonic,是很有特色也非常重要的知识点。敲黑板啦!1.可迭代对象Python中有一类工具叫做迭代工具,他们能从左至右扫描对象。这包括了for循环、列表解析、i原创 2021-03-07 21:10:59 · 267 阅读 · 0 评论 -
08-生成器的使用技巧详解
0.本集概览1.生成器可以避免一次性生成整个列表2.生成器函数的运行过程解析及状态保存3.生成器表达式的使用方法4.生成器表达式的可迭代特性之前我们介绍了列表解析式,他的优点很多,比如运行速度快、编写简单,但是有一点我们不要忘了,他是一次性生成整个列表。如果整个列表非常大,这对内存也同样会造成很大压力,想要实现内存的节约,可以将列表解析式转换为生成器表达式。今天这一集,就单聊生成器。1.避免一次性生成整个列表避免一次性生成整个结果列表的本质是在需要的时候才逐次产生结果,而不是立即产生全部原创 2021-03-07 21:12:06 · 237 阅读 · 0 评论 -
09-函数的基本特征与变量作用域
0.本集概览1.函数也是对象2.函数的多态内涵3.变量的四种作用域4.函数变量的LEGB作用域搜索机制5.利用global关键字进行全局变量修改从这一集开始,我们分三集来讲讲函数。简而言之,一个函数就是将一些语句集合在一起的部件,它们能够不止一次的在程序中运行。函数还能计算出一个返回值,并能够改变作为函数输入的参数,而这些参数在代码运行时也许每次“代入”的值都不相同。函数是python为了代码最大程度的重用和最小化代码冗余而提供的最基本的程序结构。1.第一个简单完整的函数首先我们先学习一原创 2021-03-07 21:13:27 · 192 阅读 · 0 评论 -
10-函数参数的传递、修改、匹配与解包过程全解析
0.本集概览1.函数参数传递的实现过程2.可变对象和不可变对象参数传递、修改的区别3.如何避免参数传递的本地修改4.基于位置和关键字的参数匹配方法5.使用默认参数形式6.函数定义使用* 和** 进行任意数目参数收集7.函数调用时使用* 和** 进行参数解包今天我们再来说说函数中的参数传递问题。这个看上去自然而然的过程里其实很有讲究。1.参数的传递参数的传递是通过自动将对象赋值给本地变量名来实现的。在函数运行时,函数头部的参数名是一个新的、本地的变量名,这个变量名是在函数的本地作用域内原创 2021-03-07 21:14:29 · 297 阅读 · 0 评论 -
11-函数闭包与装饰器用法详解
0.本集概览1.嵌套作用域与闭包现象2.nonlocal关键字与内嵌作用域变量修改3.装饰器到底是什么4.装饰器的用法和语法糖5.装饰器如何添加额外参数回顾一下上一集所讲的,上一集里我们介绍了变量的LEGB索引机制:对一个变量,首先在本地(函数内)查找;之后查找嵌套函数的本地作用域,然后再是查找当前的全局作用域。1.嵌套作用域与函数闭包到目前为止,我们还有一个作用域没有介绍,就是嵌套作用域,即E,他是嵌套函数的本地作用域。1.1.嵌套函数**首先说说什么是嵌套函数。**Python有原创 2021-03-07 21:15:54 · 220 阅读 · 0 评论 -
12-异常的处理方式
0.本集概览1.异常的默认处理和主动捕获2.主动触发异常和自定义异常3.try、except、else、finally、raise关键字解析4.异常的处理流程5.try/except/else/finally组成的几种异常处理模式1.异常的处理方式没错,每当在运行时检测到程序错误时,Python就会引发异常。对待异常有两种方法:一是可以在程序中捕捉和响应错误;或者忽略已发生的异常。如果是忽略已发生的异常,Python默认的异常处理行为将启动:停止程序,打印出错消息。如果不想启动这种默认行原创 2021-03-07 21:16:57 · 261 阅读 · 0 评论 -
13-NumPy 函数包使用方法初步
0.本集概览1.NumPy数据类型的优势概述2.ndarray多维数组的创建与基本属性3.网格数据和范围数据的创建4.ndarray多维数组的维度转换、连接与标量计算通过第一季的学习,我们全面接触了Python这门有趣、有用的语言。做到了核心内容全覆盖,并且具备了一定的深度。相信掌握了他们,你已经跃跃欲试,想做点什么了,对吗?1.NumPy概述在这一季里,我们主要学习Python数据分析的一些常用的基本工具。我们首先要接触的是NumPy这个函数包,NumPy是Numerical Pytho原创 2021-03-20 10:40:40 · 226 阅读 · 0 评论 -
14-ndarray高维数组的索引和分片技巧
0.本集概览1.ndarray高维数组的索引与切片2.布尔索引与条件赋值3.指定行和列的选取1.ndarray数组的索引和切片1.1.一维数组的情况一维数组的相关内容非常简单,和我们之前讲过的python内置列表差不多,我们简单的浏览一下:代码片段:import numpy as nparr = np.arange(10) print(arr) print(arr[5]) print(arr[5:8]) 运行结果:[0 1 2 3 4 5 6 7 8 9] 5 [5原创 2021-03-20 10:43:04 · 280 阅读 · 0 评论 -
15-ndarray 基本运算方法解析
0.本集概览1.二维数组的转置与内积2.数组的元素级别运算3.条件逻辑运算where4.各轴向上的统计运算5.布尔数组的运算6.数组的就地排序这一集我们主要介绍NumPy中,关于ndarray数组的基本运算。1.二维数组的转置与内积二维数组的转置,这里先简单的提一下,这其实是线性代数的内容,我们后面介绍线性代数的内容时还会再提的。代码片段:import numpy as np arr = np.arange(15).reshape(5,3) print(arr) prin原创 2021-03-20 10:44:07 · 514 阅读 · 0 评论 -
16-NumPy简单统计方法举例
0.本集概览1.csv数据的读取2.利用常用函数获取均值、中位数、方差、标准差等统计量3.利用常用函数分析价格的加权均值、收益率、年化波动率等常用指标4.处理数据中的日期今天这一集,我们介绍一下NumPy库中的一些非常实用和常用的函数方法。1.应用背景要知道,NumPy的常用数学和统计分析的函数非常多,如果我们一个一个的分散来讲,一来非常枯燥,二来呢也记不住,就仿佛又回到了昏昏欲睡的课堂,今天我们用一个背景例子来串联一下这些零散的知识点。我们通过分析苹果公司的股票价格,来串讲NumPy的原创 2021-03-20 10:45:33 · 332 阅读 · 0 评论 -
17-Series数据对象使用方法概述
0.本集概览1.学习Pandas库的必要性2.Series可以视作带索引的增强版数组3.Series的索引基本操作4.Series的类字典特性在第二季的前面4集里,我们学习了NumPy库,从这一集开始,我们向Python数据处理的另一个库Pandas进发。Pandas是在Numpy的基础上建立的一个第三方程序库。1.学习Pandas库的必要性之所以在掌握了NumPy库之后还要学习和使用Pandas,是因为ndarray数据结构常常作用于那些常见的干净整齐、组织良好的数据,但是我们在实际工作原创 2021-03-20 10:46:41 · 325 阅读 · 0 评论 -
18-DataFrame数据对象使用方法概述
0.本集概览1.DataFrame是若干有序排列的Series对象2.DataFrame可以看作含有行索引和列索引的二维数组结构3.DataFrame可以看作是特殊字典,反应了列索引到Series的映射关系4.DataFrame的常见创建方法按照上一集的思路,今天我们继续学习Pandas的另一个基础数据结构DataFrame。我们按照前面的学习路线图,对DataFrame数据对象先进行一个全局性的概览。1.DataFrame是若干有序排列的Series对象如果说Series对象可以类比为带原创 2021-03-20 10:47:29 · 617 阅读 · 0 评论 -
19-Series对象的数据选取方法
0.本集概览1.类比字典,按照键-值的方法来进行取值2.类比数组,采用分片、条件掩码和花哨索引来取值3.采用索引器使得数值型索引的取值更清晰前两集里,我们概述了Pandas的基本数据对象,从这一集开始,我们结合这几种数据对象,按照专题,一步一步的综合推进。首先介绍Pandas中数据的选取方法,今天先介绍Series对象的数据选取方式。在之前的剧集中我们谈到过,Series和NumPy数组、Python字典在许多方面都有可比之处,那么我们就从这两个维度来类比Series数据对象的索引和获取。原创 2021-03-20 10:48:25 · 1445 阅读 · 0 评论 -
20-DataFrame对象的数据选取方法
0.本集概览1.对列标签进行字典形式的取值访问,获取Series对象2.使用字典语法进行列的扩充3.使用values属性,获取ndarray二维数组类型,可以使用相同操作方法4.loc、iloc、ix三种索引器,支持行和列的索引、分片灵活操作5.DataFrame的条件过滤操作6.DataFrame具体值的修改这一集,我们来说DataFrame对象的数据选取方法。同样,我们使用类比法进行学习,前面我们提到过,DataFrame可以看作是若干Series对象构成的字典,也可以看做是一个二维数原创 2021-03-20 10:49:22 · 561 阅读 · 0 评论 -
21-Series与DataFrame对象的数值运算
0.本集概览1.DataFrame和Series一元运算会作用于每一个数据元素2.DataFrame间和Sereis间的二元运算会自动对齐索引,并进行缺失值处理3.DataFrame和Series之间可以进行行、列两方向上的运算,同样会对齐索引介绍完Pandas对象的构造和数据获取,这一集,我们来说说Series和DataFrame类型的数值运算。1.一元运算作用于每一个数据元素首先说说一元运算,由于Pandas的底层是基于NumPy实现,所以自然而言一元运算会作用于Pandas数据类型的每原创 2021-03-20 10:50:04 · 603 阅读 · 0 评论 -
22-Pandas缺失值的处理技巧
0.本集概览1.Pandas中缺失值的表征方式及运算处理规则2.如何发现缺失值3.如何对缺失值进行丢弃处理4.如何对缺失值进行填充处理现实中的数据,往往不如我们在例子中演示的那般干净、整齐,经常会出现数据缺失的现象,今天这一集,我们就来说说Pandas中缺失值的处理方法。1.缺失值的表征方式python中采用一种NaN(Not a Number)标签来表示缺失值,NaN本质上是一种浮点数类型:代码片段:import pandas as pdimport numpy as npva原创 2021-03-20 10:50:43 · 268 阅读 · 0 评论 -
23-Pandas多级索引的创建方法
0.本集概览1.带多级索引的Series数据类型2.多级索引Series对象和DataFrame对象的相互转化3.带多级索引的DataFrame数据类型4.多级索引的创建方法5.多级行索引和多级列索引举例1.多级索引的Series类型之前的几集里,我们使用了Series数据类型表示一维数据(即仅有一个索引列),用DataFrame类型数据表示二维数据(即包含行索引和列索引这两维索引数据)。但是如果是下面这种情况呢?比如我们用Series来表示美国不同的州、不同年份的人口数据,这对Seri原创 2021-04-03 10:06:19 · 372 阅读 · 0 评论 -
24-多级索引Pandas对象的取值、分片与运算方法
0.本集概览1.Pandas数据类型多级索引的取值方法2.Pandas数据类型多级索引的分片方法3.多级Series与DataFrame的转换4.多级DataFrame的行列统计接着上一集,说说多级索引下Pandas数据类型的取值方法。1.多级索引的Series其实我们只用紧紧抓住一条:多级索引本质还是索引!就是和之前介绍的Series、DataFrame相比,在原来的基础上增加了索引的数据维度。1.1.多级索引下的取值方法更直观的,我们举Series的例子来看,继续使用上一集中用到的原创 2021-04-03 10:08:53 · 414 阅读 · 0 评论 -
25-Pandas对象的简单数据合并
0.本集概览1.Pandas数据对象按行、列两个维度进行拼接的方法2.对象拼接合并时,行索引相同时的处理方法3.对象拼接合并时,对列进行处理的方法之前的几集,我们都是针对单一的Pandas数据结构进行操作,那么这一集开始,我们重点讨论如何对多个Pandas数据对象进行数据连接。这一集我们讨论如何利用concat方法进行简单的数据拼接。1.按行维度进行拼接代码片段:import pandas as pdser1 = pd.Series(['A','B','C'], index=[1,2,原创 2021-04-03 10:10:48 · 158 阅读 · 0 评论 -
26-Pandas数据合并中的关系代数和集合操作
0.本集概览1.DataFrame数据连接中的一对一连接、多对一连接和多对多连接2.指定DataFrame合并列的方法3.DataFrame对象合并列中存在索引列的处理方法4.DataFrame对象连接过程中的内连接、外连接、左连接和右连接5.重复列名问题的处理DataFrame是一种表格型的数据,他的每一个数据行表征着具备各列属性值的一个实体对象,类似关系型数据,而关系代数就是处理这类关系数据的方法基础。这一集我们首先就来探讨数据连接的关系代数:一对一连接、多对一连接和多对多连接。1.原创 2021-04-03 10:13:12 · 280 阅读 · 0 评论 -
27-GroupBy使用方法(上篇):实现分割、应用和组合
0.本集概览1.GroupBy的使用场景和使用方法2.GroupBy分割、应用和组合的操作内涵3.GroupBy对象的遍历1.GroupBy的使用场景和使用方法今天这一集我们开始介绍Pandas中对数据进行处理的一个高逼格的方法:GroupBy。我举一个使用场景,科学家用不同的测量方法,测出了行星的质量、距离、轨道周期等等,就如同下面的代码所示:代码片段:import seaborn as snsplanets = sns.load_dataset('planets')print(pl原创 2021-04-03 10:15:09 · 257 阅读 · 0 评论 -
28-GroupBy使用方法(下篇):累计、过滤、转换与应用
0.本集概览1.GroupBy的累计、过滤、转换和应用功能2.GroupBy分组键的自定义3.索引名称的别名索引上一集里,我们对GroupBy的概念和运行机理进行了重点介绍,这一集在之前的基础上,我们要重点介绍他的一些核心方法,围绕累计、过滤、转换和应用这四个层面。光说这几个词未免显得空洞,那么我们还是一个一个来举例说明:这一集里我们所有的操作对象都是这个DataFrame数据对象:代码片段:import numpy as npimport pandas as pdrng = np原创 2021-04-03 10:17:33 · 259 阅读 · 1 评论 -
29-数据透视表的使用方法
0.本集概览1.透视表的基本使用2.透视表实现高维度的行列分组3.透视表实现多属性观察及自定义统计函数这一季里,各种表啊什么的可真多啊,这又是什么鬼~1.透视表的使用背景我先不说透视表是啥,我还是先说一个问题,我们这一集举泰坦尼克号的乘客信息这个经典数据。代码片段:import numpy as npimport pandas as pdimport seaborn as snstitanic = sns.load_dataset('titanic')print(titanic原创 2021-04-06 22:02:08 · 266 阅读 · 0 评论 -
30-matplotlib数据可视化之线形图绘制
0.本集概览1.指定单条、多条函数线形图的绘制2.图形标签(图形标题、坐标轴标题、图例)的完善3.图形颜色、线型的设置4.子图的绘制在前面,我们介绍了NumPy和DataFrame的相关内容,那我们就在想了,通常我们喜欢用图的形式来表征数据,这样会更加直观,Matplotlib.pyplot包中含有简单绘图功能,那么从今天起,我们就开始学习这里面的绘图内容。1.简单线形图的绘制首先,话不多说,我们先弄出一个图形来。画一个最简单的三角函数图形 y=sin(x)y=sin(x)y=sin(x)原创 2021-04-06 22:04:11 · 919 阅读 · 0 评论 -
31-matplotlib数据可视化之绘制子图
0.本集概览1.一般化的子图布局及绘图2.用plt.subplot/subplots方法绘制子图3.子图之间共用坐标轴的用法4.GridSpec绘制不规则多行多列子图的方法及举例今天我们深入的探讨一下子图的有关内容。有时候我们需要从多个角度进行数据的比较、分析,因此就需要用到子图。 子图的本质是在一个较大的图形中同时放置一组较小的坐标轴,布局形式可以多种多样,不拘泥于我们在第五集中举的那种网格图的形式。1.一般化的子图布局我们先进行一般化的子图布局。首先要创建各个子图的坐标轴,传入一个原创 2021-04-06 22:08:49 · 369 阅读 · 0 评论 -
32-matplotlib数据可视化之坐标轴与主次刻度用法详解
0.本集概览1.剖析plt和坐标轴对象ax的关系2.主刻度与次刻度的概念3.格式生成器与定位器的概念4.数值型主次刻度与自定义格式生成器函数举例5.日期型主次刻度举例这一集,我们专门来谈谈坐标轴的有关内容。1.plt和坐标轴对象ax的关系先看以下两段代码,他们实现的是同样的功能:绘制正余弦两个子图:代码一:import numpy as npimport matplotlib.pyplot as pltx = np.linspace(0,10,1000)plt.subplot原创 2021-04-06 22:13:14 · 1027 阅读 · 0 评论