python数据处理与分析入门-pandas使用(4)

往期文章:

  1. pandas使用1
  2. pandas使用2
  3. pandas使用3

pandas使用技巧

创建一个DF对象

# 首先创建一个时间序列
dates = pd.date_range('20180101', periods=6)
print(dates)# 创建DataFrame对象,指定index和columns标签
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))
print(df)

布尔型索引使用

# 用一列的值来选择数据
print(df.A > 0)
print("-----------------------------------------------")
# 使用.isin()函数过滤数据
df2 = df.copy()
df2['E'] = ['one', 'one','two','three','four','three']
# 提取df2中'E'值属于['two', 'four']的行
print(df2[df2['E'].isin(['two','four'])])
# 输出
2018-01-01     True
2018-01-02     True
2018-01-03    False
2018-01-04    False
2018-01-05    False
2018-01-06     True
Freq: D, Name: A, dtype: bool
-----------------------------------------------A         B         C         D     E
2018-01-03 -0.737122 -1.018953  1.367684  0.038003   two
2018-01-05 -1.120744 -0.270765 -0.182049 -1.142167  four
# 为DataFrame创建一个新的列,其值为时间顺序(与df相同)的索引值
s1 = pd.Series([1,2,3,4,5,6], index=pd.date_range('20180101', periods=6))
print(s1)df['F'] = s1# 按标签赋值
df.at[dates[0],'A'] = 0# 按索引赋值
df.iat[0,1] = 0# 用Numpy数组赋值
df.loc[:,'D'] = np.array([5] * len(df))
print("-----------------------------------------------")
# 最终结果
print(df)
# 输出
2018-01-01    1
2018-01-02    2
2018-01-03    3
2018-01-04    4
2018-01-05    5
2018-01-06    6
Freq: D, dtype: int64
-----------------------------------------------A         B         C  D  F
2018-01-01  0.000000  0.000000 -1.688875  5  1
2018-01-02  0.405921  0.596388  0.742552  5  2
2018-01-03 -0.737122 -1.018953  1.367684  5  3
2018-01-04 -0.356770  1.083033  0.876066  5  4
2018-01-05 -1.120744 -0.270765 -0.182049  5  5
2018-01-06  1.279730 -0.662744  0.443358  5  6

缺失数据

Pandas默认使用np.nan来代表缺失数据。Reindexing允许用户对某一轴上的索引改/增/删,并返回数据的副本

# 创建DataFrame对象df1,以dates[0:4]为索引,
# 在df的基础上再加一个新的列'E'(初始均为NaN)
df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])
print(df1)
print("-----------------------------------------------")
# 将'E'列的前两个行设为1
df1.loc[dates[0]:dates[1],'E'] = 1
print(df1)
# 输出A         B         C  D  F   E
2018-01-01  0.000000  0.000000 -1.688875  5  1 NaN
2018-01-02  0.405921  0.596388  0.742552  5  2 NaN
2018-01-03 -0.737122 -1.018953  1.367684  5  3 NaN
2018-01-04 -0.356770  1.083033  0.876066  5  4 NaN
-----------------------------------------------A         B         C  D  F    E
2018-01-01  0.000000  0.000000 -1.688875  5  1  1.0
2018-01-02  0.405921  0.596388  0.742552  5  2  1.0
2018-01-03 -0.737122 -1.018953  1.367684  5  3  NaN
2018-01-04 -0.356770  1.083033  0.876066  5  4  NaN
# 处理缺失数据
# 剔除df1中含NaN的行(只要任一一列为NaN就算)
df2 = df1.dropna(how='any')
print(df2)
print("--------------------------------------")
# 用5填充df1里的缺失值
df2 = df1.fillna(value=5)
print(df2)
print("--------------------------------------")
# 判断df2中的值是否为缺失数据,返回True/False
print(pd.isnull(df2))
# 输出A         B         C  D  F    E
2018-01-01  0.000000  0.000000 -1.688875  5  1  1.0
2018-01-02  0.405921  0.596388  0.742552  5  2  1.0
--------------------------------------A         B         C  D  F    E
2018-01-01  0.000000  0.000000 -1.688875  5  1  1.0
2018-01-02  0.405921  0.596388  0.742552  5  2  1.0
2018-01-03 -0.737122 -1.018953  1.367684  5  3  5.0
2018-01-04 -0.356770  1.083033  0.876066  5  4  5.0
--------------------------------------A      B      C      D      F      E
2018-01-01  False  False  False  False  False  False
2018-01-02  False  False  False  False  False  False
2018-01-03  False  False  False  False  False  False
2018-01-04  False  False  False  False  False  False
此类操作默认排除缺失数据
# 重新创建一份数据
dates = pd.date_range('20180101', periods=6)
df = pd.DataFrame(np.ones((6,4)), index=dates, columns=list('ABCD'))
s = pd.Series([2,2,2,2,2,2], index=dates)
df['E'] = s
df.head()
# 求平均值
print(df.mean())
print("------")# 一行求平均值
print(df.mean(1))
print("------")# 创建Series对象s,以dates为索引并平移2个位置
s = pd.Series([1,3,5,np.nan,6,8], index=dates).shift(2)
print(s)
print("------")# 从df中逐列减去s(若有NaN则得NaN)
print(df.sub(s, axis='index'))# 逐行累加
print(df.apply(np.cumsum))
print("------")# 每列的最大值减最小值
print(df.apply(lambda x: x.max() - x.min()))# 字符
# Series对象的str属性具有一系列字符处理方法,可以很轻松地操作数组的每个元素。
s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])
print(s.str.lower())

