Python-科学计算-pandas-03-两列相乘

微信公众号原文

系统:Windows 7
语言版本:Anaconda3-4.3.0.1-Windows-x86_64
编辑器:pycharm-community-2016.3.2

  • 这个系列讲讲Python的科学计算版块
  • 今天讲讲pandas模块:DataFrame不同列相乘

Part 1:示例

  1. 已知一个DataFrame,有4列["quality_1", "measure_value", "up_tol", "down_tol"]
    • 对应的实物意义是:对一个商品的四处位置测量其某一质量特性,并给出该四处的质量标准,上限和下限
    • 本示例中,如何判断有几处位置其质量特性是不符合要求的,即measure_value列的值不在公差上下限范围内,采用的算法如下图
  2. 希望生成3个新的列(前面2列上一篇文章已经介绍过)
    • up_measure中每个值=列up_tol-列measure_value
    • measure_down中每个值=列measure_value-列down_tol
    • mul中每个值=列up_measure * 列measure_down
    • 如果mul列小于0,则该位置质量特性不合格

判断超差


1.png

Part 2:代码

import pandas as pd
dict_1 = {"quality_1": ["pos_1", "pos_2", "pos_3", "pos_4", "pos_5"],
          "measure_value": [6, 4, 6, 3.5, 2.5],
          "up_tol": [5, 5, 3, 3, 2],
          "down_tol": [-5, -5, -3, -3, 2]}
df = pd.DataFrame(dict_1, columns=["quality_1", "measure_value", "up_tol", "down_tol"])
df["up_measure"] = df["up_tol"] - df["measure_value"]
df["measure_down"] = df["measure_value"] - df["down_tol"]
df["mul"] = df["up_measure"].mul(df["measure_down"])
print(df)
df_2 = df[df["mul"] < 0]
print("\n", df_2)
unqualified_num = df_2["mul"].count()
print("\n不合格数目", unqualified_num)

代码截图


2.png

执行结果


3.png

Part 3:部分代码解读

  1. df["mul"] = df["up_measure"].mul(df["measure_down"]),两列每行分别相乘相减,生成一个新的列
  2. df_2 = df[df["mul"] < 0],对df进行筛选,筛选条件为:mul列数值小于0
  3. unqualified_num = df_2["mul"].count()获取mul列数目,也可以使用unqualified_num = df_2.shape获取行数及列数

shape输出


4.png

本文为原创作品,欢迎分享朋友圈

长按图片识别二维码,关注本公众号
Python 优雅 帅气


12×0.8.jpg
https://www.jianshu.com/p/34a9d60c270a

Python量化投资网携手4326手游为资深游戏玩家推荐:《《阴阳师:百闻牌》:式神介绍 |【海坊主】巨浪啊,吞噬一切吧!

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论