一、DataFrame是否为空

判断整个DataFrame是否为空的方法:

pandas.DataFrame.empty

示例:

df = pd.DataFrame({'fruits':['apple', 'orange', 'watermelon'], 'price':[6, 4, 2]})
dffruits  price
0       apple      6
1      orange      4
2  watermelon      2if df.empty:print('=== df为空 ===')
else:print('=== df非空 ===')  # === df非空 ===df_empty = pd.DataFrame(columns=['fruits', 'price'])df_empty
Empty DataFrame
Columns: [fruits, price]
Index: []if df_empty.empty:print('=== df_empty为空 ===')  # === df_empty为空 ===
else:print('=== df_empty非空 ===') 

而判断具体某个元素是否为NAN,则可以使用isna()函数:

df = pd.DataFrame({'fruits':['apple', 'orange', 'watermelon'], 'price':[6, 4, 2]})
dffruits  price
0       apple      6
1      orange      4
2  watermelon      2
df.isna()fruits  price
0   False  False
1   False  False
2   False  False

或者使用空值的特征判断(NAN的一大特征就是不等于本身):

np.nan != np.nan
True

二、DataFrame行/列差值计算

计算DataFrame行/列的差值使用:

DataFrame.diff(periods=1, axis=0)

其中,

  • periods:默认值是1,表示两行/列的索引之差,即平移的区间,periods为正整数表示索引大的行/列减去索引小的,反之;
  • axis:运算的轴,默认为0,表示按照行进行计算,axis=1,表示按照列进行计算。

示例:

2.1 periods示例

df = pd.DataFrame({'price':[6, 4, 2, 4, 6], 'weight': [12, 43, 23, 3, 5], 'total':[72, 172, 46, 12, 30]})dfprice  weight  total
0      6      12     72
1      4      43    172
2      2      23     46
3      4       3     12
4      6       5     30# 默认对行操作,periods=1表示后一行减前一行
df.diff(periods=1)price  weight  total
0    NaN     NaN    NaN
1   -2.0    31.0  100.0
2   -2.0   -20.0 -126.0
3    2.0   -20.0  -34.0
4    2.0     2.0   18.0# periods=2表示做差的两行间相隔一行
df.diff(periods=2)price  weight  total
0    NaN     NaN    NaN
1    NaN     NaN    NaN
2   -4.0    11.0  -26.0
3    0.0   -40.0 -160.0
4    4.0   -18.0  -16.0# 默认对行操作,periods=-1表示前一行减后一行
df.diff(periods=-1)price  weight  total
0    2.0   -31.0 -100.0
1    2.0    20.0  126.0
2   -2.0    20.0   34.0
3   -2.0    -2.0  -18.0
4    NaN     NaN    NaN

2.2 axis示例

dfprice  weight  total
0      6      12     72
1      4      43    172
2      2      23     46
3      4       3     12
4      6       5     30# axis=0表示对行操作
df.diff(periods=1, axis=0)price  weight  total
0    NaN     NaN    NaN
1   -2.0    31.0  100.0
2   -2.0   -20.0 -126.0
3    2.0   -20.0  -34.0
4    2.0     2.0   18.0# axis=1表示对列操作
df.diff(periods=1, axis=1)price  weight  total
0    NaN       6     60
1    NaN      39    129
2    NaN      21     23
3    NaN      -1      9
4    NaN      -1     25

三、DataFrame行/列变化率计算

计算DataFrame中行/列的变化率时使用函数:

pd.DataFrame.pct_change(periods, fill_method, limit, freq, **kwargs)

参数含义:

  • periods : int类型,默认为1,含义同diff函数中的periods
  • fill_method : str类型, 默认为’pad’,表示在计算变化率之前如何处理空值。'pad’表示使用前一个值进行缺失值填充;
  • limit : int类型, 默认为None,表示填充的最大NA的数量,如果NA的数量大于limit,那么停止填充NA元素;
  • freq : DateOffset, timedelta, 或者 str类型,可选参数,表示时间序列 API 中使用的增量(例如“M”或BDay());
  • **kwargs,其他传递到 DataFrame.shiftSeries.shift的关键字参数。

函数返回值类型与调用对象一致,为Series或者DataFrame。

Examples:

-----------
**Series**
----------->>> s = pd.Series([90, 91, 85])>>> s0    901    912    85dtype: int64>>> s.pct_change()0         NaN1    0.0111112   -0.065934dtype: float64>>> s.pct_change(periods=2)0         NaN1         NaN2   -0.055556dtype: float64# 存在空值时,使用前一个有效值先填充后再计算>>> s = pd.Series([90, 91, None, 85])>>> s0    90.01    91.02     NaN3    85.0dtype: float64>>> s.pct_change(fill_method='ffill')0         NaN1    0.0111112    0.0000003   -0.065934dtype: float64---------------
**DataFrame**
--------------->>> df = pd.DataFrame({...     'FR': [4.0405, 4.0963, 4.3149],...     'GR': [1.7246, 1.7482, 1.8519],...     'IT': [804.74, 810.01, 860.13]},...     index=['1980-01-01', '1980-02-01', '1980-03-01'])>>> dfFR      GR      IT1980-01-01  4.0405  1.7246  804.741980-02-01  4.0963  1.7482  810.011980-03-01  4.3149  1.8519  860.13>>> df.pct_change()FR        GR        IT1980-01-01       NaN       NaN       NaN1980-02-01  0.013810  0.013684  0.0065491980-03-01  0.053365  0.059318  0.061876# 对列进行变化百分比计算,同时periods=-1表示前一列相对后一列的变化率>>> df = pd.DataFrame({...     '2016': [1769950, 30586265],...     '2015': [1500923, 40912316],...     '2014': [1371819, 41403351]},...     index=['GOOG', 'APPL'])>>> df2016      2015      2014GOOG   1769950   1500923   1371819APPL  30586265  40912316  41403351>>> df.pct_change(axis='columns', periods=-1)2016      2015  2014GOOG  0.179241  0.094112   NaNAPPL -0.252395 -0.011860   NaN

