当前位置: 首页 > news >正文

[黑马程序员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

相关文章:

  • IntersectionObserver的使用
  • JVM类的声明周期
  • Selenium增加Chrome稳定性的参数
  • C++学习---异常处理机制
  • BI数据可视化:不要重复做报表,只需更新数据
  • JSP通用材料收集归档系统eclipse定制开发mysql数据库BS模式java编程jdbc
  • 结合DevOps实践:使用Huawei CodeArts和CCE进行自动化Kubernetes集群部署
  • 3. List
  • 微服务之Eureka
  • 集简云平台助力无代码开发,实现平安银行与电商平台、CRM系统的快速连接
  • 每日汇评:黄金正在期待鲍威尔的讲话以获取新的方向动力
  • Linux 内核中根据文件inode号获取其对应的struct inode
  • 【计算机网络实验/wireshark】tcp建立和释放
  • PTA 哈利·波特的考试(floyd算法)
  • 【沐风老师】3dMax快速平铺纹理插件QuickTiles教程
  • httpie使用详解
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • java2019面试题北京
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JS实现简单的MVC模式开发小游戏
  • PHP 小技巧
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • redis学习笔记(三):列表、集合、有序集合
  • Vue实战(四)登录/注册页的实现
  • XForms - 更强大的Form
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 每天一个设计模式之命令模式
  • 删除表内多余的重复数据
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 算法之不定期更新(一)(2018-04-12)
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (145)光线追踪距离场柔和阴影
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (ZT)薛涌:谈贫说富
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (三)uboot源码分析
  • (十)T检验-第一部分
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (一)python发送HTTP 请求的两种方式(get和post )
  • .describe() python_Python-Win32com-Excel
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net6+aspose.words导出word并转pdf
  • .NET项目中存在多个web.config文件时的加载顺序
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [android] 请求码和结果码的作用
  • [Angular 基础] - 表单:响应式表单
  • [Apio2012]dispatching 左偏树