[黑马程序员Pandas教程]——Pandas常用计算函数

目录:

  1. 学习目标
  2. 排序函数
    1. sort_values函数
    2. rank函数
  3. 常用聚合函数
    1. corr函数计算数值列之间的相关性
    2. min函数计算最小值
    3. max函数计算最大值
    4. mean函数计算平均值
    5. std函数计算标准偏差
    6. quantile函数计算分位数
    7. sum函数求和
    8. count计算非空数据的个数
  4. 其他常用计算函数
    1. round改变浮点数的位数
    2. value_counts计算重复数据出现的次数
  5. 总结
  6. 项目地址

1.学习目标

  • 知道排序函数sort_values和rank二者的区别和用法

  • 知道Pandas中求和、计数、相关性值、最小、最大、平均数、标准偏差、分位数的函数使用

  • 知道round、value_counts函数的作用

2.排序函数

  • sort_values 按指定列值排序

  • rank 返回列值的排序评分

import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')# 为了演示效果random_state随机种子编号为16
df2 = df.sample(n=10, random_state=16)
print(df2)
sort_values函数
import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')# 为了演示效果random_state随机种子编号为16
df2 = df.sample(n=10, random_state=16)# 按GDP列的数值由小到大进行排序
df3 = df2.sort_values(['GDP'])
print(df3)# 按GDP列的数值由大到小进行排序
# 倒序, ascending默认为True
df4 = df2.sort_values(['GDP'], ascending=False)
print(df4)# 先对year年份进行由小到大排序,再对GDP由小到大排序
df5 = df2.sort_values(['year', 'GDP'])
print(df5)df6 = df2['GDP'].sort_values()
print(df6)# 由大到小 倒序
df7 = df2['GDP'].sort_values(ascending=False)
print(df7)
rank函数
  • rank函数用法:DataFrame.rank()Series.rank()

  • rank函数返回值:以Series或者DataFrame的类型返回数据的排名(哪个类型调用返回哪个类型)

  • rank函数包含有6个参数:

    • axis:设置沿着哪个轴计算排名(0或者1),默认为0按纵轴计算排名

    • numeric_only:是否仅仅计算数字型的columns,默认为False

    • na_option:NaN值是否参与排序及如何排序,固定参数:keeptopbottom

      • keep: NaN值保留原有位置

      • top: NaN值全部放在前边

      • bottom: NaN值全部放在最后

    • ascending:设定升序排还是降序排,默认True升序

    • pct:是否以排名的百分比显示排名(所有排名与最大排名的百分比),默认False

    • method:排名评分的计算方式,固定值参数,常用固定值如下:

      • average : 默认值,排名评分不连续;数值相同的评分一致,都为平均值

      • min : 排名评分不连续;数值相同的评分一致,都为最小值

      • max : 排名评分不连续;数值相同的评分一致,都为最大值

      • dense : 排名评分是连续的;数值相同的评分一致

  • df.rank(ascending=False) 返回原df对应的评分df,评分默认由小到大,且存在相同评分

import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')# 为了演示效果random_state随机种子编号为16
df2 = df.sample(n=10, random_state=16)print(df2)df3 = df2.rank()
print(df3)df4 = df2.rank(axis=0)
print(df4)# 只对数值类型的列进行统计
df5 = df2.rank(numeric_only=True)
print(df5)# 降序
df6 = df2.rank(ascending=False)
print(df6)# 以最高分作为1,放回百分数形式的评分,pct参数默认为False
df7 = df2.rank(pct=True)
print(df7)
  • method参数的用法

import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')# 为了演示效果random_state随机种子编号为16
df2 = df.sample(n=10, random_state=16)print(df2)df3 = df2.rank(method='average')
print(df3)df4 = df2.rank(method='min')
print(df4)df5 = df2.rank(method='max')
print(df5)df6 = df2.rank(method='dense')
print(df6)
  • s.rank()的用法和df.rank()用法一致,只是返回Series对象

