pandas 数据分析实战
一、pandas常用数据类型
· series,带标签的一维数组。类似于字典,但是键作为索引。
· datatimeindex,时间序列。
· dataframe,带标签且大小可变的二维表格结构。
· panel,带标签且大小可变的三维数组。
1.一维数组与操作 Series
s = pd.Series(range())
s = pd.Series(dict{ })
abs(s)
s + 5
s.add_prefix(x):在每个索引前面加上x
s.add_suffix(x):在每个索引后面加上x
#画出数据直方图
s.hist()
plt.show()
#最大索引
s.idxmax()
#查看值是否在指定区间内
s.between(a,b)
#查看满足某一条件的值
s[s>s.median()]
2.时间序列与操作
主要包括data_range函数和Timestamp类。
pd.data_range(start=None, end=None, periods=None, freq='D', tz=None, normalize=False, name=None, closed=None, **kwargs)
其中:
· start和end指定起止日期。
· periods指定生成的数据数量。
· freq指定时间间隔,默认是D,表示相邻两个日期相差多少。还有W 周、H 小时、M 月末最后一天、MS 月初第一天、T 分钟、Y 年末最后一天、YS 年初第一天。
pd.Timestamp('20241013'.day_name()) # 查看这天周几
pd.Timestamp('20241013'.is_leap_year) # 查看是否是闰年
pd.Timestamp('20241013'.quarter) # 查看季度
pd.Timestamp('20241013'.month) # 查看月份
3.二维数组DataFrame
可以看作一个二维表格(excel),由索引、列名、值组成。
pandas支持多种方式创建DF,如readcsv、readexcel等。
#生成5行6列1-20的随机数,自定义索引,自定义列。
df = pd.DataFrame(np.random.randint(1, 20, (5, 6)), index = range(5), columns = [])
#使用字典,作为值和索引
df = pd.DataFrame(dict{}, index=)
4.DF数据处理
# excel读取
pandas.read_excel(
io,
sheet_name=0,
header=0,
names=None,
index_col=None,
usecols=None,
squeeze=False,
dtype=None,
engine=None,
converters=None,
true_values=None,
false_values=None,
skiprows=None,
nrows=None,
na_values=None,
keep_default_na=True,
verbose=False,
parse_dates=False,
date_parser=None,
thousands=None,
comment=None,
skipfooter=0,
convert_float=True,
mangle_dupe_cols=True,
**kwds
)
其中:
· io指定文件路径、对象。
· sheet_name:指定读取的worksheet,可以是sheet序号或是名字,或者是一个列表。如果值指定为None,则表示读取所有worksheet,并返回多个DF构成的字典。
· header指定worksheet中表示表头的行索引,默认为0。如果没有作为表头的行,必须明确写出header = None。
· skiprows:指定要跳过的行索引组成的列表。
· index_col:指定作为索引的列下标。
· names:指定读取数据后使用的列名。
· usecols:指定要读取的列的索引或名字。
· na_values:指定哪些值被解释为缺失值。
# 条件筛选
df[a: b]
df.iloc[index行, index列]:通过索引访问某行某列。
df.loc[index行,列名]:通过列名访问。
df.at[index行,列名]:同上。
df[行][列]:可以是列表可以是索引。
df[列名].sum()/max()/min()
df.列名
df[df[列名].isin([, , , ,])][列名].sum():找出满足条件的行。
#查看数据特征
df.describe():查看统计信息。包括总数 平均数 方差 最大最小等。
df.median()
df.nsmallest()
df.nlargest()
df[列名].idxmax()/idxmin():某列最小值/最大值,对应的行下标。
#对数据排序
sort_index(axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True):沿某个方向
其中:
· axis=0是按照行索引,axis=1是按照列索引。
· ascending默认表示升序,flase表示降序。
· inplace默认表示返回新的排序后的DF,True表示原地排序。
· na_position指定把缺失值放在哪里。last/first。
sort_values(by, 同上)
其中:
· by指定依据哪个列进行排序,支持列名/列表。
#分组和聚合
重点
groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)
其中:
· by指定作用于index的函数、字典(根据键进行分组、值作为分组后的index),或指定列名作为分组依据。
· squeeze会在可能的情况下降低结果对象的维度。
#处理异常值 噪声
df[df[""]>x] = a,直接替换掉。
#处理缺失值
dropna(axis=0, how=any, thresh=None, subset=None, inplace=False)
其中:
· how=any表示某行只要存在缺失值就删掉这行,how=all表示某行全是缺失值才删除。
· thresh表示保留包含几个非缺失值数据的行。
· subset指定在判断缺失值的时候考虑哪些列。
fillna(value=None, method=None, axis=0, inplace=False, limit=None, downcast=None)
其中:
· value指定要替换的值。
· method指定填充值的方式,包括pad ffill,backfill bfill。
· limit指定设置method时最多填充多少个连续的缺失值。
# 处理重复值
duplicated(subset=None, keep='first') 检测重复值
其中:
· subset指定依据哪一列/多列判断重复。默认使用每行的所有列。
· keep=first表示将重读数据的第一次出现标记为false,keep=last表示重复数据最后一次出现标记为false,keep=false表示所有重复数据都是true。
df[df.duplicated()]
drop_duplicates(subset=None, keep='first', inplace=False) 删除重复值
#数据差分
可以看出来每行/每列的差距。
diff(periods=1, axis=0)
其中:
· axis=0表示纵向差分,axis=1表示横向差分。
· period指定差分的跨度,period=x表示每一行减去上面第x行的数据。
# 重采样
如果DF中索引是日期时间,可以使用resample()重采样,按照时间段统计。
resample(rule, how=None, axis=0, label=None, on=None)
其中:
· rule指定重采样的时间间隔,同时间序列的freq参数。
· on指定根据哪一列进行重采样,要求必须是日期时间类型。
· label=right指定使用采样时间的结束时间作为DF的index,label=left指定。。开始时间。。
# 多索引
DF支持多个索引,在groupby()和sort_index()方法中用level可以指定按照哪一级索引进行排序或分组。
# pandas属性接口
Series对象和DF的列数据,提供了dt、str的属性接口,分别对应日期和字符串。通过接口可以快速实现特定功能。
dt接口:
· dayofweek, dayofyear, is_leap_year, quarter, day_name()等。
str接口:
· center, contains, count, endswith, find, extract, lower, split等。
# 数据拆分与合并
可以对DF进行切片 或者 loc按行按列运算进行拆分
可以用concat(objs, axis=0, join='outer')合并
其中:
· objs包含多个series DF panel对象 [序列]。
· axis默认为0,表示纵向合并。
可以用append(other, ignore_index=False)合并
可以忽略原来的索引。
相关文章:
pandas 数据分析实战
一、pandas常用数据类型 series,带标签的一维数组。类似于字典,但是键作为索引。 datatimeindex,时间序列。 dataframe,带标签且大小可变的二维表格结构。 panel,带标签且大小可变的三维数组。 1.一维数组与操…...
antd vue 输入框高亮设置关键字
<highlight-textareaplaceholder"请输入主诉"type"textarea"v-model"formModel.mainSuit":highlightKey"schema.componentProps.highlightKey"></highlight-textarea> 参考链接原生input,textarea demo地址 …...
python——扑克牌案列
斗地主发牌程序: 模拟一个斗地主发牌程序,实现对三个玩家进行手牌的派发,实现功能: ********** 欢迎进入 XX 斗地主 ********** 请输入玩家姓名:<用户控制台输入 A> 请输入玩家姓名:<用户控制台输…...
Java最全面试题->Java基础面试题->JavaWeb面试题->Git/SVN面试题
文章目录 Git/SVN面试题Git和SVN有什么区别?SVN优缺点?Git优缺点?说一下Git创建分支的步骤?说一下Git合并的两种方法以及区别?Git如何查看文件的提交历史和分支的提交历史?什么是 git stash?什么是git sta…...
引进Menu菜单与新增验证上传图片功能--系统篇
我的迭代小系统要更新2点。一是后台需要引进一种导航,众多导航之中我选择了Menu菜单。二是上传图片接口需要新增验证上传图片环节。先看看更新2点后的效果 引进Menu菜单效果如下,这部分修改后台前端代码 引进Menu菜单后,Menu菜单的默认数据我…...
安装Python及pip使用方法详解
一、安装Python Python是一种广泛使用的高级编程语言,其安装过程相对简单。以下是具体步骤: 访问Python官网: 打开浏览器,访问Python的官方网站[python.org](https://www.python.org/),确保下载的是最新版本的Python安…...
利用Arcgis进行沟道形态分析
在做项目的时候需要学习到水文分析和沟道形态分析的学习,所以自己摸索着做了下面的工作和内容。如有不对请多指正!! 一、沟道形态分析概述 沟道形态分析是水文分析的一个重要方面,用于研究河流的形态和特征。沟道形态分析可以帮助…...
Excel:vba实现筛选出有批注的单元格
实现的效果:代码: Sub test() Dim cell As RangeRange("F3:I10000").ClearlastRow Cells(Rows.Count, "f").End(xlUp).Row MsgBox lastrow For Each cell In Range("a1:a21")If Not cell.Comment Is Nothing ThenMsgBox…...
RabbitMQ 发布确认模式
RabbitMQ 发布确认模式 一、原理 RabbitMQ 的发布确认模式(Publisher Confirms)是一种机制,用于确保消息在被 RabbitMQ 服务器成功接收后,发布者能够获得确认。这一机制在高可用性和可靠性场景下尤为重要,能够有效防止…...
【面试题】什么是SpringBoot以及SpringBoot的优缺点
什么是SpringBoot以及SpringBoot的优缺点 什么是SpringBoot SpringBoot是基于Spring的一个微框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 SpringBoot的优点 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执…...
git区分大小写吗?如果不区分,那要如何设置?
git区分大小写吗?如果不区分,那要如何设置? "Git在文件名的大小写方面是区分大小写的,但在某些操作系统(如Windows和macOS)上,文件系统默认是不区分大小写的。这可能导致一些问题…...
Docker 安装使用
1. 下载 下载地址:Index of linux/static/stable/x86_64/ 下载好后,将文件docker-18.06.3-ce.tgz用WinSCP等工具,上传到不能外网的linux系统服务器 2. 安装 解压后的文件夹docker中文件如下所示: 将docker中的全部文件ÿ…...
Linux Docker配置镜像加速
Docker配置常用镜像加速地址包含阿里、腾讯、百度、网易 1. 编辑docke配置文件 vim /etc/docker/daemon.json写入以下内容 {"registry-mirrors": ["https://docker.mirrors.aliyuncs.com","https://registry.docker-cn.com","https://mi…...
了解CSS Typed OM
CSS Typed OM(CSS Typed Object Model)是一项前沿的技术,旨在改变我们编写和操作CSS的方式。以下是对CSS Typed OM的详细解析: 一、CSS Typed OM概述 CSS Typed OM是一个包含类型和方法的CSS对象模型,它暴露了作为Ja…...
[ 钓鱼实战系列-基础篇-6 ] 一篇文章让你了解邮件服务器机制(SMTP/POP/IMAP)-2
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...
在 Docker 中搭建 PostgreSQL16 主从同步环境
1. 环境搭建 本文介绍了如何在同一台机器上使用 Docker 容器搭建 PostgreSQL 的主从同步环境。通过创建互联网络和配置主库及从库,详细讲解了数据库初始化、角色创建、数据同步和验证步骤。主要步骤包括设置主库的连接信息、创建用于复制的角色、使用 pg_basebacku…...
SpringCloud无介绍快使用,sentinel服务熔断功能与持久化(二十四)
TOC 问题背景 从零开始学springcloud微服务项目 注意事项: 约定 > 配置 > 编码IDEA版本2021.1这个项目,我分了很多篇章,每篇文章一个操作步骤,目的是显得更简单明了controller调service,service调dao默认安装ngi…...
判断浏览器环境,前端打开微信浏览器
我们知道微信浏览器有自带针对微信的组件(比如:微信JSAPI支付使用的WeixinJSBridge),那么,有办法在普通浏览器中打开微信浏览器并跳转页面吗?(似乎微信已禁用外部浏览器调用的普通页面直接跳转,只能通过“weixin://前缀…...
【算法笔记】前缀和算法原理深度剖析(超全详细版)
【算法笔记】前缀和算法原理深度剖析(超全详细版) 🔥个人主页:大白的编程日记 🔥专栏:算法笔记 文章目录 【算法笔记】前缀和算法原理深度剖析(超全详细版)前言一.一维前缀和1.1题…...
linux之网络子系统- 地址解析协议arp 源码分析和邻居通用框架
一、arp 的作用 ARP(Address Resolution Protocol,地址解析协议)是将IP地址解析为以太网MAC地址(物理地址)的协议。在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...
