numpy索引和切片
numpy索引和切片
轴:
在numpy中可以理解为方向,使用0,1,2...数字表示,对于一个一维数组,只有一个0轴,对于2维数组(shape(2,2)),有0轴和1轴,对于三维数组(shape(2,2, 3)),有0,1,2轴
二维数组的轴:
三维数组的轴:
numpy读取数据
csv:逗号分割值文件
numpy中的转置
转置是一种变换,对于numpy中的数组来说,就是对角线方向交换数据,目的也是为了更方便处理数据
转置方法:(1)transpose();(2)T;(3)swapaxes(1,0)
数组的形状
数组的计算
广播原则
如果两个数的后缘维度(即从末尾开始算起的维度)的轴长度相符或者其中一方的长度为1则认为它们是广播兼容的、广播会在确实和(或)长度为1的维度上进行
什么是numpy?
numpy是用来帮我们处理数值型数据的模块,躲在大型、多维数组上执行数值运算
为什么要学习numpy?
(1)快速
(2)方便
(3)科学计算的基础库
一般来说,plt.hist()方法传入的参数为原始数据和数组,但是当给出的数据均为统计过后的数据时,该方法就失效了,需要通过条形图的方式来转换成直方图。
直方图
纵向直方图用bar,width表示直方图线条的粗细;横向直方图用barh,height表示直方图线条的粗细
发现问题找源码ctrl+B
散点图的更多应用场景
1、不同条件(维度)之间的内在关联关系;
2、观察数据的离散聚合程度
1、绘制折线图——plt.plot
2、设置图片大小和分辨率——plt.figure(figsize(20,8), dip=80)
3、实现了图片的保存——plt.savefigure
4、设置了xy轴上的刻度和字符串——xticks(如果要将刻度转换为中文字符串,必须使得x和_xticks_labels保持一一对应的关系)
5、解决了刻度系数和密集度的问题——xticks/yticks(直接用range的话,刻度无法是小数,只有整数形式,可以强制转换为list以后做推导式或切片操作)
6、设置了标题,xy轴的lable——plt.title/xlabel/ylabel
7、设置了字体——matplotlib模块里面的font_manager 上面的 FontProperties 进行设置,windows系统里的字体通过控制面板进行查找字体,右击字体选择属性即可看到地址和名称以及格式;
8、在一个图上绘制多个图形(plt多次plot即可)
9、为不同的图形添加图例——第一步在两个折线里面设置label参数,然后通过plt.legend(prop = my_font, loc="(设置位置)")
以上都很重要
如果需要其他图形,可以在百度搜索matplotlib
选择example,找到想了解的图像,点击进去有对应的代码
各种图形之间的对比
we can do more:
1、设置图片大戏小;
2、保存到本地;
3、描述信息,比如x轴和y轴表示什么,这个图表示什么;
4、调整x或y的刻度间距;
5、线条的样式;
6、标记出特殊的点(告诉别人最高点和最低点在哪里);
7、给图片添加一个水印(防伪,防盗)
二、matplotlib
·为什么要学习matplotlib?
1、能够给将数据进行可视化,更直观的呈现;
2、使数据更加可观、更具有说服力
·什么是matplotilib?
最流行的python底层绘图库,主要做数据可视化图标,名字取材于matlab,模仿matlab构建
·matplotlib基本要点
每创一个项目的时候,都可以建一个环境
一、 数据分析导论
1.概念
什么是数据分析?——用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,一边采取适当行动。
2、数据分析的流程
提出问题—>准备数据—>分析数据—>获得结论—>成果可视化
mro()函数
python支持多继承,如果多个父类有相同名字的方法,在没有指定父类的时候,解释器将“从左到右”按顺序搜索
mro():方法解析顺序。我们可以通过mro()方法来获得“类的层次结构”,方法解析顺序也是按照这个累的层次结构寻找的
多重继承
一个子类可以有多个直接父类
好处:可以使我们类具备多个“父类”的特点
坏处:类的整体层次异常复杂,尽量避免使用
重写__str__()方法
object有一个__str__()方法,用于的返回一个对于“对象的描述”,对应于内置函数str()经常用于print()方法,帮助我们查看到对象的信息
object根类__dir__()
通过类的方法mro()或者类的属性_mor_可以输出这个类的继承层次结构
object类是所有类的父类,所有的类都有object类的属性和方法
类成员的继承和重写
1、成员继承:子类继承了父类除构造方法之外的所有成员
2、方法重写:子类可以重新定义父类的方法, 这样就覆盖父类的方法,也称为“重写”
1、继承
是代码复用的重要手段
一个子类可以继承多个父类
语法格式:
class 子类(父类):
类体
如果没有指定父类,默认父类是object类
object类是python里的一个类,object是所有类的父类,里面定义了一些多有类共有的默认属性,例如__new__()
面向对象的三大特征介绍
1、封装(隐藏)
隐藏对象的属性和实现细节,只对外提供必要的方法。通过“私有属性和私有方法”等方式来实现封装,没有严格的语法级别的“访问控制”,更多的是靠程序员的自觉实现
2、继承
让子类继承父类的特性,提高了代码的重用性,是一种增量进化
3、多态
同一个 方法调用由于对象不同会产生不同的行为。
@property装饰器
1、将一个方法的调用方式变成“属性调用”;
2、一般用来给我们的属性设置get和set方法;
当我们的属性可以直接被外部调用的时候,很容易出现录入错误数据并输出错误数据的现象
这个时候,为了解决这个问题,我们可以先将属性私有化