更多内容请查看我的gittee仓库 : Python基础练习

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

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

相关文章

el-select下拉框 添加 el-checkbox 多选框,支持全选、取消全选

el-select下拉框 添加 el-checkbox 多选框,支持全选、取消全选 前言一、实现思路二、实现代码1.模板代码2. css 样式3.js 代码 DEMO 演示总结 前言 实现效果预览 提示:本内容基于element-ui 组件实现,如果使用其他组件库、可参考下面实现方…

「AIGC算法」线性回归模型

线性回归是统计学和机器学习中一种常用的监督学习算法,用于预测连续数值型的输出。线性回归模型试图找到特征变量(或称自变量)与目标变量(因变量)之间的线性关系。 线性回归的两种主要类型: 简单线性回归&a…

学习Nginx(三):命令与信号

命令及选项 1. 显示帮助信息: [rootRockyLinux9 ~]# nginx -h nginx version: nginx/1.26.0 Usage: nginx [-?hvVtTq] [-s signal] [-p prefix][-e filename] [-c filename] [-g directives]选项:-?,-h : 显示帮助信息-v : 显示版本信息-V …

Error in debuggerConnector: connect ECONNREFUSED问题解决

最近重新开始electron开发,两三年前写的代码几乎看不懂了。。然后debug一下,直接报错了: Debugger listening on ws://127.0.0.1:20793/d146ffdb-c3b8-4480-a8d8-d04bb643c7c1 For help, see: https://nodejs.org/en/docs/inspector Error i…

关于GitHub仓库建立及提交问题

文章目录 前言GitHub仓库创建token令牌的获取GitHub克隆到本地GitHub上传文件 前言 为了整一个GitHub仓库然后上传文件,笔者看了不下100篇博客,20段教程,最后在两位大佬的帮助下,才整明白了😭 先提前说一嘴从 2021年8月…

网络爬虫安全:90后小伙,用软件非法搬运他人原创视频被判刑

目录 违法视频搬运软件是网络爬虫 如何发现偷盗视频的爬虫? 拦截违法网络爬虫 央视《今日说法》栏目近日报道了一名程序员开发非法视频搬运软件获利超700多万,最终获刑的案例。 国内某知名短视频平台报警称,有人在网络上售卖一款视频搬运…

刘邦的创业团队是沛县人,朱元璋的则是凤阳;要创业,一个县人才就够了

当人们回顾刘邦和朱元璋的创业经历时,总是会感慨他们起于微末,都创下了偌大王朝,成就无上荣誉。 尤其是我们查阅史书时,发现这二人的崛起班底都是各自的家乡人,例如刘邦的班底就是沛县人,朱元璋的班底是凤…

