机器学习 三剑客 之 pandas + numpy
机器学习
什么是机器学习?
机器学习是从数据中自动分析获得规律(模型),并利用规律对未知数据进行预测
机器学习存在的目的和价值领域?
领域:
医疗、航空、教育、物流、电商 等。。。
目的:
让机器学习程序替换手动的步骤,减少企业的成本也提高企业的效率
jupyter lab语法使用
jupyter lab安装
命令:pip install jupyterlab
接下来了解下机器学习三剑客的前两位 numpy + pandas 的使用
一、区别
Numpy:是数值计算的扩展包,它能高效处理N维数组,复杂函数,线性代数.
Panadas:是做数据处理。市python的一个数据分析包,
二、简介
1)NumPy:N维数组容器
Numpy专门针对ndarray的操作和运算进行了设计,所以数组的存储效率和输入输出性能远优于Python中的嵌套列表,数组越大,Numpy的优势就越明显。Numpy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。据说NumPy将Python相当于变成一种免费的更强大的MatLab系统。
1.ndarray的优势
NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。
一、内存块风格:
这是因为ndarray中的所有元素的类型都是相同的,而Python列表中的元素类型是任意的,所以ndarray在存储元素时内存可以连续,而python原生lis就t只能通过寻址方式找到下一个元素,这虽然也导致了在通用性能方面Numpy的ndarray不及Python原生list,但在科学计算中,Numpy的ndarray就可以省掉很多循环语句,代码使用方面比Python原生list简单的多。
二、ndarray支持并行化运算(向量化运算)
三、Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码。
2.Pandas:表格容器
pansdas是基于Numpy的一种工具,该工具是为了解决数据分析任务而创建的,。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量快速便捷地处理数据的函数和方法。使Python成为强大而高效的数据分析环境的重要因素之一。
---------------------
作者:愤怒的马农
来源:CSDN
原文:https://blog.csdn.net/weixin_43407092/article/details/89575559
版权声明:本文为博主原创文章,转载请附上博文链接!
numpy
模块导包
import numpy as np导入
numpy起别名为np
列举表格数据
pandas : 读取工具
numpy:释放了GIL锁真正实现了多线程
一些库运行的比较快或计算能力强,一部分原因就是因为
numpy
GIL锁历史遗留问题
cpython加了GIL锁jpython没有GIL锁,(常用)所以不存在遗留问题
数据类型 -----> numpy.ndarray
维度数据
np.arange(1000)# 遍历 与for循环range相同作用 生成1-999数据np.array([1,2,3])# 一维数据np.array([[1,2,3],[11,22,33]])# 二维数据np.array([[[1,2,3],[11,22,33]]])# 三维数据
维度
维度相当于,多层内包含列表(数组)的数据
超过一维单独存在数据,默认为一维
父级每多一层,维度加一
单个子级每多一层,单个维度层级加一
查看维度详情
语法:----->
结果变量.shape如结果 array([1, 2, 3])
表示一维3个,二维2个,三维1个数据
查看数据维度是几维
语法:----->
结果变量.ndim结果 是管与结果是几维的 维度数字
改变维度
语法:----->
结果.reshape(数值1,数值2)结果 变为二维 结果为:一个大列表,数值1个数的子列表,子列表内数值2个数的数据
小总结:可根据需求维度设置多个参数,() 内参数总个数是维度,每个参数依次是每个维度的数据个数
生成数据
生成正太分布数据
语法:----->
np.linspace(起始值,结束值,生成几个数值)在区间内(括号内前两个参数)生成几个数,间隔区间大小相同,并且都是float64(浮点)类型
把
均值为0方差为1的数据分布称为标准正态分布例
np.random.normal(loc=0,scale=1,size=(2000,3000))
正太分布数据
np.random.randn(10)
生成指定维度,数据随机
语法:----->
np.random.rangint(0,15,size=(5,3))区间0~14,维度详情指定二维,二维数据5组,一维3组
手写指定维度
语法:----->
np.array([[1,2,3],[11,22,33],[1,2,3],[11,22,33],[1,2,3]])二维 5*3 数据
遍历改变维度,生成指定维度
语法:----->
np.arange(12).reshape(4,3)遍历数值,然后改变维度 二维 4*3数据
随机种子,固定随机值
np.random.seed(10)# 固定的随机值必须是随机数区间内的数值,不然无效a = np.random.randint(10,20,size=(5,3))# 每个 一维数据内 能生成一个固定随机值
输出展示详情,分析变化
print('维度:{}'.format(a.ndim))print('大小:{}'.format(a.size))print('尺寸:{}'.format(a.shape))
求值
平均值
语法:----->
np.mean(结果变量)
绝对值
语法:----->
np.abs(结果变量)
数量值
语法:----->
count()
索引值
计算能获取到最大值和最小值的索引(整数)
语法:----->
argmax和argmin
计算能获取到最大值和最小值的索引
语法:----->
idmax和idmin
求和
语法:----->
np.sum(结果变量)
最大值
语法:----->
np.max(结果变量)
最小值
语法:----->
np.min(结果变量)
返回累乘积值
语法:----->
np.cumprod()
返回累加值
语法:----->
np.cumsum()
标准差
什么是标准差?
在概率统计中最常使用作为统计分布程度上的测量。标准差定义是总体各单位标准值与其平均数离差平方的算术平均数的平方根。它反映组内个体间的离散程度。
简单来说,标准差是一组数据平均值分散程度的一种度量。一个较大的标准差,代表大部分数值和其平均值之间差异较大;一个较小的标准差,代表这些数值较接近平均值。
求标准差
语法:----->
np.stb(结果变量)
方差
什么是方差?
方差用来计算每一个变量(观察值)与总体均数之间的差异。
为避免出现离均差总和为零,离均差平方和受样本含量的影响,统计学采用平均离均差平方和来描述变量的变异程度。是标准差的平方。
求方差
语法:----->
np.val(结果变量)
切片、索引
指定数据
根据索引操作,按照普通列表去下标
切片
语法 ---->
结果变量[取哪条][起始位置:结束位置:间隔步数]语法 ---->
结果变量[起始位置:结束位置,:数值]数值 在:之前去除数值列展示,之后再:之后只展示数值列
pandas
模块导包
import pandas as pd导入
pandas起别名为pd
Series
存放一维度数据
通过list构建Series
data = pd.Series([1,2,3,4,5,6,7])
通过range函数,构建Series
data = pd.Series(range(10,20))
DataFrame
存放二维度数据
随机种子,固定随机值为10
np.random.seed(10)
随机生成一组5*3 二维数据
data = np.random.randint(10,20,size=(5,3))
DataFrame存放二维数据df_data = pd.DataFrame(data)
columns=[列数相同的值]给每列起别名df_data .columns=['A','B','C']
删除
直接删除整行
data.drop(索引)data.drop(索引,inplace=True)inplace=True修改原数据
直接删除多行
data.drop([索引,索引。。。])
合并
小例子:
data1 = np.array([[1,2,3],[11,22,33],[1,2,3],[11,22,33],[1,2,3]]) # 5*3
data2 = np.arange(12).reshape(4,3) # 4*3
data3 = np.random.randint(10,20,size=(4,3)) # 生成制定5*3维度,随机生成数字
data4 = np.random.randint(10,20,size=(4,5)) # 4*5
# r_ 列合并 c_ 行合并 不符合 会报错
data5 = np.r_[data1,data2] # r_ 合并 列个数相同 才能合并 5*3 <---> 4*3 否则报错
data6 = np.c_[data3,data4] # c_ 合并 行个数相同 才能合并 4*3 <---> 4*5 否则报错
小总结:
r_ 列合并 列个数相同 才能合并
c_ 行合并 行个数相同 才能合并
否则报错
展示
存放后展示
展示前几行
语法:----->
data.head()
展示后几行
语法:----->
data.tail()
展示前几行
语法:----->
data.head(数值)
展示后几行
语法:----->
data.tail(数值)
arrary和 asarrary
区别:
array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会
info()
DataFrame数据的简明摘要
CSV
读取csv和改写csv编码格式
读取文件时,因为python3的原因,默认
utf-8,其他格式指定解码encoding=data = pd.read_csv('51job.csv',encoding='ANSI')读文件 默认data=pd.read_csv('51job.csv',encoding='utf-8')读文件
每次想保存修改数据或修改编码格式,执行以下类型格式代码:
要在
参数括号内加入inplace=True确认修改原数据的参数值data.to_csv('51job.csv',encoding='ANSI')写入编码格式data.to_csv('51job.csv',encoding='utf-8')改入写编码格式改写后, 只能以修改后编码格式读取,除非重新改动写入新的编码格式
read_html('网址')
爬取网站数据
lst = pd.read_html('http://quote.stockstar.com/stock/sha_3_1_1.html')
写入csv
lst[2].to_csv('gushihangqing.csv',mode='a',header=None,index=False,encoding='utf-8')
缺失值处理 (空值)
删除 dropna()
data.dropna(inplace=True)删除带有Nan的整行数据inplace=True修改原数据
填充替换 fillna()
直接替换掉 该字段所有空值
data['某字段'].fillna('要更新的值')
用平均值替换掉 该字段所有空值 (其他值同理,如:最大值。最小值)
data['某字段'].fillna(data['某字段'].mean())
判断 isnull()
data.isnull()判断是否为空,返回 True 和 False
排序 sort
ascending 表示升
descending 表示降
注意在使用
sort_index对DataFrame进行排序的时候,不能直接对index和columns都含有的字段进行排序,会报错。直接以索引排序
data.sort_index(axis=0,ascending=True)参数axis只有两个值,分别是0和1,
而
df中只有两个index 分别是表最左一列的时间 (左侧标头)
表最上一行的ABCDE (头部标头)
axis=0 对应的是对左边一列的index进行排序
以某个字段的values值排序 即:按照‘列名’排序(多列可用 ['a','b'.... ]),默认升序
data.sort_values(by='某字段',ascending=False)by 参数的作用是针对某一(些)列进行排序(不能对行使用 by 参数)
loc 和 iloc
loc 通过行标签索引行数据
data.loc[3]data.loc[:3]data.loc[::2]
iloc 通过行号索引行数据
data.iloc[2]data.iloc[:2]data.iloc[::2]
loc 和 iloc区别
区别:
不变动的情况,感觉没啥区别
但给标签改索引
data.index = range(10,26) # 给数据标签加索引
然后 就可以和感受到,差别
比较
条件就是运用比较运算符比较
单个条件
data[data['salary']>1002]
多个条件
data[data['salary']>1002][data['salary']<1008]data[(data['salary']>1002)&(data['salary']<1008)&(data['date']=='4月2日')]
替换
单个值替换单个值
data.replace(要替换的值,更新的值)
多个值替换单个值
data.replace([要替换的值,要替换的值...],更新的值)
多个值替换多个值
data.replace([要替换的值,要替换的值...],[更新的值,更新的值...])
数据
数据集
特征
标签
机器学习 三剑客 之 pandas + numpy的更多相关文章
- 机器学习三剑客之Pandas中DataFrame基本操作
Pandas 是基于Numpy 的一种工具,是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具.Pandas提供了大量能使我们快速便捷 ...
- 机器学习三剑客之Pandas
pandas Pandas是基于Numpy开发出的,专门用于数据分析的开源Python库 Pandas的两大核心数据结构 Series(一维数据) Series 创建Series的方法 ...
- Python:机器学习三剑客之 NumPy
一.numpy简介 Numpy是高性能科学计算和数据分析的基础包,机器学习三剑客之一.Numpy库中最核心的部分是ndarray 对象,它封装了同构数据类型的n维数组.部分功能如下: ndarray, ...
- pandas numpy处理缺失值,none与nan比较
原文链接:https://junjiecai.github.io/posts/2016/Oct/20/none_vs_nan/ 建议从这里下载这篇文章对应的.ipynb文件和相关资源.这样你就能在Ju ...
- python及pandas,numpy等知识点技巧点学习笔记
python和java,.net,php web平台交互最好使用web通信方式,不要使用Jypython,IronPython,这样的好处是能够保持程序模块化,解耦性好 python允许使用'''.. ...
- 机器学习三剑客之Numpy库基本操作
NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...
- Numpy 机器学习三剑客之Numpy
NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效率极好,是大量机 ...
- 机器学习三剑客之Numpy
Numpy NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Numpy内部解除了Python的PIL(全局解释器锁),运算效 ...
- python pandas/numpy
import pandas as pdpd.merge(dataframe1,dataframe2,on='common_field',how='outer') replace NaN datafra ...
随机推荐
- 第八章 拦截器机制——《跟我学Shiro》
转发地址:https://www.iteye.com/blog/jinnianshilongnian-2025656 博客分类: 跟我学Shiro 跟我学Shiro 目录贴:跟我学Shiro目录贴 ...
- CX ONE 不能全屏
兼容性 win7 以管理员方式运行 1. 打开CX-Programmer,选择“工具”——“选项”:2. 点击“通用”选项卡,选择“高级”:3. 勾选“当下一次启动CX-Programmer时不显示 ...
- Python 动态规划算法
背包问题 假设你是一个小偷,背一个可装4磅东西的背包.可盗窃的商品有如下3件: 音响,4磅,价值3000美元 笔记本电脑,3磅,价值2000美元 吉他,1磅,价值1500美元 为了让盗窃的商品价值最高 ...
- Leetcode之148. Sort List Medium
https://leetcode.com/problems/sort-list/ Sort a linked list in O(n log n) time using constant space ...
- 软件测试开发人员需要掌握的一些基本数据结构算法(php编写)
一:冒泡排序算法 冒泡排序(Bubble Sort)算法是一种典型的交换排序算法,通过两两数据交换进行排序.如果有n个数,则要进行n-1趟比较,在第1趟比较中要进行n-1次两两比较,在第j趟比较 ...
- css中盒子模型与box-sizing属性
盒子模型 w3c标准:定义的width为 内容,有padding,border 都会使得 最终呈现的宽度为 定义的width+padding+border的总和,有margin另加 ie标准:定义的w ...
- Servlet技术——request、respone详解
Servlet之request.respone详解 Request (一) 概述 request是Servlet.service()方法的一个参数,在客户端发出每个请求时,服务器都会创建一个reque ...
- java源码 -- AbstractSet
AbstractSet抽象类属于Set集合分支的顶层类,它继承了AbstractCollection,实现了Set接口. public abstract class AbstractSet<E& ...
- ARTS 第十周打卡
Algorithm : 做一个 leetcode 的算法题 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: [&quo ...
- Flask 中command的使用
其实这个标题有点大了,只是记录以一下flask中command的一个使用方式,具体用法还需要看相关文档. 之前的项目中需要加一个定时任务所以在flask中写了个任务执行. 首先需要在manage.py ...