python入门指标_Python基础 | pandas基础统计_weixin_39567169的博客-程序员宅基地

技术标签: python入门指标  

本文示例数据下载,密码:vwy3

import pandas as pd

import numpy as np

# 数据是之前在cnblog上抓取的部分文章信息

df = pd.read_csv('./data/SQL测试用数据_20200325.csv',encoding='utf-8')

df.head(3)

单列统计

单列单统计指标

# 计数(不去重),不会将NaN值计算在内

df['read_cnt'].count()

# 比如我们来做个试验

# 选择几个单元格,之前都是有数值的

print(df.loc[2:4,'read_cnt'])

# 然后将值设定为NaN

df.loc[2:4,'read_cnt'] = None

print(df.loc[2:4,'read_cnt'])

# 看看count()结果

print(df['read_cnt'].count())

# 数据恢复原样

df.loc[2:4,'read_cnt'] = [142,158,132]

# 计数(去重),不会将NaN值计算在内

# 使用nunique()方法

df['blog_name'].nunique()

常见统计指标

求和 .sum()

最大值 .min()

最小值 .min()

均值 .mean()

中位数 .median()

方差 .var()

标准差.std()

偏度 .skew()

峰度 .kurtosis()

百分位数 .quantile(), df.quantile(0.5)相当于中位数

单列多统计指标

# 求和,计数,均值

df['read_cnt'].aggregate(func=['sum','count','mean'])

多列统计

多列相同统计指标

# 去重计数,相当于sql中的count(distinct)

df.nunique()

df.describe() # 只对数值列有效

# 选定多列同时计算多个相同的指标

df[['href','blog_name']].aggregate(func=['nunique','count'])

多列不同统计指标

# 对blog_name字段去重计数

# 对read_cnt计算求和、均值

df[['blog_name','read_cnt']].aggregate(func={'blog_name':'nunique','read_cnt':['sum','mean']})

分组统计

df.groupby

单字段单指标

这里的单字段是指统计用的value列

df.groupby('weekday')['read_cnt'].nunique()

单字段多指标

df.groupby('weekday')['read_cnt'].aggregate(func=['sum','mean']).reset_index()

# 多个分组字段

df.groupby(['weekday','hour'])['read_cnt'].aggregate(func=['sum','mean']).reset_index()

多字段相同指标

# 除了分组字段外,其他字段都参与计算

df.groupby('weekday').count().reset_index()

# 指定多个字段

# 注意多个字段要以list的格式包裹

df.groupby('weekday')[['blog_name','date']].nunique().reset_index()

# 多字段统一计算相同指标

df.groupby('weekday').aggregate(func=['nunique','count']).reset_index()

多字段不同指标

df.groupby('weekday')[['blog_name','read_cnt']]\

.aggregate(func={'blog_name':'nunique','read_cnt':['median','mean']})\

.reset_index()

df.pivot_table

pd.pivot_table主要参数说明:

data 参与计算的dataframe

values 需要进行统计计算的列,可以是单列或多列(e.g.['col_1','col_2'])

index 位于左侧的维度

columns 位于上方的维度

aggfunc 统计要用的函数,可以同时对多个字段计算多个统计值,也可以对每个字段设置不同的统计指标

aggfunc = ['sum','np.sum','mean','count']

aggfunc = {'col_1':'sum','col_2':['sum','mean']}

fill_value 对缺失值设定填充值

margins 默认False,是否要对行和列汇总,只有设定了index参数才有效

dropna=True,是否删除NaN

margins_name='All', 汇总的行或列的名称

df.pivot_table中的参数和pd.pivot_table保持一致

单字段单指标

# index和columns可以不用同时设置值

# 对比一下两者的差异

# index是将分组的字段放到统计表格的左侧

pd.pivot_table(df, values='read_cnt'\

,index='weekday'\

,aggfunc='sum').reset_index()

# columns是将制定的分组字段放到统计table的正上方

pd.pivot_table(df, values='read_cnt'\

,columns='weekday'\

,aggfunc='sum').reset_index()

# index和columns同时设定的效果

pd.pivot_table(df, values='read_cnt'\

,index='hour'\

,columns='weekday'\

,aggfunc='sum').reset_index()

为了便于演示计算字段(values)和统计指标(aggfunc)的操作,后续只使用index字段分组

单字段多指标

pd.pivot_table(df, values='read_cnt'\

,index='weekday'\

,aggfunc=['sum','mean']).reset_index()

多字段相同指标

# 对blog_name,date两个字段去重计数

pd.pivot_table(df, values=['blog_name','date']\

,index='weekday'\

,aggfunc= lambda x :x.nunique()).reset_index()

# 这里的lambda函数也可以定义为 lambda x:len(x.unique())

多字段不同指标

pd.pivot_table(df, values=['blog_name','read_cnt']\

,index='weekday'\

,aggfunc={'blog_name':lambda x: x.nunique(),'read_cnt':['sum','mean']}).reset_index()

其他补充

# 实现rollup的操作

df_stat = pd.pivot_table(df, values='read_cnt'\

,index=['weekday']

,columns='hour'\

,aggfunc='sum',margins=True).unstack()

pd.DataFrame(df_stat).head(30)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39567169/article/details/110347749

智能推荐

【Java】目前常用的消息队列(Message Queue)对比_hemeinvyiqiluoben的博客-程序员宅基地

转自:http://me.tongleer.com/post-46.html 常用Message Queue对比 RabbitMQ RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量级,更适合于企业级的开发。同时实现了Broker构架,这意味着消息在发送给客户端时先在中心队列排队。对...

