机器学习 | 利用Pandas进入高级数据分析领域
目录
初识Pandas
Pandas数据结构
基本数据操作
DataFrame运算
文件读取与存储
高级数据处理
初识Pandas
Pandas是2008年WesMcKinney开发出的库,专门用于数据挖掘的开源python库,以Numpy为基础,借力Numpy模块在计算方面性能高的优势,其基于matplotlib能够简便画图,具有独特的数据结构。
与Numpy相比,Pandas能够更好地理解数据和发现其关联性,增强图表的可读性:
具有丰富的数据清洗功能,可以处理缺失值、重复值、异常值等问题。
当然其还有如下的功能:
数据处理:可以轻松处理各种类型的数据,包括二维表格数据、时间序列数据等。
数据分析:可以轻松地计算均值、中位数、标准差等统计指标。
与其他工具的兼容性:可以使用Pandas读取和写入各种数据格式,如CSV、SQL数据库等。
总之,Pandas是一款功能强大且易于使用的数据分析工具,能够让你高效地处理和分析结构化数据。通过利用Pandas的各种功能,你可以更快地了解数据、发现洞察,并做出有意义的数据驱动决策。
Pandas数据结构
Pandas中一共有三种数据结构,分别为:Series、DataFrame和Multilndex(老版本中叫Panel),其中Series是一维数据结构,DataFrame是二维的表格型数据结构,Multilndex是三维的数据结构。如果电脑没有pandas这个包的话,我们首先终端执行如下命令进行安装:
pip install pandas -i https://pypi.mirrors.ustc.edu.cn/simple
Series:Series是一个类似于一维数组的数据结构,它能够保存任何类型的数据,比如整数、字符串、浮点数等,主要由一组数据和与之相关的索引两部分构成。其代码创建如下:
# 导入 pandas
import pandas as pd# data:传入的数据,可以是ndarray,list等
# index:索引,必须是唯一的,且与数据的长度相等。
# dtype:数据的类型
pd.Series(data=None, index=None, dtype=None)
以下是通过Series创建的三种方式:
为了更方便地操作Series对象中的索引和数据,Series中提供了两个属性index和values
DataFrame:DataFrame是一个类似于二维数组或表格(如excel)的对象,既有行索引,又有列索引。行索引,表明不同行,横向索引,叫index,0轴,axis=0;列索引,表名不同列,纵向索引,叫columns,1轴,axis=1。其代码创建如下:
# 导入pandas
import pandas as pd# index:行标签。如果没有传入索引参数,则默认会自动创建一个从o-N的整数索引。
# columns:列标签。如果没有传入索引参数,则默认会自动创建一个从o-N的整数索引。
pd.DataFrame(data=None, index=None, columns=None)
以下是通过DataFrame创建的方式:
为了更方便地操作DataFrame对象中的数据,DataFrame中提供了如下属性进行操作:
如果想对DataFrame索引的内容进行修改的话可以采用如下的方式进行设置(不能单个索引修改):
如果想重置或删除索引的话,可以采用如下的方式进行:
如果想以某列值设置为新的索引,可以采用如下的方式进行:
Multilndex:是三维的数据结构;多级索引(也称层次化索引)是pandas的重要功能,可以在Series、DataFrame对象上拥有2个以及2个以上的索引。
当我们打印上面的年月表格的行索引结果时,给出的结果如下:
多级或分层索引对象中index的属性有names表示levels的名称,levels表示每个levels的元组值:
使用MultiIndex进行创建的方式如下:
基本数据操作
以下是使用pandas对数据进行基本的操作,我们首先通过pandas读取csv获取到数据,然后操作:
索引操作:pandas支持索引选取序列和切片操作,也可以直接使用列名和行名:
赋值操作:可以直接对某项数据进行赋值操作:
排序操作:使用排序操作可以采用如下的方式进行
当然还有更简单的Series排序,使用 Series 排序时,只有一列不需要参数:
DataFrame运算
算术运算:可以采用如下方式
逻辑运算:可以采用如下方式
当然我们也可以采用相应的函数进行操作:
统计运算:可以采用如下方式
综合分析直接得出所有字段的统计结果:
如果想求某一字段的累计求和的话,可以采用如下的方式进行:
如果想自定义运算的话,可以采用如下的方式进行:
文件读取与存储
我们的数据大部分存在于文件当中,所以pandas会支持复杂的iO操作,pandas的API支持众多的文件格式如CSV、SQL、XLS、JSON、HDF5。最常用的就是HDF5和CSV文件:
如果要读取 CSV 可以采用如下的方式:
如果要读取 HDF5 可以采用如下的方式:
注意:
1)HDF5在存储的时候支持压缩,使用的方式是blosc,这个是速度最快的也是pandas默认支持的
2)用压缩可以提磁盘利用率,节省空间
3)HDF5还是跨平台的,可以轻松迁移到hadoop上面
如果要读取 JSON 可以采用如下的方式:
高级数据处理
pandas还有需要高级数据处理的操作,就以下几个常用的高级数据操作进行讲解:
缺失值处理:在Pandas中,缺失值表示数据集中的空值或未知值。它们通常由NaN(Not a Number)或None表示,具体取决于数据类型。缺失值可能是由于多种原因造成的,比如数据采集过程中的错误、数据转换过程中的问题、用户未提供某些值等。在数据分析和处理过程中,了解和处理缺失值是非常重要的。如何处理缺失值呢?
首先我们先导入一个电脑数据的分析的案例:
接下来我们对缺失值进行判断,如果存在缺失值进行删除:
接下来我们对缺失值进行判断,如果存在缺失值进行替换:
如果缺失值不是NaN而是?的话,我们可以进行如下操作:
数据离散化:连续属性的离散化就是在连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数值代表落在每个子区间中的属性值。离散化有很多种方法,这使用一种最简单的方式去操作:
原始人的身高数据:165,174,160,180,159,163,192,184
假设按照身高分几个区间段:150~165,165~180,180~195
这样我们将数据分到了三个区间段,我可以对应的标记为矮、中、高三个类别,最终要处理成一个"哑变量"矩阵
连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法经常作为数据挖掘的工具。首先我们先导入数据:
接下来对数据进行一个分组操作:
如果我们想把分组数据变成one-hot编码的话可以采用如下操作(把每个类别生成一个布尔列,这些列中只有一列可以为这个样本取值为1.其又被称为热编码):
数据合并:如果你的数据由多张表组成,那么有时候需要将不同的内容合并在一起分析:
交叉表与透视表:两种用于数据分析和汇总的功能
其使用操作如下:
具体操作如下:
分组与聚合:分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况。其具体操作如下:
相关文章:

