热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

layuitable多选指定数据不可选中_从Excel进阶到Python:掌握数据透视表

常用Excel的朋友应该都离不开数据透视表了吧,哈哈。在进行探索数据分析的时候,数据透视表是非常好的一项工具,它能帮助我们从多个维度对数据

常用Excel的朋友应该都离不开数据透视表了吧,哈哈。在进行探索数据分析的时候,数据透视表是非常好的一项工具,它能帮助我们从多个维度对数据进行探索,还能计算多种聚合值,比如均值、中位数等。

但是想要进阶成为更全面的数据分析师,学好一门适合数据分析的编程语言是必不可少的。Python和R都是不错的选择,不过Python的应用范围更广,所以在这里我更推荐Python。今天,我们就来看一下如何在Python中使用groupby和pivot_table来构建数据透视表。

生成示例数据

我们生成一些数据用于后边的讲解,假设有8个学生的考试成绩数据,8人分别来自四个班级,有男有女。

import pandas as pdclasses = ['A', 'B', 'A', 'B', 'C', 'D', 'D', 'C']gender = ['M', 'F', 'M', 'F', 'M', 'F', 'M', 'F']score = [100, 90, 80, 70, 60, 85, 77, 92]df = pd.DataFrame({ 'class': classes, 'gender': gender, 'score': score})df

9b412a34db4163b3e1a6a093f6d0e06f.png
一、groupby()结合aggretate()/agg()进行聚合统计

# 求每个班的人数df.groupby('class').count()# 求每个班成绩的均值df.groupby('class')['score'].mean()# 分别求男女生中的最高分df.groupby('gender')['score'].max()# 求每个班、男女生成绩的均值df.groupby(['class', 'gender'])['score'].mean()

15a376804d8ac18c7aaf603acb4c6186.png
58db992e4f58484e18d52a69f0c9cf49.png

如果pandas就这么点本事,就不值得我给你们介绍了。我们可以使用agg()函数或者aggregate()函数来选择对我们的GroupBy对象执行哪种或哪些聚合方法。

df.groupby(['class', 'gender'])['score'].agg(['count', 'mean', 'max', 'min'])

312598f4cb5771749439a69d13362228.png
二、pivot_table与melt

我们知道,在Excel中,数据透视表不光能指定行维度,还能指定列维度。虽然使用groupby结合unstack()也可以实现,但是在pandas中,我们有更加专门的pivot_table()函数可以一步到位。

我们试着用班级作为行,用性别作为列,来求每个单元内的成绩均值。

df.pivot_table(index='class', columns='gender', values='score', fill_value=0, aggfunc='mean')

00d52f5be78a178065af9d106835acb7.png

这里,我们用fill_value=0指定了缺失值填补为0,用aggfunc指定聚合函数,注意,这里我们还可以自定义聚合函数哦,比如求第二大的值、求标准差等等,这样就比Excel的数据透视表更加灵活了。

已经转换成数据透视表的数据还可以变换成堆叠起来的数据,比如上边的F/M两列我们仍然可以用一列gender来表示。

df2 = df.pivot_table(index='class', columns='gender', values='score', fill_value=0, aggfunc='mean').reset_index()pd.melt(df2, id_vars='class', value_vars=['F', 'M'], value_name='Monetary', var_name='gender')

a09997a83295189cc97cc20c3f428dcc.png

好,我们就简单介绍到这里,你学会了吗?要记得多加练习哦。



推荐阅读
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 测绘程序设计Excel度分秒转换模板附代码超实用版
    本文介绍了测绘程序设计Excel度分秒转换模板附代码超实用版的相关知识,包括准备工作、编写表达式和注意事项。在实际工作中,将GPS实测的经纬度度转换为度分秒是常见需求,本文提供了在Excel中快速进行转换的方法,以提高工作效率。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • 本文介绍了如何在wxpython中将matplotlib图表嵌入到自定义窗体中的方法。通过调用FigureCanvasWx类,可以实现在自定义窗体中显示matplotlib图表。同时,还介绍了与此相关的一些类和参数。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
author-avatar
朱仔happy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有