Date_Analysis
1.环境安装
1.安装Anaconda,进入官网https://www.anaconda.com/
Anaconda集成了当前系统下,大多数Python的模块库,包含了1500+/R的用于科学技术的数据包,是一个环境集。conda工具,便于管理依赖库及创建虚拟环境
anaconda2常用于python2 anaconda3常用于python3.7及以上
按住window +R,输入:cmd,点击回车。试着运行下面代码:
接着执行:
2.jupyter notebook基本操作
进入到需要的文件夹里,启动jupyter notebook命令:
jupyter notebook
新建笔记
什么是IPython
在线文档+Python环境,演示如下:
命令行模式下快捷键大全:
F: 查找并且替换
Ctrl-Shift-F: 打开命令配置
Ctrl-Shift-P: 打开命令配置
Enter: 进入编辑模式
P: 打开命令配置
Shift-Enter: 运行代码块, 选择下面的代码块
Ctrl-Enter: 运行选中的代码块
Alt-Enter: 运行代码块并且插入下面
Y: 把代码块变成代码
M: 把代码块变成标签
R: 清除代码块格式
1: 把代码块变成heading 1
2: 把代码块变成heading 2
3: 把代码块变成heading 3
4: 把代码块变成heading 4
5: 把代码块变成heading 5
6: 把代码块变成heading 6
K: 选择上面的代码块
上: 选择上面的代码块
下: 选择下面的代码块
J: 选择下面的代码块
Shift-K: 扩展上面选择的代码块
Shift-上: 扩展上面选择的代码块
Shift-下: 扩展下面选择的代码块
Shift-J: 扩展下面选择的代码块
A: 在上面插入代码块
B: 在下面插入代码块
X: 剪切选择的代码块
C: 复制选择的代码块
Shift-V: 粘贴到上面
V: 粘贴到下面
Z: 撤销删除
D,D: 删除选中单元格
Shift-M: 合并选中单元格, 如果只有一个单元格被选中
Ctrl-S: 保存并检查
S: 保存并检查
L: 切换行号
O: 选择单元格的输出
Shift-O: 切换选定单元的输出滚动
H: 显示快捷键
I,I: 中断服务
0,0: 重启服务(带窗口)
Esc: 关闭页面
Q: 关闭页面
Shift-L: 在所有单元格中切换行号,并保持设置
Shift-空格: 向上滚动
空格: 向下滚动
编辑模式下
编辑模式(按 Enter 生效)
Tab: 代码完成或缩进
Shift-Tab: 工具提示
Ctrl-]: 缩进
Ctrl-[: 取消缩进
Ctrl-A: 全选
Ctrl-Z: 撤销
Ctrl-/: 评论
Ctrl-D: 删除整行
Ctrl-U: 撤销选择
Insert: 切换 重写标志
Ctrl-Home: 跳到单元格起始处
Ctrl-上: 跳到单元格起始处
Ctrl-End: 跳到单元格最后
Ctrl-下: 跳到单元格最后
Ctrl-左: 跳到单词左边
Ctrl-右: 跳到单词右边
Ctrl-删除: 删除前面的单词
Ctrl-Delete: 删除后面的单词
Ctrl-Y: 重做
Alt-U: 重新选择
Ctrl-M: 进入命令行模式
Ctrl-Shift-F: 打开命令配置
Ctrl-Shift-P: 打开命令配置
Esc: 进入命令行模式
Shift-Enter: 运行代码块, 选择下面的代码块
Ctrl-Enter: 运行选中的代码块
Alt-Enter: 运行代码块并且插入下面
Ctrl-Shift-Minus: 在鼠标处分割代码块
Ctrl-S: 保存并检查
下: 光标下移
上: 光标上移
按ESC,就会从编辑模式切换到命令行模式
### 命令行模式的快捷键
--ctrl + enter 运行
--alt+ enter 在下面插入新行
--l 打开或关闭行号
--b 当前cell下方新插入一个cell
--a 当前cell上方新插入一个cell
--m 当前cell单元转化为markdown标签文档
--y 当前文档标记的单元cell 转化为code代码单元
--dd 删除当前的Cell单元
按Enter,就会从命令行模式切换到编辑模式
### 编辑模式的快捷键
- tab 键 缩进
-ctrl + [ 向左缩进(取消缩进)
-ctrl + ] 向右缩进
-shift + tab 提示 (在PyCharm里面提示python代码函数的参数用 ctrl+p)
演示案例:
3.numpy
新建文件day_one_numpy
什么是numpy,关于用Python去做数学的操作
Numpy系统是Python的一种开源的数值计算扩展 |
优势:一个强大的N维数组对象Array |
比较成熟的(广播)函数库 |
用于整合C/C++和Fortran代码的工具包------>numba计算加速 |
实用的最优化、积分、插值、线性代数、傅里叶变换和随机数生成函数 |
numpy和稀疏矩阵运算包scipy配合使用更加强大 |
### 数组转化的数据类型优先级
int<float<str
如果都是整型,转化完都是整型
如果有一个是小数类型,转化完都是小数类型
如果列表中既有整数,又有小数,还有字符串类型,则最终转化的结果为字符串类型
创建数组的方式,除了使用np.array(),还可以使用np的函数创建
演示:
总结:
### 创建新数组的方式
### 创建新数组的方式
- np.ones(shape,dtype,order)
- np.full(shape,fill_value,dtype) # 填充其他数
- np.eye(N,M=None,k=0,dtype=None) # 对角线
- np.linspace(start,end,num=50,endpoint=True,dtype=None)
- np.arange(([start,] stop[, step,], dtype=None))
- np.random.random(size=None)
- np.random.randint(low,high,size=None)
- np.random.randn(d0,d1,...dn)
- np.random.seed(seed=10)
演示:
4.数组的属性
### 数组的属性
- dtype 数组 (内元素)的类型
- size 数组的长度(元素的个数)
- shape 数组的形状,是tuple
- ndim 数组的维度
### ndarray的索引
- 索引从0开始 [index] 或 [行索引]
- 多维数组的索引操作,[行索引,列索引], 在多维数组中,索引是从外轴开始的。外轴可以理解为从外到内。
- 连续的索引操作,即切片操作 [行起始索引:行结束索引:步长, 列起始;列结束:步长]
- 默认的起始索引为0,结束索引为最后一个(包含最后一个)(长度),步长为1
- [:3] 查看前三行,这种写法不包含结束位置 同Python中的list相同
- [1:] 查看从第二个开始,到最后,包含结束位置
演示:
### 变形操作
- reshape(shape=)注意 变形前后的shape不变
### 转置操作
- 将行和列倒转,即行和列互换,原行转变为列,原列转变为行
- .T
- .transpose()
### 数组级联操作
- np.concatenate(objs,axis=0)
- np.hstack() 水平级联
- np.vstack() 垂直级联
演示:
演示:
演示:
### 切分
- np.split(arr,indeces,axis=0)
- np.hsplit()
- np.vsplit()
演示:
演示:
演示:
### 副本
- .copy()
演示:
### 聚合操作
- sum()
- mean()
- max()
- min()
- std() # 标准差
演示:
演示:
### 数值的算术运算
- 加(+)、减(-)、乘(*)、除(/)、取整(//),取余(%)
### 矩阵运算
- .dot()
演示:
演示:
当一个数值和一个常数相加时,就引出了ndarray 广播机制
### ndarray 广播机制的两条规则
- 规则一:为缺失的维度补1
- 规则二:假定缺失元素,用已有值填充
演示:
演示:
演示:
演示:
### 矩阵运算
- 左矩阵的列数要和右矩阵的行数必须保持一致
注意:
第一行第一个数18是 1*2+2*5+3*2 a的第一行×b的第一列
第一行第二个数32 是 1*4+2*2+3*8 a的第一行×b的第二列
第一行第三个数31 是1*8+2*7+3*3 a的第一行×b的第三列
...
第二行的第一个数27是 1*2+3*5+5*2 a的第二行×b的第一列
第二行的第二个数50是 1*4 +3*2+5*8 a的第二行×b的第二列
...
第三行的第一个数36是 2*2+4*5+6*2 a的第三行×b的第一列
第三行的第二个数64是 2*4+4*2+6*8 a的第三行×b的第二列
...
第四行的第一个数54是3*2+6*5+9*2 a的第四行×b的第一列
第五行的第二个数96是3*4+6*2+9*8 a的第四行×b的第二列
第一行第一个数18是 1*2+2*5+3*2 a的第一行×b的第一列
第一行第二个数32 是 1*4+2*2+3*8 a的第一行×b的第二列
第一行第三个数31 是1*8+2*7+3*3 a的第一行×b的第三列
...
第二行的第一个数27是 1*2+3*5+5*2 a的第二行×b的第一列
第二行的第二个数50是 1*4 +3*2+5*8 a的第二行×b的第二列
...
第三行的第一个数36是 2*2+4*5+6*2 a的第三行×b的第一列
第三行的第二个数64是 2*4+4*2+6*8 a的第三行×b的第二列
...
第四行的第一个数54是3*2+6*5+9*2 a的第四行×b的第一列
第五行的第二个数96是3*4+6*2+9*8 a的第四行×b的第二列