[机器学习] 分类 --- Naive Bayes(朴素贝叶斯)_VinkinTsang的博客-程序员宅基地

一、概率知识点复习(1)条件概率就是事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为P(A|B),读作“在B条件下A的概率”。(2)联合概率可以简单的理解为事件A与事件B都发生的概率,记为P(AB)或P(A, B)。此处就有  P(A, B) = P(A|B) * P(B)若事件A与事件B独立,则有 P(A, B) = P(A) * P(B),这也说明了此时 ...

zookeeper java api 操作(五) | curator-recipes_青枫绿屿的博客-程序员宅基地

目录一、概述二、pom 依赖三、Curator-recipes1.Cachea.NodeCacheb.PathCachec.TreeCache2.Electionsa.LeaderSelectorb.LeaderLatch 3.Locks 4.Barriers 5.Counters 6....

#zkw线段树,二分,动态规划#洛谷 2605 JZOJ 1587 基站选址_lemondinosaur的博客-程序员宅基地

题目分析首先我们在最后加上一个无限远的虚拟村庄,以避免最后一个村庄没有被考虑,接着设f[i][j]f[i][j]f[i][j]表示前iii个村庄安放jjj个基站,其中第iii个村庄安放一个基站的最少费用显然状态转移方程为f[i][j]=min{f[k][j−1]+cost[k][j]}+c[i]f[i][j]=min\{f[k][j-1]+cost[k][j]\}+c[i]f[i][j]...

OpenCV学习笔记(九)——图像轮廓(下)_卡卡南安的博客-程序员宅基地

利用形状场景算法比较轮廓及轮廓的特征值。

WebGL自学教程——WebGL示例:gl-0.1.js_铁文的博客-程序员宅基地

function ShaderSourceFromScript(scriptID){    var shaderScript = document.getElementById(scriptID);    if (shaderScript == null) return "";    var sourceCode = "";    var child = shaderScr

随便推点

使用Arduino开发ESP32(19):获取网络时间_Naisu Xu的博客-程序员宅基地_arduino获取网络时间

文章目录目的示例演示基础说明额外内容总结目的时间是软硬件系统或设备中比较重要的东西,特别是需要和外部进行交互时就更加需要用到有个统一的时间了。目前来说只要能联网的设备的时间主要是从网络时间服务器(NTP )上获取的,这篇文章将对此做个简单的说明。示例演示在Arduino core for the ESP32中获取网络时间是非常简单的,只要先连上网,然后就可以调用库中封装的方法获取网络时间了。下面是个简单的示例演示:在这里插入代码片基础说明额外内容总结https://github.com/

常用电子面单接口API demo下载_Ttiantian26的博客-程序员宅基地

一.电子面单接口类型及定义1. 快递电子面单接口:快递公司自己开发的电子面单服务, 商家使用必须快递公司上门做系统对接,使用一家快递则需要对接一次。2.菜鸟电子面单接口:可一次对接15家快递公司, 无需和每一家快递公司做对接。支持快递有四通一达、EMS、宅急送、德邦、优速、天天、快捷、全峰等15家常用快递公司,其中不包括顺丰。3.快递鸟电子面单接口:可一次对接15家快递公司, 无需和每

群辉 虚拟linux,黑群晖DSM6.2.1在centos7的KVM里面总是crash_lau.ray的博客-程序员宅基地

谢谢您的建议,群晖的我用惯了,也慢慢发现有很多局限性。群晖的串口console里面确实有报错,当时没有截屏。上面显示很多文件系统相关的报错,然后就出现CPUpanic,主机就重启了,整个storagegroup也没有办法访问了,必须完全重新安装DSM。我试过用ext4也是同样的报错,把存储切换到直接访问LVMvolume也是会有同样的报错,换硬件平台也一样,因此我认为这个是软件的问题,就是找...

Kong系列-14-自定义插件_twingao的博客-程序员宅基地_kong 自定义插件

Kong开源了大量的开源插件,当这些开源插件不能满足我们的需求,就需要修改这些开源插件或者自定义插件。Kong提供了方便地自定义插件机制,用户可以开发自己的定制插件。自定义插件可以和Kong进行深层次的集成,如使用数据库表结构,或者扩展Admin API。如果插件实现了所有可选模块,则其目录结构如下所示:complete-plugin├── api.lua├── daos.lua├── h...

HDU 5126 stars 4维偏序, CDQ套CDQ_dengpangbu3703的博客-程序员宅基地

题目传送门题意:在一个星空中,按着时间会出现一些点,现在john想知道,在某个时间内有多少个星星是的坐标是满足条件的。(x1<=x<=x2, y1 <= y <= y2, z1 <= z <= z2).题解:先简化问题,如果我们就统计出现所有 x <= x2 , y <= y2, z <= z2的点的话,这就是一个4维偏序题。...

支持DoH的DNS服务器,谷歌公共DNS正式支持DoH加密 更安全并且不影响速度_yi美小能手的博客-程序员宅基地

有鉴于此互联网工程任务组已经推出DoH规范加密用户查询,让用户在浏览网页时可以更好的保护自己隐私。DNS-over-TLS加密标准:我们知道HTTPS加密安全协议可有效阻止中间人攻击,也可以让中间人或者运营商监测用户实时的访问信息。目前很多运营商会通过流量劫持的方式在用户访问的页面里插入广告,使用HTTPS加密的网页则不会受影响。而在DNS领域此前都是没有加密的,即便网页是HTTPS连接但运营商依...

推荐文章

热门文章

相关标签