【述毕】

笔者独自运营了微信公众号,用于分享个人学习及工作生活趣事,大家可以关注一波。(微信搜索“微思研”)

【Python实用基础整合(二)】DataFrame是否为空判断及行/列差值、变化率计算相关推荐

  1. python实用技巧(二)

    Python实用技巧(一) python实用技巧(二) python实用技巧(三) python实用技巧(四) code 解释 补充 list.reverse() 返回值类型为NoneType l.r ...

  2. python pyramid基础学习二

    python pyramid基础学习二 1.前言 前面我们使用了基础命令创建pyramid项目,并运行了Hello word,万事开头难,我们知道了开发pyramid项目需要一个env文件夹,里面包 ...

  3. Python机器学习基础篇二《监督学习》

    前言 前期回顾: Python机器学习基础篇一<为什么用Python进行机器学习> 前面说过,监督学习是最常用也是最成功的机器学习类型之一.本章将会详细介绍监督学 习,并解释几种常用的监督 ...

  4. python爬虫基础(二)

    文章目录 python爬虫 1.异步爬虫 异步爬虫之多进程and多线程(不建议使用) 异步爬虫之线程池and进程池(适当使用) 单线程+异步协程(推荐) 补充:回调函数 补充:yield 多任务异步协 ...

  5. Python判断DataFrame或者其中某一项的值是否为空,提取某列唯一值

    目录 DataFrame某一项的值是否为空 判断dataframe是否为空 提取唯一值: DataFrame某一项的值是否为空 判断DataFrame中某一项的值是否为空的方法有两种: 1.通过pd. ...

  6. python语言基础(二)环境搭建

    一.编译器和解释器 python是解释性语言,它含有解释器,在python安装路径下,python.exe其实就是可执行的程序,含有内置的标准库和方法. 编辑器 是写代码的工具,不是编译器. 高级语言 ...

  7. Python实用脚本【二】

    书接上文,再奉上几个小工具,方便实用!!! 1. 图片添加水印 from PIL import Image from PIL import ImageFont from PIL import Imag ...

  8. Python实用基础(思路+资料整理+代码)

    Python 练习册(笔记) 说明: https://www.zybuluo.com/susugreen/note/2512434 点此链接,会看到部分题目的代码,仅供参考 本文本文由@史江歌(shi ...

  9. Python爬虫基础操作二

    目录 四.爬虫数据存储csv/excel 五.session与cookies 六.selenium库:控制浏览器操作 七.定时与邮件 上一篇爬虫操作基础,本篇讲解爬虫数据存储.cookies,sess ...

最新文章

  1. python异常值处理实例_Python异常值处理与检测
  2. 通信基站(dfs回溯,思维)
  3. 那个学Python的同龄人,也许已经超越你了!
  4. 二叉树的前序遍历Python解法
  5. Go Python 7: 2-Layer Neural Network
  6. [渝粤教育] 山东第一医科大学 健康教育与健康促进 参考 资料
  7. [css] 如何使用css实现跨浏览器的最小高度?
  8. Android 功耗(11)---如何测试 Mediatek 平台各个场景的功耗数据?
  9. flex 1037:包不能嵌套
  10. Kramdown 配置不当引发 GitHub Pages 多个 RCE,得 $2.5万($6.1万系列之二)
  11. paip.提升用户体验-----c++ 宏的使用...替换从在的地张儿复制过来的代码.
  12. Python 数据相关性分析
  13. 物理建模钢琴-Modartt Pianoteq Pro v6.7.0 WiN
  14. 从零开始学习大数据系列之Linux-02Vim与Shell script
  15. 云端部署 vs 本地化部署
  16. Android涂鸦框架Doodle——仿微信图片编辑(多功能画板)
  17. VS2019显示错误未定义标识符delay
  18. 如何知晓计算机的字长,计算机字长是什么意思,如何判断指令格式是单字长还是双字长...
  19. Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack tra
  20. Shopee首届跨境品牌峰会落幕,升级全链路赋能品牌出海劲增!

热门文章

  1. 刺激战场:伏地魔的福音,如何减少起身停顿?我教你一个小方法
  2. Anaconda Spyder打不开的问题:Bad file descriptor
  3. 一文读懂AI计算机视觉技术!
  4. Segoe UI字体
  5. Atom插件开发入门教程(四)
  6. C++设计模式(18)——模板方法模式
  7. 计算机术语英文 盘位,双盘位4种阵列模式,Yottamaster双盘位硬盘盒不仅酷
  8. 软件架构关键需求checklist
  9. 路由器端口配置及常用信息查看
  10. 3dmax:3dmax三维VR渲染设置之高级灯光渲染(自然光照明+人工光照明+灯光属性讲解、灯光渲染参数解释、不布光顺序)图文教程之详细攻略