Joyful pandas--Task04 变形

joyful pandas第1章 Pandas基础 第1章 Pandas基础Learning Objective理论部分一、文件读取与写入1. 读取(a)csv格式(b)txt格式(c)xls或xlsx格式2. 写入(a)csv格式(b)xls或xlsx格式 Learning Objective Task01:Pandas基础(1天) 理论部分 掌握常见文件格式的读写操作 理解并熟悉 Series 和 DataFrame 的重要属性和重要方法 掌... 阅读详情

学习来源:https://nbviewer.jupyter.org/github/GYHHAHA/Joyful-Pandas/blob/master/第4章%20变形.ipynb

一、透视表

1. pivot
一般状态下,数据在DataFrame会以压缩(stacked)状态存放,例如上面的Gender,两个类别被叠在一列中,pivot函数可将某一列作为新的cols:

df.pivot(index='ID',columns='Gender',values='Height').head()

然而pivot函数具有很强的局限性,除了功能上较少之外,还不允许values中出现重复的行列索引对(pair),例如下面的语句就会报错:
#df.pivot(index=‘School’,columns=‘Gender’,values=‘Height’).head()
因此,更多的时候会选择使用强大pivot_table函数
2. pivot_table
首先,再现上面的操作

pd.pivot_table(df,index='ID',columns='Gender',values='Height').head()

由于功能更多,速度上自然是比不上原来的pivot函数:

%timeit df.pivot(index='ID',columns='Gender',values='Height')
%timeit pd.pivot_table(df,index='ID',columns='Gender',values='Height')

Pandas中提供了各种选项,下面介绍常用参数:

#① aggfunc:对组内进行聚合统计,可传入各类函数,默认为'mean'
pd.pivot_table(df,index='School',columns='Gender',values='Height',aggfunc=['mean','sum']).head()
#② margins:汇总边际状态
pd.pivot_table(df,index='School',columns='Gender',values='Height',aggfunc=['mean','sum'],margins=True).head()
#margins_name可以设置名字,默认为'All'
#③ 行、列、值都可以为多级
pd.pivot_table(df,index=['School','Class'],
               columns=['Gender','Address'],
               values=['Height','Weight'])

3. crosstab(交叉表)
交叉表是一种特殊的透视表,典型的用途如分组统计,如现在想要统计关于街道和性别分组的频数:

pd.crosstab(index=df['Address'],columns=df['Gender'])

交叉表的功能也很强大(但目前还不支持多级分组),下面说明一些重要参数:
① values和aggfunc:分组对某些数据进行聚合操作,这两个参数必须成对出现

pd.crosstab(index=df['Address'],columns=df['Gender'],
            values=np.random.randint(1,20,df.shape[0]),aggfunc='min')
#默认参数等于如下方法:
#pd.crosstab(index=df['Address'],columns=df['Gender'],values=1,aggfunc='count')

② 除了边际参数margins外,还引入了normalize参数,可选’all’,‘index’,'columns’参数值

pd.crosstab(index=df['Address'],columns=df['Gender'],normalize='all',margins=True)

二、其他变形方法

1. melt
melt函数可以认为是pivot函数的逆操作,将unstacked状态的数据,压缩成stacked,使“宽”的DataFrame变“窄”

df_m = df[['ID','Gender','Math']]
df_m.head()
df.pivot(index='ID',columns='Gender',values='Math').head()

melt函数中的id_vars表示需要保留的列,value_vars表示需要stack的一组列

pivoted = df.pivot(index='ID',columns='Gender',values='Math')
result = pivoted.reset_index().melt(id_vars=['ID'],value_vars=['F','M'],value_name='Math')\
                     .dropna().set_index('ID').sort_index()
#检验是否与展开前的df相同,可以分别将这些链式方法的中间步骤展开,看看是什么结果
result.equals(df_m.set_index('ID'))

2. 压缩与展开
(1)stack:这是最基础的变形函数,总共只有两个参数:level和dropna

df_s = pd.pivot_table(df,index=['Class','ID'],columns='Gender',values=['Height','Weight'])
df_s.groupby('Class').head(2)
df_stacked = df_s.stack()
df_stacked.groupby('Class').head(2)

stack函数可以看做将横向的索引放到纵向,因此功能类似与melt,参数level可指定变化的列索引是哪一层(或哪几层,需要列表)

df_stacked = df_s.stack(0)
df_stacked.groupby('Class').head(2)

(2) unstack:stack的逆函数,功能上类似于pivot_table

df_stacked.head()
result = df_stacked.unstack().swaplevel(1,0,axis=1).sort_index(axis=1)
result.equals(df_s)
#同样在unstack中可以指定level参数

三、哑变量与因子化