机器学习 | 利用Pandas进入高级数据分析领域
目录 初识Pandas Pandas数据结构 基本数据操作 DataFrame运算 文件读取与存储 高级数据处理 初识Pandas Pandas是2008年WesMcKinney开发出的库,专门用于数据挖掘的开源python库,以Numpy为基础,借力Numpy模块在计算方面性能高的优势&am…...

三、计算机理论-计算机网络-物理层,数据通信的理论基础,物理传输媒体、编码与传输技术及传输系统
物理层概述 物理层为数据链路层提供了一条在物理的传输媒体上传送和接受比特流的能力。物理层提供信道的物理连接,主要任务可以描述为确定与传输媒体的接口有关的一些特性:机械特性、电气特性、功能特性、过程特性 数据通信的理论基础 数据通信的意义 主…...

ERROR Failed to get response from https://registry.npm.taobao.org/ 错误的解决
这个问题最近才出现的。可能跟淘宝镜像的证书到期有关。 解决方式一:更新淘宝镜像(本人测试无效,但建议尝试) 虽然无效,但感觉是有很大关系的。还是设置一下比较好。 淘宝镜像的地址(registry.npm.taobao…...

overflow产生的滚动条样式设置
修改overflow产生的滚动条样式,主要可以通过如下三个伪元素设置: 1)-webkit-scrollbar:设置水平滚动条的高度,垂直滚动的宽度 2)-webkit-scrollbar-thumb:设置滚动条里面的滑块样式 3)-webkit-scrollbar-track&…...

Ubuntu环境vscode配置Log4cplus库
1、下载源码 http://sourceforge.net/projects/log4cplus/ 2、安装 例如我下载的是2.0.8版本压缩包,需要解压缩 log4cplus-2.0.8.7z安装解压工具: apt install p7zip-full解压: 7z x log4cplus-2.0.8.7z -r -o/home/配置及编译安装&#x…...

