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)合并

可以忽略原来的索引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454779.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Hbase]一 HBase基础

1. HBase简介 1.1 HBase定义 HBase数据模型的关键在于 稀疏、分布式、多维、排序 的映射。其中映射 map指代非关系型数据库的 key-Value结构。 1.2 HBase数据模型 1)Name Space 命名空间,类似于关系型数据库的database 概念,每个命名空间下有多个表。HBase 两个自…

MFC工控项目实例二十五多媒体定时计时器

承接专栏《MFC工控项目实例二十四模拟量校正值输入》 用多媒体定时器实现0.1秒计时器 1、在SEAL_PRESSUREDlg.h文件中添加代码 #include<MMSystem.h> #pragma comment(lib,"winmm.lib")class CSEAL_PRESSUREDlg : public CDialog { public:CSEAL_PRESSUREDlg(…

Redis实现全局ID生成器

全局ID生成器 为什么要用全局ID生成器 1.当我们使用数据库自增来实现id的生成时,规律过于明显,会给用户暴露很多信息 2.当我们订单量过大时无法用数据库的一张表来存放订单,如果两张表的id都是自增的话,id就会出现重复 什么是全局ID生成器 全局ID生成器,是一种在分布式系统…

css刮刮卡效果(附源码!!!)

这个刮刮卡PC端和移动端都可以用使用 首发的公众号[小白讲前端]欢迎大家关注浏览 PC端展现 移动端展示 源码(PC和移动端直接复制运行) <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content&quo…

宣恩文旅微短剧双作开机,融合创新助力城市经济发展

近日&#xff0c;宣恩文旅微短剧《弥彰》与《新年恋爱申请&#xff0c;请通过》正式开机。这两部作品由常斌、徐子琁、常喆宽、李果、况琪儿、梅凯杰、刘书赫等实力派演员领衔主演&#xff0c;不仅汇聚了众多演艺界的佼佼者&#xff0c;更承载着宣恩县文化旅游事业的创新与发展…

【从零开始的LeetCode-算法】3075. 幸福值最大化的选择方案

给你一个长度为 n 的数组 happiness &#xff0c;以及一个 正整数 k 。 n 个孩子站成一队&#xff0c;其中第 i 个孩子的 幸福值 是 happiness[i] 。你计划组织 k 轮筛选从这 n 个孩子中选出 k 个孩子。 在每一轮选择一个孩子时&#xff0c;所有 尚未 被选中的孩子的 幸福值 …

【ELK】初始阶段

一、logstash学习 安装的时候最好不要有中文的安装路径 使用相对路径 在 Windows PowerShell 中&#xff0c;如果 logstash 可执行文件位于当前目录下&#xff0c;你需要使用相对路径来运行它。尝试输入以下命令&#xff1a; .\logstash -e ‘input { stdin { } } output { s…

Ubuntu22.04 制作系统ISO镜像

第一步&#xff1a;安装软件-Systemback 1.如果已经添加过ppa&#xff0c;可以删除重新添加或者跳过此步 sudo add-apt-repository --remove ppa:nemh/systemback 2.添加ppa 我是ubuntu20&#xff0c;但这个软件最后支持的是 ubuntu16.04版本&#xff0c;所以加一个16版本…

通过Python爬虫获取商品销量数据,轻松掌握市场动态

为什么选择Python爬虫&#xff1f; 简洁易用&#xff1a;Python语言具有简洁的语法和丰富的库&#xff0c;使得编写爬虫变得简单高效。强大的库支持&#xff1a;Python拥有强大的爬虫框架&#xff08;如Scrapy、BeautifulSoup、Requests等&#xff09;&#xff0c;可以快速实现…

算法1—八大常用排序算法(上)

1.直接插入排序 原理&#xff1a;从arr[0]开始&#xff0c;每次和后一个数据比大小&#xff0c;然后根据需要的是升序还是降序进行操作。 最差的情况下时间复杂度&#xff1a;O&#xff08;n&#xff09; 最好的情况下时间复杂度&#xff1a;O&#xff08;1&#xff09; 所…

