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

这篇具有很好参考价值的文章主要介绍了【Python实用基础整合(二)】DataFrame是否为空判断及行/列差值、变化率计算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、DataFrame是否为空

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

pandas.DataFrame.empty

示例:

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

if 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]})
df
       fruits  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]})

df
   price  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示例

df
   price  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])
        >>> s
        0    90
        1    91
        2    85
        dtype: int64

        >>> s.pct_change()
        0         NaN
        1    0.011111
        2   -0.065934
        dtype: float64

        >>> s.pct_change(periods=2)
        0         NaN
        1         NaN
        2   -0.055556
        dtype: float64

        # 存在空值时,使用前一个有效值先填充后再计算
        >>> s = pd.Series([90, 91, None, 85])
        >>> s
        0    90.0
        1    91.0
        2     NaN
        3    85.0
        dtype: float64

        >>> s.pct_change(fill_method='ffill')
        0         NaN
        1    0.011111
        2    0.000000
        3   -0.065934
        dtype: 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'])
        >>> df
                        FR      GR      IT
        1980-01-01  4.0405  1.7246  804.74
        1980-02-01  4.0963  1.7482  810.01
        1980-03-01  4.3149  1.8519  860.13

        >>> df.pct_change()
                          FR        GR        IT
        1980-01-01       NaN       NaN       NaN
        1980-02-01  0.013810  0.013684  0.006549
        1980-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'])
        >>> df
                  2016      2015      2014
        GOOG   1769950   1500923   1371819
        APPL  30586265  40912316  41403351
        
        >>> df.pct_change(axis='columns', periods=-1)
                  2016      2015  2014
        GOOG  0.179241  0.094112   NaN
        APPL -0.252395 -0.011860   NaN


【述毕】

笔者独自运营了微信公众号,用于分享个人学习及工作生活趣事,大家可以关注一波。(微信搜索“微思研”)文章来源地址https://www.toymoban.com/news/detail-567500.html

到了这里,关于【Python实用基础整合(二)】DataFrame是否为空判断及行/列差值、变化率计算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java中如何判断map是否为空

    java中判断map是否为空的方法是:利用isEmpty()函数来判断。 isEmpty()是Java中用于判断某种容器是否有元素的系统库函数。如用来判断ArrayList,HashSet,HashMap是否有元素等。 在Java中,可以用isEmpty();判断一个顺序容器ArrayList里面是否有元素,如果有的话返回一个Boolean类型的值fal

    2024年02月16日
    浏览(95)
  • 微信小程序判断对象是否存在或为空

    要取节点data.result.image的值,正常情况下有该节点如下图所示  但出错的情况下该节点不存在,直接取会出错 所以添加节点是否存在和是否为空的判断,存在且不为空时才显示  测试发现通过typeof判断节点是否存在时要一层层判断,如果data.result已经不存在,直接判断data.re

    2024年02月04日
    浏览(49)
  • 浅谈Java判断变量是否为空的问题

      Java的StringUtil.isEmpty(str)和\\\"\\\".equals(str)都是用来判断字符串是否为空的方法,但它们有一些不同的使用场景。 📌 StringUtil.isEmpty()   StringUtil.isEmpty(str)通常用于判断字符串是否为null或者长度为0,如果字符串为null或者长度为0,则返回true,否则返回false。这种方式适用于需

    2023年04月11日
    浏览(89)
  • Optional的使用(代替if判断是否为空)

    我的使用 雨泽的使用 结果: 这里不知道他有没有走map方法。 但是通过看源码可以知道。其实他是走了map方法的,但是为什么没有抛出空指针异常呢?你null.map()了。 因为他内部把null转换了一下,你Optional.ofNullable(sysUser)返回值不是null了。所以调用map方法不会出现空指针异常

    2024年01月25日
    浏览(38)
  • 判断List、Map集合是否为空的方法

    1.判断List集合是否为空 1.1List集合已经完成初始化  这里的List集合已经完成了初始化操作,相当于是一个瓶子可以装水了,但是此时还没有水。  控制台输出:List is empty.  1.2List集合未完成初始化  这里的List集合,还没有进行初始化,相当于瓶子还不存在,用list.isEmpty()会产

    2024年02月15日
    浏览(46)
  • Java中判断对象是否为空的方法详解

    在Java编程中,经常会遇到判断对象是否为空的情况。空指针异常是常见的程序错误之一,因此在编码过程中,判断对象是否为空是一个重要的防御措施。本篇博客将深入探讨Java中判断对象是否为空的不同方法,包括使用条件判断、使用Java 8的Optional类、使用Apache Commons Lang库

    2024年02月13日
    浏览(49)
  • MATLAB知识点:isempty函数(★★★★☆)判断数组是否为空

    ​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章:课后习题讲解中拓展的函数 在讲解第三章课后习题的过程中,我给大家拓展了一些讲义中没有

    2024年04月22日
    浏览(38)
  • JavaScript判断对象是否为空对象的几种方法

    目录 1、空对象对应的字符串为 \\\"{}\\\" 2、for in 3、jquery 的 isEmptyObject()方法 4、Object.getOwnPropertyNames() 5、ES6 的 Object.keys() JSON.stringify()扩展 1、第一大特性 小结 2、第二大特性 3、第三大特性 4、第四大特性 5、第五大特性 6、第六大特性 7、第七大特性 8、第八大特性 var data = {}; v

    2024年01月16日
    浏览(67)
  • 【python基础知识】python中怎么判断两个字符串是否相等

    目录 有哪些判断方法 1. == 运算符 2. is 运算符 有哪些特殊情况 1. 字符串中包含空格、换行符、制表符等特殊字符 2. 字符串编码格式的不同 3. 字符串对象的创建方式不同 注意事项 1. 避免使用is运算符进行字符串比较 2. 注意空格、换行符、制表符等特殊字符的影响 3. 注意字符

    2024年02月08日
    浏览(57)
  • java实用小技巧:判断list是否有重复项

    在项目中经常会遇到这样的场景,就是一个list,根据某种规则,我要去判断里面是不是有重复的项。 难度不高,但有点烦,所以专门开一篇文章来记录一下,争取弄一个相对简洁的写法。 先看一个简单的例子:  这是一个泛型方法 `distinctList`,它接受一个 `List` 类型的参数

    2023年04月14日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包