import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')# 为了演示效果random_state随机种子编号为16
df2 = df.sample(n=10, random_state=16)print(df2)df3 = df2['year']
print(type(df3))df4 = df2['year'].rank()
print(df4)df5 = df2['year'].rank(axis=0)
print(df5)df6 = df2['year'].rank(numeric_only=True)  # 只对数值类型的列进行统计
print(df6)df7 = df2['year'].rank(ascending=False)  # 降序
print(df7)df8 = df2['year'].rank(pct=True)  # 以最高分作为1,放回百分数形式的评分,pct参数默认为False
print(df8)# method参数
df9 = df2['year'].rank(method='average')
print(df9)df10 = df2['year'].rank(method='min')
print(df10)df11 = df2['year'].rank(method='max')
print(df11)df12 = df2['year'].rank(method='dense')
print(df12)

3.常用聚合函数

常用聚合函数有:

  • corr 相关性

  • min 最小值

  • max 最大值

  • mean 平均值

  • std 标准偏差

  • quantile 分位数

corr函数计算数值列之间的相关性
import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')# 获取全部中国的数据,1960-2019中国的GDP
df3 = df.query('country=="中国"')
print(df3)# 用drop方法移除'country'列
df4 = df3.drop(columns='country')
print(df4)# 计算相关性
df5 = df4.corr()
print(df5)# 构造2020-2019年份列表
year_list_str = [year for year in range(2000, 2020)]
# 拼接query查询参数字符串
query_str = 'year in {}'.format(year_list_str)
# 查询返回2020-2019年中国的GDP数据集
df6 = df4.query(query_str)df7 = df6.head()
print(df7)# 计算相关性
df8 = df6.corr()
print(df8)

返回结果依次如下

  • 相关性得分为1的表示100%相关,越接近1说明相关性越高;year列越大,GDP越大,这是正相关
  • 1960年-2019年,随着年份的增长,中国GDP整体基本呈现正增长趋势,year列和GDP列的相关性为0.766

  • 2000年-2019年,随着年份的增长,中国GDP整体完全呈现正增长趋势,year列和GDP列的相关性为0.983,非常高的正相关性

 

 

  • 再来看一个高度负相关的例子

import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')# 构造2001-2023年份列表
year_list_str = [year for year in range(2001, 2004)]
# 拼接query查询参数字符串
query_str = 'country=="{}" and year in {}'.format('委内瑞拉', year_list_str)
df4 = df.query(query_str)
# 委内瑞拉2001-2003三年GDP数据
print(df4)# 计算相关性
df5 = df4.drop(columns='country')
df6 = df5.corr()
print(df6)

返回结果依次如下

  • 委内瑞拉2001-2003连续三年GDP萎缩(注意不是负增长),年份和GDP呈现高度的负相关,相关计算结果为负0.956——year越大,GDP越小

 

min函数计算最小值
  • df.min()会返回df中每一列的最小值构成的Series

import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')df2 = df.sample(n=10, random_state=16)
print(df2)df3 = df2.min()
print(df3)
  • series.min()返回s对象中的最小值

import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')df2 = df.sample(n=10, random_state=16)
print(df2)df3 = df2['year'].min()
print(df3)

 

max函数计算最大值
  • max函数计算最大值,用法和min函数的用法一致

import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')df2 = df.sample(n=10, random_state=16)
print(df2)df3 = df2.max()
print(df3)df4 = df2['year'].max()
print(df4)

 

mean函数计算平均值
  • mean函数计算平均值,用法和min函数的用法一致,但只会对数值类型的数据进行计算

import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')df2 = df.sample(n=10, random_state=16)
print(df2)df2 = df2.drop(columns='country')
print(df2)df3 = df2.mean()
print(df3)df4 = df2['year'].mean()
print(df4)df5 = df2['GDP'].mean()
print(df5)
std函数计算标准偏差
  • 标准偏差:用以衡量数据值偏离算术平均值的程度。标准偏差越小,这些值偏离平均值就越少,反之亦然。  
