这次介绍的小技巧不是统计,而是把统计结果作为新列和原来的数据放在一起。
pandas的各种统计功能之前已经介绍了不少,但是每次都是统计结果归统计结果,原始数据归原始数据,
没有把它们合并在一个数据集中来观察。

下面通过两个场景示例来演示如果把统计值作为新列的数据。

1. 成绩统计的场景

成绩统计及其类似的场景比较常见,也就是把每行统计的结果作为该行的一个新列。
比如:

import pandas as pd
import numpy as np df = pd.DataFrame(
np.random.randint(60, 100, (4, 3))
)
df.columns = ["语文", "数学", "英语"]
df.index = ["学生"+s for s in list("ABCD")]
df

统计每个学生的各科总分和平均分,然后作为新的列合并到原数据中。

sum = df.sum(axis=1)
mean = df.mean(axis=1) df["总分"] = sum
df["平均分"] = mean
df

这样可以更全面的查看每个学生的学习情况。

2. 订单统计的场景

订单统计的这个示例稍微复杂点,因为一个订单ID可能包含多个物品,
按订单ID来统计每个订单合计信息时,不能简单的像上面的统计成绩那样直接计算按行统计。

df = pd.DataFrame(
{
"id": [1, 1, 2, 3, 3, 3],
"product": ["苹果", "香蕉", "手机",
"冰箱", "电视", "空调"],
"price": [24, 15, 2000, 8000,
5500, 7800],
}
) df


如上所示,总共有3个订单,根据订单号统计每个订单的总价如下:

df.groupby("id").price.sum()


得到每个订单ID对应的总价格,但是合计信息只有3行,而原来的数据是6行,无法直接合并到原数据。

这种情况下,我们需要用pandas里的transform函数。
transform函数分组统计之后,会保持原来的行数。

df["总价"] = df.groupby("id").price.transform("sum")
df


相同的订单ID,统计的总价是一样的。
总价的信息附加在订单的每个具体物品之后,
还可以基于此统计出同一个订单中每个物品价格所占总价的百分比

df["百分比"] = df.price / df["合计"]
df

总之,统计值作为新的列,不仅可以更好的比较和观察原始数据和统计值,
还可以基于新的统计列,再统计出其他的信息。