1. Dummy Variable(哑变量)
这里主要介绍get_dummies函数,其功能主要是进行one-hot编码:

df_d = df[['Class','Gender','Weight']]
df_d.head()

现在希望将上面的表格前两列转化为哑变量,并加入第三列Weight数值:

pd.get_dummies(df_d[['Class','Gender']]).join(df_d['Weight']).head()
#可选prefix参数添加前缀,prefix_sep添加分隔符

2. factorize方法
该方法主要用于自然数编码,并且缺失值会被记做-1,其中sort参数表示是否排序后赋值

codes, uniques = pd.factorize(['b', None, 'a', 'c', 'b'], sort=True)
display(codes)
display(uniques)

array([ 1, -1, 0, 2, 1])
array([‘a’, ‘b’, ‘c’], dtype=object)

【编程实践】Joyful-Pandas(下)Task02(第七章):文本数据 【编程实践】Joyful-Pandas(下)Task02(第七章):文本数据string类型的性质string与object的区别String类型的转换拆分与拼接str.split方法分割符与str的位置元素选取其他参数str.cat方法不同对象的拼接模式cat中的索引对齐替换子串匹配与提取常用字符串方法问题与练习问题练习 缺失数据和文本数据(尤其是混杂性文本)是数据预处理中比较麻烦的类型,本章节聚焦于文本数据。 理论部分 掌握基本正则表达式的用法 理解string类型的性质 掌握文本类型的5类操作 熟悉 阅读详情

相关推荐

Gelsight Sensor 重建 height-map —— 使用 DST-II 算子的快速泊松求解

Gelsight Sensor 重建 height-map —— 使用 DST-II 算子的快速泊松求解 gelsight gelsight传感器具有软弹性体的接触表面,可以精确的重建物体形状还可以从传感器的变形推断接触力和滑动. 使用 DST-II 算子的快速泊松求解 height 文章:GelSight: High-Resolution Robot Tactile Sensors for Estimating Geometry and Force 文章最后求解的方程其实是: p=∂2u∂x2+∂

qq_42236622的博客 1244

告别痛苦,快乐学习Pandas!开源教程《Joyful-Pandas》发布

Datawhale作者:耿远昊、Datawhale团队寄语:Pandas 是基于Numpy的一种工具,是为了解决数据分析任务而创建的,其纳入了大量库和一些标准的数据模型,提供了大量能...

Datawhale 2882

在VSCode中使用LaTex+(grammarly语法检测,chatgpt翻译,Sumatra PDF 轻量级pdf阅读器)

整个文章分为以下几个内容,打 * 的是必须要安装的。

u011895157的博客 2万+

深入理解Cloud Foundry健康管理:Health Manager工作原理解析

Cloud Foundry作为领先的开源PaaS平台,其健康管理组件Health Manager是保障应用高可用性的核心机制。本文将全面解析Health Manager的工作原理、核心功能及配置方式,帮助开发者掌握Cloud Foundry应用的健康监控与自动恢复机制。 ## Health Manager核心功能与架构 Health Manager(简称HM)是Cloud Foundry的关键

gitblog_00041的博客 564

【个人成长笔记】在Ubuntu中安装RTL8188GU USB无线网卡驱动(Driver for Linux RTL8188GU)

这篇笔记提供了在Ubuntu系统中安装RTL8188GU无线网卡驱动的完整指南。主要内容包括:驱动程序的官方来源(Github链接)、详细安装步骤(通过git下载、编译安装等命令),以及将设备转换为USB网卡模式的关键指令。特别提醒每次开机都需要执行模式转换命令,因为设备默认会以U盘模式启动。文章以简洁的技术文档形式呈现,适合Linux用户快速查阅和操作。

yuhuasheng1997的博客 1831

机器学习实战4-教育领域:学生成绩的可视化分析与成绩预测-详细分析

大家好,我是微学AI,今天给大家带来机器学习实战4-学生成绩的可视化分析与成绩预测,机器学习在教育中的应用具有很大的潜力,特别是在学生成绩的可视化分析与成绩预测方面。机器学习可以通过对学生的父母教育情况和学校表现等数据进行分析和挖掘,从而揭示潜在的学习模式和趋势。

微学AI的博客 7681

Joyful Pandas的数据处理与分析:从入门到精通的完整指南

在数据科学和数据分析领域,数据处理是至关重要的一环。你是否曾经遇到过这样的困境: - 面对海量的CSV、Excel数据文件,手动处理效率低下? - 需要快速进行数据清洗、转换和分析,但不知道从何入手? - 想要进行复杂的数据聚合和统计计算,但传统工具力不从心? Pandas(Python Data Analysis Library)正是为了解决这些问题而生的强大工具。作为Python生态系统中...