import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')df2 = df.sample(n=10, random_state=16)
print(df2)df2 = df2.drop(columns='country')
print(df2)df3 = df2.std()
print(df3)df4 = df2['GDP'].std()
print(df4)
quantile函数计算分位数
  • 分位数(Quantile),亦称分位点,常用的有中位数(即二分位数)、四分位数、百分位数等;那什么是分位数呢?我们以中位数为例:通过把一堆数字按大小排序后找出正中间的一个数字作为中位数,如果这一堆数字有偶数个,则中位数不唯一,通常取最中间的两个数值的平均数作为中位数,即二分位数。

  • quantile函数默认返回二分位数;可以通过传入参数来控制返回的四分位数,或其他分位数

import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')df2 = df.sample(n=10, random_state=16)
print(df2)df2 = df2.drop(columns='country')
print(df2)# 50%分位数
df3 = df2.quantile()
print(df3)df4 = df2['year'].quantile()
print(df4)# 返回四分位数
df5 = df2.quantile([0.25, 0.5, 0.75])
print(df5)df6 = df2['year'].quantile([0.25, 0.5, 0.75])
print(df6)# 返回三分位数
df7 = df2.quantile([1 / 3, 2 / 3])
print(df7)df8 = df2['year'].quantile([1 / 3, 2 / 3])
print(df8)
sum函数求和
import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')df2 = df.sample(n=10, random_state=16)
print(df2)df2 = df2.drop(columns='country')
print(df2)df3 = df2.sum()
print(df3)df4 = df2['year'].sum()
print(df4)
count计算非空数据的个数
import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')# 构造带空值的数据集
df6 = df.tail()
print(df6)df6.loc[9929, 'GDP'] = None
print(df6)print(df6.count())
print(df6['GDP'].count())

4.其他常用计算函数

  • df['列'].value_counts() 计算累计次数

  • 小数类型控制位数 df['列'].round(2)

round改变浮点数的位数
import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')# 构造数据集
df7 = df.query('country=="中国" & year in [2016, 2017, 2018, 2019]').copy()
df7['GDP万亿元'] = df7['GDP'] / 1000000000000
print(df7)# 改变df或series中浮点数的小数位数
print(df7.round(2))
print(df7['GDP万亿元'].round(3))
value_counts计算重复数据出现的次数
import pandas as pd# 加载csv数据,指定gbk编码格式来读取文件,返回df
df = pd.read_csv('../datas/data_set/1960-2019全球GDP数据.csv', encoding='gbk')# 构造数据集
df7 = df.query('country=="中国" & year in [2016, 2017, 2018, 2019]').copy()
df7['GDP万亿元'] = df7['GDP'] / 1000000000000
print(df7)print(df7.value_counts())
print(df7['country'].value_counts())

5.总结

  • 排序

    • sort_values函数 按值排序

    • rank函数 返回安置排序的序号

  • 聚合函数

    • df.corr函数 相关性计算

    • min函数 计算最小值

    • max函数 计算最大值

    • mean函数 计算平均值

    • std函数 计算标准偏差

    • quantile函数 计算分位数

    • sum函数 计算所有数值的和

    • count函数 计算非空数据的个数

  • 其他计算函数

    • round(n)函数 改变浮点数的小数位数为n

    • value_counts函数 计算不同的数据出现的次数

6.项目地址

Python: 66666666666666 - Gitee.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/164278.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ansible 自动化运维工具 --- playbook 剧本

文章目录 1. Host inventory ---- 主机清单1.1 简介1.2 inventory文件1.3 Inventory 文件的构成1.3.1 主机与组1.3.2 变量 1.4 inventory 中的常用变量 2. Ansible-playbook剧本2.1 简介2.2 Playbook的结构组成2.3 编写playbook的基本格式与写法2.3.1 基本格式2.3.2 语句的横向…

