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

news2024/11/25 4:31:39

目录:

  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.coloradmin.cn/o/1183892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker学习——⑤

文章目录 1、什么是Docker Container(容器)2、容器的生命周期2.1 容器 OOM2.2 容器异常退出2.3 容器暂停 3、容器命令详解4、容器操作案例4.1 容器批量处理技巧4.2 容器交互模式4.3 容器自动重启4.4 容器环境变量配置 5、综合实战5.1 Mysql 容器化安装5.…

clang插件对llvm源码插桩,分析函数调用日志(2)

tick_plot__compile.ipynb clang插件对llvm源码插桩,分析函数调用日志(1) 分析 进出、链、出 df进出df[ df[tickKind].isin( [FuncEnter,FuncReturn] ) ]#代码中,只有在函数进入时,计算了链条长度 并写磁盘 df入df[ df[tickKind].isin…

基于React使用swiperjs实现竖向滚动自动轮播

很多文章,都只提供了js部分,包括官方的文档也只有js部分,如果css设置不正确,会导致轮播图不自动播放。 使用的swiper版本:v11.0.3 文档 https://swiperjs.com/get-startedhttps://swiperjs.com/react 实现效果 使…

Go和JavaScript结合使用:抓取网页中的图像链接

前言 在当今数字化时代,数据是金钱的源泉,对于许多项目和应用程序来说,获取并利用互联网上的数据是至关重要的。其中之一的需求场景是从网页中抓取图片链接,这在各种项目中都有广泛应用,特别是在动漫类图片收集项目中…

C# OpenCvSharp 去除文字中的线条

效果 中间过程效果 项目 代码 using OpenCvSharp; using System; using System.Drawing; using System.Windows.Forms; using static System.Net.Mime.MediaTypeNames;namespace OpenCvSharp_Demo {public partial class frmMain : Form{public frmMain(){InitializeComponent…

JavaScript学习笔记——对象

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...除此之外JavaScript 允许自定义对象。 一、所有事物都是对象 JavaScript 提供多个内建对象,比如 String、Date、Array 等等。 对象只是带有属性和方法的特殊数据类型。 1.布尔型可以是一个…

FHE Circuit Privacy

参考文献: [MP12] Micciancio D, Peikert C. Trapdoors for lattices: Simpler, tighter, faster, smaller[C]//Annual International Conference on the Theory and Applications of Cryptographic Techniques. Berlin, Heidelberg: Springer Berlin Heidelberg, …

视频转码教程:轻松制作GIF动态图,一键高效剪辑操作

随着社交媒体的兴起,GIF动态图已经成为了人们表达情感、分享精彩瞬间的重要方式。而将视频转化为GIF动态图,不仅可以方便地在社交媒体上分享,还可以延长视频的播放时长,吸引更多的观众。本篇文章将为大家介绍如何将视频轻松转化为…

使用 Ruby 的 Nokogiri 库来解析

爬虫程序的主要目标是获取指定网站上的数据。在这里,我们将使用 Ruby 的 Nokogiri 库来解析 HTML,并使用 HTTParty 库来发送 HTTP 请求。下面是一个简单的示例,演示如何使用 Ruby 编写一个爬虫程序来爬取 1688 网站的数据。 require nokogir…

计网----累积应答,TCP的流量控制--滑动窗口,粘包问题,心跳机制,Nagle算法,拥塞控制,TCP协议总结,UDP和TCP对比,中介者模式

计网----累积应答,TCP的流量控制–滑动窗口,粘包问题,心跳机制,Nagle算法,拥塞控制,TCP协议总结,UDP和TCP对比,中介者模式 一.累积应答 1.什么是累计应答 每次发一些包&#xff0…

【小尘送书-第十一期】《算法秘籍》:算法是编程的基石,开发的核心

大家好,我是小尘,欢迎你的关注!大家可以一起交流学习!欢迎大家在CSDN后台私信我!一起讨论学习,讨论如何找到满意的工作! 👨‍💻博主主页:小尘要自信 &#x1…

【RocketMQ】深入剖析延迟消息核心实现原理

一、背景 电商相关业务的时候,有一个常见的需求场景是:用户下单之后,超过半小时不支付,就取消订单。现在我们在淘宝京东买东西,或者通过美团点外卖,下单之后,如果不在指定时间内支付&#xff0…

个人实用的街头防身自卫术,男女必学的防身实战技能

一、教程描述 本套教程,大小455.93M,共有17个文件。 二、教程目录 实战防身术01、街头防身自卫术示例.mp4 实战防身术02、街头防身自卫术序言.mp4 实战防身术03、腕部被抓解脱.mp4 实战防身术04、胸襟被抓解脱.mp4 实战防身术05、腰部被抓解脱.mp…

应用在全固态激光雷达中的ALS环境光传感芯片

全固态扫描式激光雷达系统这一创新性技术在多个领域都有着巨大的潜力,将改变未来科技格局。本文将探讨这一革命性的发明,以及它在自动驾驶、无人机、工业自动化、环境监测等领域的关键应用。 传统激光雷达系统通常使用复杂的机械装置,这些部…

如何上传自己的Jar到Maven中央仓库

在项目开发过程中,我们常常会使用 Maven 从仓库拉取开源的第三方 Jar 包。本文将带领大家将自己写好的代码或开源项目发布到 Maven中央仓库中,让其他人可以直接依赖你的 Jar 包,而不需要先下载你的代码后 install 到本地。 注册帐号 点击以…

基于Pymavlink协议的BlueROV开发

1 BlueROV概述 1.1 什么是ROV 维基百科遥控潜水器(Remotely operated underwater vehicle,缩写ROV)是一个无人的水下航行器,以电缆连接到母船的人员操作。常搭载水下光源和照相机、摄影机、机械手臂、声纳等。因为具有机械手臂&a…

华为OD机试 - 找朋友(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述大白话解释一下就是:1、输入:2、输出:3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专…

安装node-sass安装失败(Failed at the node-sass@4.14.1 postinstall script.)

npm i安装依赖,安装node-sass失败 全局设置淘宝镜像,还是下载不下来。下载不下来可能是因为默认从github上去下载node-sass,而国内经常连不上或者网络不好。可以单独下载 npm i node-sass4.14.1 --sass_binary_sitehttps://npm.taobao.org/…

Maven多环境下 active: @profileActive@报错问题解决

1.报错: Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token found character that cannot start any token.(Do not use for indentation) 2.解决办法: 在主pom的文件下,重新加载:

模型可解释性

模型可解释性 前言导读Background1、为什么需要可解释性?2、诞生背景3、研究现状4、常见的模型可解释性方法4.1 基于模型自身的可解释性1)Explanation Generation2)Prototype Network 4.2 基于结果的可解释性 5、应用前景6、面临挑战 前言导读…