gitblog_00910的博客 545

运行 ui5 serve 命令行报错的处理方法

如果大家运行 ui5 serve 命令行,报如下的错误消息: ui5 不是内部或外部命令,也不是可运行的程序: 只需要执行命令行,全局安装 ui5 cli(command line interface)这个命令行工具即可: npm install --global @ui5/cli 这个 ui5 cli 的入口执行文件,实际安装在了我 Node.js 的安装目录下: 更多Jerry的原创文章,尽在:“汪子熙”: ...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1343

深入解析《Joyful Pandas》:一本值得拥有的Pandas数据处理实战指南

在数据科学和数据分析领域,Pandas(Python Data Analysis Library)已经成为事实上的标准数据处理工具。然而,很多学习者在掌握Pandas时会遇到这样的困境: > "官方文档太晦涩,网上教程太零散,实战案例太少,学完还是不会用!" 《Joyful Pandas》正是为了解决这些痛点而生的中文教程。它不仅被pandas官方选为[社区推荐教程](https://pand...

gitblog_00315的博客 453

【专栏必读】王道考研408操作系统+Linux系统编程万字笔记使用说明及章节导航

王道408考研操作系统)第一章计算机系统概述-第一节1、2:操作系统概念、概念和特征1:理解fork的作用prinf("还没有执行fork函数的本进程为:%d\n" , getpid());//其返回值是pid类型的 sleep(1);if(ret > 0) //父进程返回的是子进程ID {printf("我是父进程,我的id是:%d,我的孩子id是%d\n" , getpid() , ret);sleep(1);} } else if(ret == 0) //子进程fork返回值是0 {.........

快乐江湖的博客 3万+

CAN(2)-GD32

GD32中CAN的特征。

小柚子的博客 554

Joyful-Pandas - pandas(2)

请注意,对于 Series 的前两个元素(1 和 2),由于无法形成完整的三个元素窗口,所以在默认情况下,对这些位置的任何滚动计算都会返回 NaN(不是数字)。对于第一个和第二个窗口,没有足够的元素来形成完整的三个元素窗口,所以这些位置的结果可能是 NaN(取决于 apply 方法的具体实现)。函数是完全对称的,它们用于根据条件来替换数据,但替换的方向是相反的,同时,它们还可以用于在不指定替换值时将数据替换为缺失值。在传入条件的方向上是完全对称的,如果不指定替换值,默认会将满足条件的元素替换为缺失值。

Jerry的博客 1625

无人机视觉锁定与目标跟踪技术深度解析(含完整代码)

本文介绍了无人机视觉锁定系统的核心技术实现,包括系统架构、目标检测与跟踪算法。系统采用YOLOv5进行初始目标检测,结合手动框选作为备选方案。在跟踪环节对比了KCF、CSRT等传统方法和SiamFC等深度学习算法,最终选用CSRT作为CPU平台最优方案。文章详细解析了相关滤波跟踪的数学原理,并提供了目标检测器和跟踪器的Python实现代码。该系统能有效处理目标遮挡、光照变化等挑战,为无人机自主跟踪提供了实用解决方案。

电脑管家 687

pandas基础笔记01|joyful Pandas学习

all 指当序列元素 全为 True 或非零元素时返回 True ,否则返回 False。#默认的是元组中不存在0,空字符none是都为True,其他的都为False。*当数组维度为1维时,可以直接进行布尔索引,而无需 np.ix_ *被调用数组的大小是确定的允许有一个维度存在空缺,此时填充-1即可。#根据给定的维度和数值类型返回一个新的数组,其元素不进行初始化。两个数组维度完全一致的时候,使用对应的元素的操作。随机整数组:np.random.randint。对A中的每个元素更新生成矩阵B,更新的方法是。

m0_52024881的博客 770

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JoyfulPandas 第一章 预备知识

joyfulpandas首页:http://inter.joyfulpandas.datawhale.club/Home.html 一、Python基础 1.列表推导式与条件赋值 在生成一个数字序列的时候,在Python中可以如下写出: L = [] def my_func(x): return 2*x for i in range(5): L.append(my_func(i)) L [0, 2, 4, 6, 8] 事实上可以利用列表推导式进行写法上的简化:[* for i i.

胖虎卖汤圆的博客 502

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

掌握Joyful Pandas的终极指南:10个避免常见错误的最佳实践

Joyful Pandas是一个专门为中文用户设计的pandas数据处理教程项目,旨在帮助数据分析师和Python开发者更高效地使用pandas库进行数据清洗、转换和分析。在前100个字的介绍中,我们已经明确了Joyful Pandas的核心价值——提供实用的pandas最佳实践指导。 ## 🔍 为什么需要Joyful Pandas最佳实践? 在数据分析项目中,pandas是最常用的工具之一