大模型技术介绍和实现流程以及向量库的介绍

多模态大模型:(Multimodal Models)指能够处理和生成多种类型数据(如文本、图像、音频等)的机器学习模型。该模型整合了来自不同模态的数据,从而提高了任务执行的准确性和广度。 一、多模态大模型 任务步骤…

分布式搜索-elaticsearch基础 概念

什么是elaticsearch: 倒排索引:就是将要查询的内容分成一个个词条,在将词条文档id存入,词条是唯一的。 文档词条总结: mysql和Elasticsearch概念对比: 架构: 基本概念总结:

Linux上执行内存中的脚本和程序

在Linux中可以不需要有脚本或者二进制程序的文件在文件系统上实际存在,只需要有对应的数据在内存中,就有办法执行这些脚本和程序。 原理其实很简单,Linux里有办法把某块内存映射成文件描述符,对于每一个文件描述符,Lin…

一线互联网大数据面试题核心知识库(100万字)

本面试宝典涵盖大数据面试高频的所有技术栈,包括Liunx&Shell基础,Hadoop,Zookpeer,Flume,Kafka,Hive,Datax,Maxwell,DolphinScheduler,Spark Core&SQ…

光伏行业该如何起步?

随着全球对可再生能源的需求日益增长,光伏行业作为其中的佼佼者,正迎来前所未有的发展机遇。然而,对于新进入者或希望在这一领域有所建树的企业来说,如何起步并稳健发展是一个值得深思的问题。以下是一些关于光伏行业起步的建议。…

MySQL-事务篇

文章目录 何为事务?什么是事务的ACID特性?并发事务带来了哪些问题?不可重复读和幻读有什么区别?并发事务的控制方式有哪些?SQL标准定义了哪些事务隔离级别?MYSQL的隔离级别是基于锁实现的吗? 何…

微服务- protobuf 安装

这里写自定义目录标题 1:下载链接2 :下载对应的包3:解压到目录4:设置环境变量5: 查看版本 1:下载链接 https://github.com/protocolbuffers/protobuf/releases 2 :下载对应的包 3:解压到目录 4&…

从RTTR谈Reflection机制

虽然C11引入了RTTI、Metaprogramming 等技术,但C在Reflection编程方面依旧功能有限。在社区上,RTTR则提供了一套C编写的反射库,补充了C在Reflection方面的缺陷。 零、环境 操作系统Windows 11Visual StudioVisual Studio Community 2022 CMa…

git 命令 - rebase

简介 git rebase 是一个用于重新应用一系列提交到另一个基础的 Git 命令。 它可以用来整合来自不同分支的更改,同时保持项目历史的整洁。 操作流程 开始变基: 要开始一个变基操作,你需要指定一个基础分支。通常,这个基础分支是…

2024.05.14 Diffusion 代码学习笔记

配环境 我个人用的是Geowizard的环境:https://github.com/fuxiao0719/GeoWizard。 出于方便考虑,用的pytorch官方的docker容器,因此python版本(3.10)和原作者(3.9)不同,其余都是一…

一文说通用户故事点数是什么?

一文说通用户故事点数是什么? 第26期:一文说通用户故事点数是什么? 用户故事点数是一种采用相对估算法进行估算的一种工具,一般采用斐波那契数列表征用户故事里说的大小,采用0 1 2 3 5 8 13这样的一些数字来表征用户…

【漏洞复现】Secnet-智能路由系统 actpt_5g.data信息泄露

0x01 产品简介 Secnet安网智能AC管理系统是广州安网通信技术有限公司(简称“安网通信”)的无线AP管理系统 0x02 漏洞描述 Secnet智能路由系统 acipt 5g.data 接口存在信息泄露漏洞,未经身份验证的远程攻击者可以利用此漏洞获取系统账户名密码等重要凭据&#xff…

全流程TOUGH系列软件实践技术应用

TOUGH系列软件是由美国劳伦斯伯克利实验室开发的,旨在解决非饱和带中地下水、热运移的通用模拟软件。和传统地下水模拟软件Feflow和Modflow不同,TOUGH系列软件采用模块化设计和有限积分差网格剖分方法,通过配合不同状态方程(EOS模…