数据基础总结
一 ipython
1 魔法指令 记录算法的时间
%time %%time 记录单行 多行的时间
%timeit %%timeit 记录一段代码运行n次取平均值
2 帮助文档
help()
指令?
3 查看当前变量
who 查看当前所有变量
whos 查看当前所有变量的详细信息
who_ls 把当前所有变量以列表返回
4 运行LINUX指令
!
5 运行windows指令
%
二 numpy
1 构造函数
1.np.array(list)列表可以事多维的
2 np.ones() np.zeros() np.full(shape,fill_value,dtype)
dtype 要使用Numpy的数据类型 np.int8 np.float32
3 np.eye(N M K)
4np.linspace(start,stop,num) np.arange(start ,stop,steep)
5 np.random.randint( low,high,size)
6np.random.randn(d0,d1,d2) np.random.normal(loc,scale,size)
7 np.random.random(size)
2 ndarray属性
1 size
2 shape
3 ndim
4dtype
3 索引
1 arr[loc1,loc2,loc3……]
4 切片
1行切片 arr[loc1:lpc2]
2列切片 arr[:,loc1:loc2]
3高维切片 arr[:,:,loc1:loc2]
5 编写
1,arr.reshape(tuple) 变形时 size必须相同
6 级联
1 np.concatenate((arr1,arr2,……),axis)
2注意 再级联的维度上 数据的个数必须一致
3 横向级联 np.hstack((arr1,arr2,……)) 纵向级联 np.vstack
7 切分
1.np.split(indicates_of_sections)
1 在切分的维度上,能整除 可以设置一个整数 表示按该整数等分
2 设置一个[m,n] 表示在该维度上,按照0-m,m-n,n-切分
2 np.hsplit() np.vsplit() 横向切分 纵向切分
8 副本
1 copy 深拷贝
9 聚合
1 聚合默认以整个数组为单位的 注意使用axis 来控制维度
2 普通聚合 arr.sum() arr.mean() std()
np.meadian(arr) 求一个arr的中位数
可以求出一个集合的整个指标
3 空值聚合 np.nansum() np.nanmean()
10 矩阵操作
1 普通±*/
2 矩阵乘法 np.dot(arr1,arr2)
11 广播机制
1 缺失维度补1
2 用已有值填充新值
3 不是所有的numpy对象运算都可以广播 通过一次变形 可以得到相同形状 才能广播
12 排序
1 np.sort() arr.sort() 全部排序
2 np.partion(arr,k) 取k个最小值 或最大值
3 冒泡排序 快速排序 选择排序
三 Series
1创建
1 列表创建 创建的事副本
2 numpy.array 创建 创建的事引用
3 字典创建 字典的键会成为Series的索引
4Series(data,index)
2 索引
1 使用列表的访问 s[index]
2 使用字典的方式访问 s[key]
3 使用Series方式访问 s.loc[key] s.iloc[index] 推荐使用这种办法
3 切片
1 使用索引标签(左必有闭区间) s[key1:key2]
2 使用隐式索引切片(左闭右开区间) s.iloc[loc1:loc2]
4 基本概念
1 基本属性 shape size index values
2 函数 head() tail() isnull() notnull()
3 name属性 表示series对象在dataframe中的列表签
5 运算
1 索引对齐 如果不对齐 补充np.nan
2 add() sub() mul() div() 可以对填充空值做其他处理
3 支持广播
四pandas
1 创建
1 DataFrame(data,index,columns)
2 使用字典构造 一般字典的值事一个数组 成为DataFrame的一列
3 构造一个空字典 在分别赋值每一列数据
4 从文件读取一个DataFrame对象
5 pd.read_csv(step="",headers=[]) step 设置分隔符 headers 设置表头
2 索引
1 字典访问 访问一列df[column]
2 想访问行 df.loc[index]
3 df.loc[index,column] 访问元素
4 其他访问方式 都属于间接访问 只读不写 补改变原来的
5 隐式访问 df.iloc[indexloc,columnloc]
3 运算
1 DataFrame 和 DataFrame运算 索引对齐 不对齐补充空值
2 DataFrame 和 Series运算 注意行列方向 add(axis) sub()
3 DataFrame和整数运算
4 丢失值处理
1 NaN np.nan 和任何数运算都得np.nan
2 np.nan事一个np.float32类型 运算效率高 None是一个object类型 不能运算 需要处理成np.nan才能运算
3 pands会自动把None类型转换成np.nan类型
4 fillna(fill_value,method,axis,limit)
1 fill_value填充的值
2 method 填充方式 不能和fill_value一起使用 bfill ffill
5 dropna(how)
1 how any\all any 有一个空值就过滤一行或一列 all 所有值都为空就过滤
6 drop(labels,axis)
1 labels 要过滤的行或列表签
2 axis 控制方向
五
1 复杂pandas类型 (多层级索引)
1 构造函数
1 pd.Mulltindex_form_array([[1,1,1],[a,b,c]])
2 pd.Mrlltindex_form_tuples()
3 pd.Mulltindex_form_product([[1,2],[a,b,c]])
2 索引
1 可以使用(level1 index1 ,level2 index2)
2 访问行多级索引的行 df.loc[(level1_index,livel2_index)]
3
3 切片
1 如果只是访问 先把多级索引 变为一极索引 再访问
2如果涉及到写入 借助隐式索引访问 或者做stack unstack 变换再切片
2 级联
1 pd.concat(objs,axis,join_axes,ignore_index,keys)
objs 级联的对象列表
axis 控制级联的方向
join inner 内连接 取交集 只保留共同的索引
outter 外连接 取并集 保留所有索引
join_axes 指定索引进行级联 lift.index 左连接 right.index 右连接 index([A,B])自定义连接标签
ignore-index 重排索引 (索引没有保留价值可以使用)
keys 如果希望保留重复索引 可以设置分区 变成多层级索引
3 合并
pd.merge()
1 lift\right 只能使用两个表合并
2left_on\right_on 当两个表中 合并的参考列的标签不相同时 用来指定列表签
3 left_index\right_index 当某个表希望以行索引作为合并参考列时使用
4 on 两个表中有多列相同的列表签 可以使用on来指定哪一列或那几列作为合并参考列
5 suffiexes 用来指定列表签相同但是不参与和并参考的列的后缀 通常和on参数一起使用
合并的一些注意事项
1 合并参考列来进行
2 如果两个表中两列数据满足一对一 一对多 多对多的关系的一种 就可以作为合并参考列
3 合并时 尽量使用离散型数据的列作为合并项
六
1删除重复元素
1 检测重复值 df.duplicated(keep=“first\last”) 只能删除行 要想删除列 要借助drop函数
2 删除重复值 df.drop_duplicates(keep=first\last)
2映射
1 replace(to_replace,value,inplace) 替换数值
1 to_replace; 一个值(单值替换) 列表(多值替换) 字典(多值替换 指定列替换)
2 value;一个值(单值替换,指定列替换) 一个列表(多值替换)
3 inplace True 修改输入 默认不修改
2 rename() 替换索引
1mapper 字典={要查找的值:要替换的值,……}
2 index 字典 替换行索引
3 columns 字典 替换列索引
4 level 指定多级索引的层级
3map() 映射一列
1 字典 一般用于离散型数据处理
1 键值对多 无所谓
2 键值对少 dict.get(x,x)
2 lambda
处理简单数学 业务逻辑
3function
处理 复杂业务逻辑
3异常值检测和过滤
1 空值检测 isnull().any(aixs)
2 异常值检测 : (df>4).any(axis)
3 df.drop(labels = 异常值的索引)
4 df.description() df.info() df.dtypes 常用的参考函数
4排序
1 随机排序 take(np.random.permutation(10))
2 随机抽样 take(np.random.randint(0,100,5))
3 df.sort_values(labels) 根据某一列的值进行排序
4 df.set_index(column_name) 把某一列数据设置为行索引 然后再绘图展示
5数据分组
1 groupby() 接受一个列表签或列表签列表 表示根据那一列或那几列做数据分组
作为分组的列最好时离散型数据 不要使用连续性数据
2 groups()
1 用来查看分组情况 返回一个字典 字典里每一个键值对(该列的某一个内容:该内容对应的行索引列表,}
3 聚合操作
1 通常会使用分组对象进行聚合处理 g = df.groupby([“item”])
2 g.sum() g.mean() g.agg({“price”:“mean”,……})
6 高级聚合
1 apply() 返回一个分组Series 适合于原始表做合并
2transform() 返回一个不分组的Series 行索引于原始表对齐 所以适合于原始表做索引
七 Scipy
1 scipy
1 傅里叶变化 fftpackage.fft2 ifft2 应用于滤波操作
2 图形处理 misc ndimage
1 misc
1 misc.face(gray=True)
2 misc.imrotate()
3 misc.imresize()
4misc.imfillter()
2 ndimage
1 ndimage.rotate()
2 ndimage.zoom()
3 ndimage.shift()
4 中值滤波 高斯滤波
3 维纳滤波 singnal
3数学运算 积分函数
1 scipy.integrate.quad(func,a,b)
4 文件输入输出 scipy.io
1 io.savemat()
2 io.loadmat()
2 绘图
matplotlib.pyplot
%matplotlib inline
1 画板
1 figure = plt.figure(figsize=(),facecolor=())
2图片保存 figure.savefig(facecolor)
2 画布
1 axes = figure.add_subplot(1,1,1)
2 axes = plt.subplot(1,1,1)
3 画布标题
1 axes.set_title()
2 plt.title()
4画布网格线
1 axes.grid(linewidth,color,alpha,axis=‘x,y,both’)
2 plt.grid()
5 坐标轴
1 axes.axis(‘off’)
2 axes.axis(‘equal,scaled’)
6 坐标轴标签
1 axes.set_xlabel() axes.set_ylabel
2 plt.xlabel(fontdict={}) plt.ylabel(fontsize,color,rotation)
7 坐标轴刻度
1 plt.xlim() plt.ylim() 上下边界设置
2 axes.set_xlim() axes.set_ylim() 上下边界设置
3.axes.xticts([刻度列表],[标签列表]),axes.yticts([刻度列表],[标签列表])
4 axes.set_xtickets() axes.set_ytickets() 只能设置刻度
8 坐标轴刻度标签
1 axes.set_xticklabels() axes.set_yticklabels()
9 绘制曲线
1 axes.plot(x,y)
2 plt.plot(x,y)
10 线的外观设置
1 linewidth
2color
3linestyle
4dashes
5marker
6markersize
7markeredagecolor
8markderfacecolor
9markeredagewdith
11 获取线对象
1 lines = plt.plot(x,y1 , x,y2 , x ,y3)
2 lines[0].set_linewidth()
3 lines[0].set_color()@TOC
欢迎使用Markdown编辑器
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计 ,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
- 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的 KaTeX数学公式 语法;
- 增加了支持甘特图的mermaid语法1 功能;
- 增加了 多屏幕编辑 Markdown文章功能;
- 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了 检查列表 功能。
功能快捷键
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
如何改变文本的样式
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
设定内容居中、居左、居右
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
创建一个自定义列表
-
Markdown
- Text-to- HTML conversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为 HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
新的甘特图功能,丰富你的文章
- 关于 甘特图 语法,参考 这儿,
UML 图表
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::
这将产生一个流程图。:
- 关于 Mermaid 语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart的流程图:
- 关于 Flowchart流程图 语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