漏洞挖掘 | 通过域混淆绕过实现账户接管

由于这是一个私有项目&#xff0c;我将使用 example.com 来代替。 很长一段时间以来&#xff0c;我一直想在漏洞赏金项目中找到一个账户接管&#xff08;ATO&#xff09;漏洞。于是&#xff0c;我开始探索项目范围内的 account.example.com。 我做的第一件事就是注册一个新账…

WebRTC音频 03 - 实时通信框架

WebRTC音频01 - 设备管理 WebRTC音频 02 - Windows平台设备管理 WebRTC音频 03 - 实时通信框架(本文) WebRTC音频 04 - 关键类 WebRTC音频 05 - 音频采集编码 一、前言&#xff1a; 前面介绍了音频设备管理&#xff0c;并且以windows平台为例子&#xff0c;介绍了ADM相关的类…

探索 Web Audio API 的奇妙世界

Web Audio API 是一项强大而灵活的 JavaScript API&#xff0c;它允许开发者在网页中处理和生成音频。本文将带您深入了解 Web Audio API 的基本概念&#xff0c;并介绍一些令人兴奋的应用场景。 1. 什么是 Web Audio API&#xff1f; Web Audio API 是一组用于处理和生成音频…

react18中在列表项中如何使用useRef来获取每项的dom对象

在react中获取dom节点都知道用ref&#xff0c;但是在一个列表循环中&#xff0c;这样做是行不通的&#xff0c;需要做进一步的数据处理。 实现效果 需求&#xff1a;点击每张图片&#xff0c;当前图片出现在可视区域。 代码实现 .box{border: 1px solid #000;list-style: …

计算机专业大学四年的学习路线(非常详细),零基础入门到精通,看这一篇就够了

前言 许多学子选择踏上计算机这条充满挑战与机遇的道路。但在大学四年中&#xff0c;如何规划自己的学习路线&#xff0c;才能在毕业时脱颖而出&#xff0c;成为行业的佼佼者呢&#xff1f; 第一学年&#xff1a;基础知识的奠基 1.1 课程安排 在大学的第一年&#xff0c;重…

elementUI进度条el-progress不显示白色

效果图 通过设置百分比为100,动态修改进度条的宽度完成 <template><div class"myProgressBox"><div class"index">{{ index }}</div><div class"typeTitle">{{ typeTitle }}</div><div class"twoP…

【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第六篇-阶段总结篇】

因为马上就要进入下一个阶段&#xff0c;制作动态编辑体积纹理的模块。 但在这之前&#xff0c;要在这一章做最后一些整理。 首先&#xff0c;我们完成没完成的部分。其次&#xff0c;最后整理一下图表。最后&#xff0c;本文附上正在用的贴图 完善Shader 还记得我们之前注…

『完整代码』坐骑召唤

创建一个按钮 作为召唤/消失坐骑的开关 将预制体放入指定文件夹 命名为Mount01 创建脚本并编写&#xff1a;CallMount.cs using UnityEngine; using UnityEngine.UI; public class CallMount : MonoBehaviour{public Button callBtn;GameObject mountPrefab;GameObject mountIn…

嵌套div导致子区域margin失效问题解决

嵌套div导致子区域margin失效问题解决 现象原因解决方法 现象 <div class"prev"></div> <div class"parent"><div class"child"></div><div class"child"></div> </div> <div cl…

Netty无锁化设计之对象池实现

池化技术是比较常见的一种技术&#xff0c;在平时我们已经就接触很多了&#xff0c;比如线程池&#xff0c;数据库连接池等等。当我们要使用一个资源的时候从池中去获取&#xff0c;用完就放回池中以便其他线程可以使用&#xff0c;这样的目的就是为了减少资源开销&#xff0c;…