vue中,使用file-saver导出文件,下载Excel文件、下载图片、下载文本
vue中,使用file-saver导出文件,下载Excel文件、下载图片、下载文本 1、基本介绍 npm地址:file-saver - npm 2、安装 # Basic Node.JS installation npm install file-saver --save bower install file-saver# Additional typescript defin…...

【VUE】v-if 和 v-show 大详解(多角度分析+面试简答版)
多角度分析+面试简答版 一、`v-if` 和 `v-show` 的区别之多角度分析控制手段:编译过程:编译条件:性能消耗:总结使用场景二、 `v-if`、`v-show`、`display:none` 和`visibility: hidden` 的区别三、简洁版回答:`v-show` 与 `v-if` 比较一、v-if 和 v-show 的区别之多角度分…...

mac intel jdk安装与配置
jdk地址下载 https://www.oracle.com/java/technologies/downloads/ https://repo.huaweicloud.com/java/jdk/8u201-b09/ 安装后 下载完成之后打开终端 注意如果是第一次配置环境变量需要创建.bash_profile文件。(注意:touch后面有空格) to…...

Backtrader 文档学习-Bracket Orders
Backtrader 文档学习-Bracket Orders 1. 概述 组合订单类型是一个非常宽泛的订单类别,只要brokder支持的订单类型都可以, 包括(Market, Limit, Close, Stop, StopLimit, StopTrail, StopTrailLimit, OCO)。 该功能用于回测,交互broker Brac…...

Python编程 从入门到实践(项目二:数据可视化)
本篇为实践项目二:数据可视化。 配合文章python编程入门学习,代码附文末。 项目二:数据可视化 1.生成数据1.1 安装Matplotlib1.2 绘制简单的折线图1.2.1 修改标签文字和线条粗细1.2.2 校正图形1.2.3 使用内置样式1.2.4 使用scatter()绘制散点…...