【pandas小技巧】--统计值作为新列的更多相关文章

  1. linux系统维护时的一些小技巧,包括系统挂载新磁盘的方法!可收藏!

    这里发布一些平时所用到的小技巧,不多,不过会持续更新.... 1.需要将history创建硬链接ln 全盘需要备份硬链接 ln /etc/xxx /home/xxx 2.root用户不可以远程 /et ...

  2. pandas小技巧

    1. 删除列 import pandas as pd df.drop("Unnamed: 0", axis=1, inplace=True) 2. 转换列的格式 df[" ...

  3. Java web开发中页面跳转小技巧——跳转后新页面在新窗口打开

    最近学习Java web,在学习过程中想实现一个需求,就是在jsp页面跳转的时候,希望跳转后的新页面在新窗口中打开, 而不是覆盖原来的页面,这个需求使我困惑了好长时间,后来通过大海捞针似的在网上寻找方 ...

  4. Linux每日小技巧---统计服务器IP连接数

    netstat命令 [root@:vg_adn_tidbCkhsTest:172.31.30.62 ~]#netstat -tun | awk '{print $5}' | cut -d: -f1 | ...

  5. pandas 小技巧

    1.找出某个字段包含某字符串的行: my_df[my_df['col_B'].str.contains('大连') > 0]或者 my_df[my_df['col_B'].apply(lambd ...

  6. Pandas一些小技巧

    Pandas有一些不频繁使用容易忘记的小技巧 1.将不同Dataframe写在一个Excel的不同Sheet,或添加到已有Excel的不同Sheet(同名Sheet会覆盖) from pandas i ...

  7. Unity萌新日记—开发小技巧与冷知识(脚本篇)

    在学习unity的过程中,总会遇到很多零碎的知识点和小技巧,在此把它们记录下来,方便日后查看. 第一篇是关于脚本的一些你可能不知道的小知识. 还是个正在学习的萌新,如果写的不好,请谅解. Unity版 ...

  8. sql里的多行多列转一行多列小技巧

    ---恢复内容开始--- [ 今天下午接受了一个紧急小任务,是将一组比赛记录统计出来,将象棋游戏玩家的两条记录在一行里面显示,进数据库看之后是首先想到的是行转列,但是一开始就觉得不对,后来写到一半确实 ...

  9. [转载]Js小技巧||给input type=“password”的输入框赋默认值

    http://www.cnblogs.com/Raywang80s/archive/2012/12/06/2804459.html [转载]Js小技巧||给input type="passw ...

  10. Tensorflow小技巧整理:修改张量特定元素的值

    TensorFlow小技巧整理:修改张量特定元素的值 最近在做一个摘要生成的项目,过程中遇到了很多小问题,从网上查阅了许多别人解决不同问题的方法,自己也在旁边开了个jupyter notebook搞些 ...

随机推荐

  1. 2021-08-29:N * M的棋盘(N和M是输入参数),每种颜色的格子数必须相同的,上下左右的格子算相邻,相邻格子染的颜色必须不同,所有格子必须染色,返回至少多少种颜色可以完成任务。 福大大 答

    2021-08-29:N * M的棋盘(N和M是输入参数),每种颜色的格子数必须相同的,上下左右的格子算相邻,相邻格子染的颜色必须不同,所有格子必须染色,返回至少多少种颜色可以完成任务. 福大大 答案 ...

  2. Git开发、发布、缺陷分离模型概述(支持master/develop/feature/release/hotfix类型分支)

    Git是什么? Git是一种分布式版本控制系统,它可以记录文件的修改历史和版本变化,并可以支持多人协同开发.Git最初是由Linux开发者Linus Torvalds创建的,它具有高效.灵活.稳定等优 ...

  3. Django-3:创建子项目APP

    django-admin startapp app01 或 python manage.py startapp app01 #app01 是app名称 PyCharm的样子:

  4. 图数据库 NebulaGraph 的内存管理实践之 Memory Tracker

    数据库的内存管理是数据库内核设计中的重要模块,内存的可度量.可管控是数据库稳定性的重要保障.同样的,内存管理对图数据库 NebulaGraph 也至关重要. 图数据库的多度关联查询特性,往往使图数据库 ...

  5. 使用ONE.Abp快速开发微服务,再也不用加班了

    项目背景 公司采用项目制工作方式,因此在不同项目上可能存在多个团队开发独立的代码库,但通用的基础设施却是相同的,这可能导致每个项目都需要编写相同的代码,并重复造轮子.更严重的是,每个项目都有自己的用户 ...

  6. AcWing900.整数划分(python)

    题目详情 知识点 计数类DP 分析题目,k个数是默认排好序的,也就是说,对于划分我们的考虑是无序的:例如 4 = 1+1+2 4 = 1+2+1 4 = 2+1+1 以上三种方式是没有区别的,所以在求 ...

  7. 火爆,Github标星240K的编程学习路线图,适合所有程序员!

    推荐一个涵盖开发.运维.产品设计的学习路线图,在Github已经start超过240K,包括各门编程语言! 一.涵盖的路线图 该项目涵盖了非常全面的学习路线图: 前端路线图 后端路线图 ASP.NET ...

  8. Docker-Compose快速搭建LNMP

    Docker-Compose 1.安装Docker sudo apt -y install docker.io docker version 查看版本号 docker help 查看帮助文档 2.更换 ...

  9. JS逆向实战16——猿人学第20题 新年挑战-wasm进阶

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 网站 https://ma ...

  10. Educational Codeforces Round 150 (Rated for Div. 2) A-E

    比赛链接 A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; bool solve() { i ...