gitblog_00576的博客 744

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Pandas 神书!历时两年,Datawhale开源项目“熊猫书”重磅出版!

当然,对pandas有一定的基础,并且想要系统学习数据处理与分析方法的读者,也能从中获益,巩固和拓展自己的相关知识。耿远昊以自己的亲身体验出发而写的《pandas数据处理与分析》,其实就是许多初学者想要的:对庞杂的pandas知识体系进行剖析和梳理,找出一条由浅入深的学习路线,找出关键的函数方法,通过理论和实践的有效结合,帮助自己轻松地学习pandas。经过一段时间的思考,他决定自己编写一套关于pandas的教程,希望为有着相似痛苦体验的人提供一些帮助,让pandas的学习和使用变得更轻松。

2401_86168842的博客 1289

Joyful Pandas中的高级功能:解锁数据处理新境界

> 还在为大数据处理性能瓶颈而烦恼?本文将带你深入探索Joyful Pandas的高级功能,从多进程加速到Cython优化,全面提升你的数据处理效率! ## 读完本文你将掌握 - ???? **多进程并行处理**技术,大幅提升大数据处理速度 - ⚡ **Cython编译优化**方法,让Python代码运行如飞 - ???? **Numba即时编译**技巧,实现数值计算性能飞跃 - ???? **高级分组聚...

gitblog_01126的博客 389

Joyful-Pandas 技术文档

Joyful-Pandas 技术文档 【免费下载链接】joyful-pandas pandas中文教程 项目地址: https://gitcode.com/datawhalechina/joyful-pandas ...

gitblog_01407的博客 392

Joyful-Pandas:第1章 Pandas基础

第1章 Pandas基础本章思维导图本章问题与练习 本章思维导图 本章问题与练习 【练习一】 现有一份关于美剧《权力的游戏》剧本的数据集,请解决以下问题: (a)在所有的数据中,一共出现了多少人物? print(df['Name'].nunique()) # 564 (b)以单元格计数(即简单把一个单元格视作一句),谁说了最多的话? print(df['Name'].value_co...

sinat_38059712的博客 832

pandas 基础

pandas 基础 1. 文件读入、写入 df = pd.read_csv(r'C:\Coding\DataAnalyse\joyful-pandas-master\joyful-pandas-master\data\table.csv') print(df.head()) df_txt = pd.read_table(r"C:\Coding\DataAnalyse\joyful-pandas-...

niekai01的博客 474

pandas数据分析——常见函数查看数据

常见函数查看数据数据读取数据存储结构查看及表头含义常见函数查看数据 通用流程: 数据读取 数据存储结构查看(是Series格式 还是 DataFrame格式),列表头,行表头。 使用一些函数查看数据分布、缺失、异常,等 数据读取 (点击查看详细读取操作) import pandas as pd path = r"F:\joyful-pandas-master\data\learn_pandas.csv" df = pd.read_csv(path, encoding="gbk") 数据存储结构查看及

qsx123432的博客 3360

# joyful-pandas(下)学习笔记——第7章 文本数据

joyful-pandas(下)学习笔记——第7章 文本数据 【练习一】 现有一份关于字符串的数据集,请解决以下问题: (a)现对字符串编码存储人员信息(在编号后添加ID列),使用如下格式:“×××(名字):×国人,性别×,生于×年×月×日” df['姓名'].str.cat(df['国籍'],sep=':').str.cat(df['性别'],sep='国人,性别').str.cat(df['出生年'],sep=',生于').str.cat(df['出生月'],sep='年').str.cat(df['出

liuyi6111的博客 393

Pandas学习——Pandas基础

文件的读取和写入 文件读取 df_csv = pd.read_csv('G:\代码\joyful-pandas-master\data\my_csv.csv') # 可以写相对路径也可以写绝对路径 df_csv col1 col2 col3 col4 col5 0 2 a 1.4 apple 2020/1/1

sosososoon的博客 2558

【限时开放】 Joyful-Pandas项目:深入理解Pandas索引系统

> 还在为Pandas索引操作头疼不已?一文带你彻底掌握DataFrame和Series的索引精髓! ## 前言:为什么索引如此重要? 在数据分析和处理中,索引(Index)是Pandas库的核心概念之一。它不仅是数据的"导航系统",更是高效数据操作的关键。据统计,超过70%的Pandas数据处理操作都涉及到索引的使用。然而,很多数据分析师在使用索引时常常遇到各种问题: - 混淆`loc`和...

gitblog_00401的博客 385
上一篇: 机器学习基础——Task4 条件随机场
下一篇: Joyful pandas——Task05合并
Simone_future
博客等级 码龄7年 0粉丝 21原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值