Linux版本下载Centos操作
目录 一、Centos7 二、下载Centos7镜像 三、下载Centos7 买了个硬件安装裸机(一堆硬件) 把安装盘放到虚拟机里面,给机器加电 配置设置 编辑 网络配置 开启网络功能 四、安装linux客户端 Xshell是什么 Xshell使用(连接…...

Offer必备算法_二分查找_八道力扣OJ题详解(由易到难)
目录 二分查找算法原理 ①力扣704. 二分查找 解析代码 ②力扣34. 在排序数组中查找元素的第一个和最后一个位置 解析代码 ③力扣69. x 的平方根 解析代码 ④力扣35. 搜索插入位置 解析代码 ⑤力扣852. 山脉数组的峰顶索引 解析代码 ⑥力扣162. 寻找峰值 解析代码…...

SpringBoot对Bean的管理
Bean扫描 Spring中使用标签扫描或者注解 Springboot中没有使用标签或者注解它是怎么扫描的我的controlelr,service等等 核心在于springboot启动类中的SpringBootApplication注解 此注解其实是一个组合注解 它组合了一个ComponentScan注解,相当于在启…...

体验 AutoGen Studio - 微软推出的友好多智能体协作框架
体验 AutoGen Studio - 微软推出的友好多智能体协作框架 - 知乎 最近分别体验了CrewAI、MetaGPT v0.6、Autogen Studio,了解了AI Agent 相关的知识。 它们的区别 可能有人要问:AutoGen我知道,那Autogen Studio是什么? https://g…...

超简单的正则表达式从入门到精通
正则表达式,又称规则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 概念 正则表达式是对字…...

webpack常用配置
1.webpack概念 本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 …...

nodejs学习计划--(六)包管理工具
包管理工具 1. 介绍 包是什么 『包』英文单词是 package ,代表了一组特定功能的源码集合包管理工具 管理『包』的应用软件,可以对「包」进行 下载安装 , 更新 , 删除 , 上传 等操作 借助包管理工具,可以快…...

数字地球开放平台农作物长势监测解决方案
数字地球开放平台农作物长势监测解决方案 利用遥感技术进行产量预测是一种高效而准确的方法,通过监测植被的生长状况、土地利用、气象等因素,可以为农业决策提供有力支持。数字地球开放平台拥有200颗卫星,为您提供一站式卫星遥感服务。 农情监…...

react hooks 的useState:
React 的 useState Hook 是一种用于在函数组件中管理状态的机制。它可以让函数组件具有类似于类组件的状态管理能力。 useState Hook 接收一个初始值作为参数,并返回一个包含状态值和更新状态值的数组。 import { useState } from react;const [state, setState] …...

编程那么难,为什么不弄一个大众一学就会的计算机语言呢?
大家好!今天要和大家聊聊一个有趣的想法: 想象一下,如果编程变得像拼乐高积木一样简单,那将是多么美妙的事情啊!不需要费尽心思去学习繁杂的语法规则和复杂的逻辑,只需要将代码块像积木一样拼接起来&#x…...

论文阅读2---多线激光lidar内参标定原理
前言:该论文介绍多线激光lidar的标定内参的原理,有兴趣的,可研读原论文。 1、标定参数 rotCorrection:旋转修正角,每束激光的方位角偏移(与当前旋转角度的偏移,正值表示激光束逆时针旋转&…...

Ubuntu 22.04 apt 安装 ros1 ros Noetic Ninjemys
众所周知 ros2还有很多功能没有移植,而ros1官方不再支持 ubuntu 20.04 之后的版本。另一方面Ubuntu 22.04 更新了很多对新硬件的驱动,有更好的兼容性和体验,这就变的很纠结。 如果想在 22.04 使用最新版本的 ros noetic 只有自己编译一个办法…...

单片机学习笔记---矩阵键盘
目录 矩阵键盘的介绍 独立按键和矩阵按键的相同之处: 矩阵按键的扫描 代码演示 代码模块化移植 Keil自定义模板步骤: 代码编写 矩阵键盘就是开发板上右下角的这个模块 这一节的代码是基于上一节讲的LCD1602液晶显示屏驱动代码进行的 矩阵键盘的介…...

第八篇 交叉编译华为云Iot SDK到Orangepi3B
本篇主要内容: 一、交叉编译华为云Iot SDK依赖1.宿主机安装交叉编译工具链(1)选择下载交叉编译工具链(2)解压、添加环境变量、重启2.交叉编译依赖库(0) 准备工作(1) 交叉…...

软件工程测试2
1.【单选】“数据流的分解一般达到2层数据流就截止”的说法是否正确 A. 正确 B. 错误 答案:B 2.【单选】 在类图中,哪种关系表达总体与局部的关系 A. 泛化 B. 实现 C. 聚合 D. 依赖 答案:C 3.【多选】从UML时序图中我们能够得到(…...

31.【TypeScript 教程】混入(Mixins)
TypeScript 混入(Mixins) 混入(Mixins)是面向对象编程中的一个比较重要的概念。本节将会通过一个实例逐步介绍混入是如何在 TypeScript 中使用的。 1. 解释 在 TypeScript 中,可以根据不同的功能定义多个可复用的类,它们将作为 …...

C语言常见面试题:什么是联合体,联合体的作用是什么?
联合体(union)是一种特殊的数据类型,它可以在同一块内存单元中存储不同的数据类型。联合体的作用在于能够节省内存空间,并且可以用来实现数据的共享和交换。 联合体的定义方式是在C语言中通过关键字union来定义,例如&…...

Nginx进阶篇【五】
Nginx进阶篇【五】 八、Nginx实现服务器端集群搭建8.1.Nginx与Tomcat部署8.1.1.环境准备(Tomcat)8.1.1.1.浏览器访问:8.1.1.2.获取动态资源的链接地址:8.1.1.3.在Centos上准备一个Tomcat作为后台web服务器8.1.1.4.准备一个web项目,将其打包为war8.1.1.5.启动tomcat进…...

IndexedDB
Web SQL Database | Can I use... Support tables for HTML5, CSS3, etc IndexedDB | Can I use... Support tables for HTML5, CSS3, etc 为什么websql被废弃?_笔记大全_设计学院 WebSQL有兼容、性能、安全问题,要考虑使用IndexedDB替代。 一文看懂 In…...

git用法总结
以gitee为例,GitHub也可参考本文 创建远程仓库 在自己的gitee主页 创建本地仓库 在文件夹下,右键→git bash here git init添加gitignore vi .gitignoregitignore里的内容根据自己实际情况设置,这里举个例子 # #开头的是注释 # Prer…...