当前位置: 首页 > news >正文

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&#xff0c;textarea demo地址 …...

python——扑克牌案列

斗地主发牌程序&#xff1a; 模拟一个斗地主发牌程序&#xff0c;实现对三个玩家进行手牌的派发&#xff0c;实现功能&#xff1a; ********** 欢迎进入 XX 斗地主 ********** 请输入玩家姓名&#xff1a;<用户控制台输入 A> 请输入玩家姓名&#xff1a;<用户控制台输…...

Java最全面试题->Java基础面试题->JavaWeb面试题->Git/SVN面试题

文章目录 Git/SVN面试题Git和SVN有什么区别&#xff1f;SVN优缺点&#xff1f;Git优缺点&#xff1f;说一下Git创建分支的步骤&#xff1f;说一下Git合并的两种方法以及区别&#xff1f;Git如何查看文件的提交历史和分支的提交历史?什么是 git stash&#xff1f;什么是git sta…...

引进Menu菜单与新增验证上传图片功能--系统篇

我的迭代小系统要更新2点。一是后台需要引进一种导航&#xff0c;众多导航之中我选择了Menu菜单。二是上传图片接口需要新增验证上传图片环节。先看看更新2点后的效果 引进Menu菜单效果如下&#xff0c;这部分修改后台前端代码 引进Menu菜单后&#xff0c;Menu菜单的默认数据我…...

安装Python及pip使用方法详解

一、安装Python Python是一种广泛使用的高级编程语言&#xff0c;其安装过程相对简单。以下是具体步骤&#xff1a; 访问Python官网&#xff1a; 打开浏览器&#xff0c;访问Python的官方网站[python.org](https://www.python.org/)&#xff0c;确保下载的是最新版本的Python安…...

利用Arcgis进行沟道形态分析

在做项目的时候需要学习到水文分析和沟道形态分析的学习&#xff0c;所以自己摸索着做了下面的工作和内容。如有不对请多指正&#xff01;&#xff01; 一、沟道形态分析概述 沟道形态分析是水文分析的一个重要方面&#xff0c;用于研究河流的形态和特征。沟道形态分析可以帮助…...

Excel:vba实现筛选出有批注的单元格

实现的效果&#xff1a;代码&#xff1a; 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 的发布确认模式&#xff08;Publisher Confirms&#xff09;是一种机制&#xff0c;用于确保消息在被 RabbitMQ 服务器成功接收后&#xff0c;发布者能够获得确认。这一机制在高可用性和可靠性场景下尤为重要&#xff0c;能够有效防止…...

【面试题】什么是SpringBoot以及SpringBoot的优缺点

什么是SpringBoot以及SpringBoot的优缺点 什么是SpringBoot SpringBoot是基于Spring的一个微框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 SpringBoot的优点 可以创建独立的Spring应用程序&#xff0c;并且基于其Maven或Gradle插件&#xff0c;可以创建可执…...

git区分大小写吗?如果不区分,那要如何设置?

git区分大小写吗&#xff1f;如果不区分&#xff0c;那要如何设置&#xff1f; "Git在文件名的大小写方面是区分大小写的&#xff0c;但在某些操作系统&#xff08;如Windows和macOS&#xff09;上&#xff0c;文件系统默认是不区分大小写的。这可能导致一些问题&#xf…...

Docker 安装使用

1. 下载 下载地址&#xff1a;Index of linux/static/stable/x86_64/ 下载好后&#xff0c;将文件docker-18.06.3-ce.tgz用WinSCP等工具&#xff0c;上传到不能外网的linux系统服务器 2. 安装 解压后的文件夹docker中文件如下所示&#xff1a; 将docker中的全部文件&#xff…...

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&#xff08;CSS Typed Object Model&#xff09;是一项前沿的技术&#xff0c;旨在改变我们编写和操作CSS的方式。以下是对CSS Typed OM的详细解析&#xff1a; 一、CSS Typed OM概述 CSS Typed OM是一个包含类型和方法的CSS对象模型&#xff0c;它暴露了作为Ja…...

[ 钓鱼实战系列-基础篇-6 ] 一篇文章让你了解邮件服务器机制(SMTP/POP/IMAP)-2

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

在 Docker 中搭建 PostgreSQL16 主从同步环境

1. 环境搭建 本文介绍了如何在同一台机器上使用 Docker 容器搭建 PostgreSQL 的主从同步环境。通过创建互联网络和配置主库及从库&#xff0c;详细讲解了数据库初始化、角色创建、数据同步和验证步骤。主要步骤包括设置主库的连接信息、创建用于复制的角色、使用 pg_basebacku…...

SpringCloud无介绍快使用,sentinel服务熔断功能与持久化(二十四)

TOC 问题背景 从零开始学springcloud微服务项目 注意事项&#xff1a; 约定 > 配置 > 编码IDEA版本2021.1这个项目&#xff0c;我分了很多篇章&#xff0c;每篇文章一个操作步骤&#xff0c;目的是显得更简单明了controller调service&#xff0c;service调dao默认安装ngi…...