持续集成交付CICD:Jenkins Pipeline与远程构建触发器

目录 一、实验 1.Jenkins Pipeline本地构建触发器 2.Jenkins Pipeline与远程构建触发器(第一种方式) 3.Jenkins Pipeline与远程构建触发器(第二种方式) 4.Jenkins Pipeline与远程构建触发器(第三种方式&#xff0…

基于Skywalking的全链路跟踪实现

在前文“分布式应用全链路跟踪实现”中介绍了分布式应用全链路跟踪的几种实现方法,本文将重点介绍基于Skywalking的全链路实现,包括Skywalking的整体架构和基本概念原理、Skywalking环境部署、SpringBoot和Python集成Skywalking监控实现等。 1、Skywalki…

ubuntu 20.04 server安装

ubuntu 20.04 server安装 ubuntu-20.04.6-live-server-amd64.iso 安装 安装ubuntu20.04 TLS系统后,开机卡在“A start job is running for wait for network to be Configured”等待连接两分多钟。 cd /etc/systemd/system/network-online.target.wants/在[Servi…

MF-SuP-pKa

子图层面的图网络预测pKa,使用了数据增强和迁移学习,原文:MF-SuP-pKa: Multi-fidelity modeling with subgraph pooling mechanism for pKa prediction,代码 MF-SuP-pKa,原文框架如下:

Python TCP服务端多线程接收RFID网络读卡器上传数据

本示例使用设备介绍:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) #python通过缩进来表示代码块,不可以随意更改每行前面的空白,否则程序会运行错误!!!如果缩进不…

Vue2基础-Vue对象介绍

文章目录 一、概念特点举例 二、模板语法插值语法指令语法v-bind数据绑定 三、组件el和data的两种写法 四、MVVM模型五、数据代理六、事件处理基本使用事件修饰符键盘按键 七、计算属性八、监听属性普通监视深度监视监视简写 九、监听与计算总结 一、概念 一套用于构建用户界面…

VMware17安装教程

1、双击安装包 2、等待进度条走满 3、点击下一步 4、点击我接受 下一步 5、修改安装目录 添加path路径 下一步 6、取消用户体验设置 下一步 7、点击下一步 8、 点击安装 9、等待进度条走满 10、点击许可证 输入秘钥 11、 点击输入秘钥 12、 点击完成 完成安装 此时已经完成了安…

CUDA学习笔记7——CUDA内存组织

CUDA内存组织 CUDA设备内存的分类与特征 内存类型物理位置访问权限可见范围生命周期1全局内存芯片外可读写所有线程和主机端由主机分配与释放2常量内存芯片外只读所有线程和主机端由主机分配与释放3纹理和表面内存芯片外一般只读所有线程和主机端由主机分配与释放4寄存器内存…

技术分享 | app自动化测试(Android)-- 特殊控件 Toast 识别

Toast 是 Android 系统中的一种消息框类型,它属于一种轻量级的消息提示,常常以小弹框的形式出现,一般出现 1 到 2 秒会自动消失,可以出现在屏幕上中下任意位置。它不同于 Dialog,它没有焦点。Toast 的设计思想是尽可能…

Java进击框架:Spring-数据存取(七)

Java进击框架:Spring-数据存取(七) 前言事务管理声明式事务管理 DAO支持JDBC的数据访问使用JdbcTemplate控制数据库连接JDBC批处理操作封装 SQL 语句中的参数 使用R2DBC进行数据访问对象关系映射(ORM)数据访问HibernateJPA XML模式 前言 参考…

渗透测试学习day2

文章目录 连接靶机靶机:Fawn 解题过程Task 1Task 2Task 3Task 4Task 5Task 6Task 7Task 8Task 9Task 10Task 11Task 12 总结 连接靶机 详细过程可参考day1 靶机:Fawn 难度:very easy (ftp服务的靶机) 解题过程 T…