判断浏览器环境,前端打开微信浏览器

我们知道微信浏览器有自带针对微信的组件(比如&#xff1a;微信JSAPI支付使用的WeixinJSBridge)&#xff0c;那么&#xff0c;有办法在普通浏览器中打开微信浏览器并跳转页面吗&#xff1f;(似乎微信已禁用外部浏览器调用的普通页面直接跳转&#xff0c;只能通过“weixin://前缀…...

【算法笔记】前缀和算法原理深度剖析(超全详细版)

【算法笔记】前缀和算法原理深度剖析&#xff08;超全详细版&#xff09; &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;算法笔记 文章目录 【算法笔记】前缀和算法原理深度剖析&#xff08;超全详细版&#xff09;前言一.一维前缀和1.1题…...

linux之网络子系统- 地址解析协议arp 源码分析和邻居通用框架

一、arp 的作用 ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析协议&#xff09;是将IP地址解析为以太网MAC地址&#xff08;物理地址&#xff09;的协议。在局域网中&#xff0c;当主机或其他网络设备有数据要发送给另一个主机或设备时&#xff0c;它必须知…...

Unity游戏任务系统框架解析:数据驱动与事件架构实战

1. 项目概述&#xff1a;一个为游戏开发者准备的灵活任务系统如果你正在开发一款RPG、开放世界或者任何需要任务驱动的游戏&#xff0c;那么“任务系统”绝对是你绕不开的核心模块。最近我在GitHub上发现了一个名为shomykohai/quest-system的开源项目&#xff0c;它不是一个完整…...

计算内存(CIM)技术解析与AI硬件加速实践

1. 计算内存&#xff08;CIM&#xff09;技术解析&#xff1a;突破传统架构的能效瓶颈 在AI硬件加速领域&#xff0c;计算内存&#xff08;Compute-in-Memory, CIM&#xff09;正引发一场架构革命。传统冯诺依曼架构中"内存墙"问题已成为制约AI计算效率的主要瓶颈——…...

2026盘古石取证初赛(APK取证)

APK取证1.分析方俊朗phone.E01检材&#xff0c;筛选优质客户应用将用户查询记录存储在一个加密的本地数据库中。请问该加密数据库的文件名是什么&#xff1f;[答案格式&#xff1a;12_abc.db]题目说了这边是筛选优质客户&#xff0c;其实和手机取证最后一题一样的&#xff0c;先…...

SQLite Having 子句详解

SQLite Having 子句详解 SQLite 是一款轻量级的数据库管理系统,广泛应用于移动应用、桌面应用以及各种嵌入式系统。在 SQLite 中,HAVING 子句是一个非常重要的特性,它用于对 GROUP BY 子句的查询结果进行过滤。本文将详细介绍 SQLite 的 HAVING 子句,包括其用法、语法以及…...

【独家】Lindy内部SLO白皮书泄露:自主工作流SLA达标率低于99.95%的5个致命信号

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Lindy AI Agent自主工作流的核心架构与SLO哲学 Lindy AI Agent 的核心架构基于“自治闭环”&#xff08;Autonomous Closed Loop&#xff09;范式&#xff0c;将任务规划、工具调用、状态反馈与自校准能…...

Cursor Pro 终极破解指南:如何永久免费使用AI编程神器

Cursor Pro 终极破解指南&#xff1a;如何永久免费使用AI编程神器 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tri…...

京东自动评价终极指南:如何用Python脚本轻松完成批量评价

京东自动评价终极指南&#xff1a;如何用Python脚本轻松完成批量评价 【免费下载链接】jd_AutoComment 自动评价,仅供交流学习之用 项目地址: https://gitcode.com/gh_mirrors/jd/jd_AutoComment 还在为京东购物后的繁琐评价工作烦恼吗&#xff1f;每次大促后面对几十个…...

C#元组类型简介

元组是 C# 7.0 引入的轻量级数据结构&#xff0c;用于临时组合多个值&#xff0c;无需定义专门的类或结构。 元组是有序的数据结构&#xff0c;成员按声明/创建时的顺序排列。&#xff08;这里的元组只指值元组&#xff09;元组类型在C#7.0前是有一个专门的内置类型&#xff0c…...

金融机器学习实战:MlFinLab工具包核心模块解析与应用指南

1. 从零到一&#xff1a;为什么我们需要一个金融机器学习的“瑞士军刀”&#xff1f;如果你和我一样&#xff0c;在量化金融和算法交易这条路上摸爬滚打了好几年&#xff0c;那你一定经历过这样的场景&#xff1a;为了复现一篇顶级期刊论文里的某个特征工程方法&#xff0c;你需…...

长期使用taotoken token plan套餐的成本节约感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用 Taotoken Token Plan 套餐的成本节约感受 对于需要稳定调用大模型 API 的个人开发者或团队而言&#xff0c;成本控制是一…...