Pandas loc和iloc 以及 pivot和melt详解

第二课丨学会区分iloc和loc切割数据☀ iloc和loc函数的介绍,使用,以及使用的例子。同时对波士顿房价的数据进行切割学习。 阅读详情
  1. pandas的iloc和loc是分别使用位置和标签(列名或者行名)进行筛选数据。其中iloc是位置索引,loc是根据标签筛选。
  2. pivot和melt是pandas对整个数据表进行更改,其中pivot是将长格式数据列变成宽格式数据列(把某列的数据变成列名),melt是将宽数据格式变成长数据格式()

1. iloc

1.1 简单切片索引

#因索引从0开始
data.iloc[1:2,:]:选取第2-3行的值但是选不到3,列全选,2行所有列的值
data.iloc[1,2]:1表示第2行,2表示第三列,选取2行3列的值
data.iloc[1:2,1:2]:第2行第2列的值
data[1,:]:第1行所有列的值
data[:,2]:第2列所有行的值

从中可以看出当不存在切片:符号时,选取的是某单个值,存在切片:时,选取的数据片,即某几列或几行数据。

1.2 根据bool值索引

boolean_selection = df.iloc[:, [True, False, True]]# 选择第一列和第三列的所有行

在数据预处理中,pandas很多函数返回的都是bool类型,例如isnull,当我们筛选哪些特征存在空值时,即可使用iloc

boolean_selection = df.iloc[:, df.isnull().any()]# 选择所有为空的列

注意:因为df.isnull()是每个值是否为空的二维bool数组,而iloc传递的bool是一维列表,故使用any对每列进行聚合,检查是否有至少一个 True 值,有一个空值就是该列就是True,没有查找到该列就是False。

2. loc

2.1 根据标签名索引

注意loc筛选[A,B],其中AB都可以使用标签名切片。

df.loc['A':'D','Name':'Salary']# 选取A到D行,name-salary列
data.loc['A',:] #选取A行所有值
data.loc[:,'B'] #选取B列所有值
data.loc[1:2,'columns_name'] #选取columns_name中1-2即第2行的数据 根据列名筛选行 限制列数 
data.loc[data['columns_name']=='name1',:]#根据行标签中某个值筛选所有的列。限制行数
data.loc[data['columns_name']=='name1','columns_name'] #限制行列数 注意不能使用索引切片 

2.2 根据bool条件索引

根据某行的条件或者某列的条件进行筛选。

boolean_selection =df.loc[df['Age'] > 30,:]  # 选择 'Age' 列中大于 30 的所有行和列 df['Age'] > 30 返回的是行的bool类,若大于30就是True否则False
print(boolean_selection)

3. pivot

将pandas的DataFrame格式数据从长格式转变为宽格式。

pd.pivot(index=None, columns=None, values=None)

  • index:新 DataFrame 的索引列。
  • columns:需要变宽的列名。新 DataFrame 的列名,可以是单个列名或包含多个列名的列表
  • values:需要变宽的列名的 DataFrame 的值列

长格式

iddate产品销售
1202301电脑3
2202302手机5
3202302电脑2
4202301手机6
5202303电脑1
6202303手机7

宽格式

iddate电脑手机
120230136
220230225
320230317
import pandas as pd

data = {'Date': ['202301', '202302', '202302', '202301','202303','202303'],
        'Variable': ['电脑', '手机', '电脑', '手机','电脑', '手机'],
        'Value': [3,5,2,6,1,7]}
df_long = pd.DataFrame(data)
print(df_long)
df_wide = df_long.pivot(index='Date', columns='Variable', values='Value')
print(df_wide)

4. melt

将pandas的DataFrame格式数据从宽格式转变为长格式。

pd.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name=‘value’, col_level=None)

  • frame:要进行重塑的 DataFrame。
  • id_vars:被保留不被重塑的列,即保持不变的列
  • value_vars: 需要被重塑的列
  • var_name:新生成的列名,存储原始列名的列。
  • value_name:新生成的列名,存储原始列名的值

宽格式

id用户名202301202302202303
1a306080
2b205090
3c107050

长格式

id用户名年份消费
1a20230130
2b20230120
3c20230110
1a20230260
2b20230250
3c20230270
1a20230380
2b20230390
3c20230350
import pandas as pd

data = {'id': [1,2,3],
        '用户名': ['a', 'b', 'c'],
        '202301': [30,20,10],
       '202302':[60,50,70],
       '202303':[80,90,50]}
df_wide = pd.DataFrame(data)
df_long = df_wide.melt(id_vars=['id','用户名'],value_vars=['202301','202302','202303'],var_name='年份',value_name='消费')
#或
df_long2 = pd.melt(frame=df_wide,id_vars=['id','用户名'],value_vars=['202301','202302','202303'],var_name='年份',value_name='消费')


4. 总结

iloc loc melt pivot 这些对pandas基础操作的函数可以帮助我们在数据预处理的时候更好的对数据进行筛选。总的来说,在处理不同数据格式和筛选时非常有用的工具

详解 Pandas 的透视表函数 Pandas 的透视表函数主要为pivot()和,主要的功能为对 DataFrame 的行和列进行重新组合来重塑数据。 阅读详情

相关推荐

Pandas中loc和iloc函数用法详解(源码+实例)

loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行) iloc函数:通过行号来取行数据(如取第二行的数据) 本文给出loc、iloc常见的五种用法,并附上详细代码。 1. 利用loc、iloc提取行数据 import numpy as np import pandas as pd #创建一个Dataframe data=pd.DataFrame(...

W_weiying的博客 38万+

iloc[ ]函数(Pandas库)

问题:iloc函数是干什么的? 回答:在数据分析过程中,很多时候需要从数据表中提取出相应的数据,而这么做的前提是需要先“索引”出这一部分数据。iloc函数,属于pands库,全称为index location,即对数据进行位置(location)索引(index)。 问题:iloc函数怎么用? 回答:iloc[a,b],其中a是行数,b是列数。具体a和b的输入有以下几种形式: 1.iloc[a,b]:取第a行第b列的数据。 注意,在iloc中认为数据中的行数和列数都是如图这样定义的 图1...

Fwuyi的博客 15万+

Pandas DataFrame数据处理实战:从向量化操作到性能优化全解析

在Python数据分析领域,高效处理结构化数据是核心需求。其原理在于利用向量化运算,将批量操作委托给底层优化库执行,从而避免低效的Python循环,实现性能的数十倍提升。这一技术价值在于,它为数据分析师、科学家和开发者提供了在内存中进行灵活、高效计算的能力,尤其适合处理GB级别以下的数据集,广泛应用于数据清洗、转换、聚合及业务报表生成等场景。本文聚焦于Pandas DataFrame这一核心工具,深入探讨其数据类型系统、索引对齐机制以及数据选取、合并、分组聚合等实战操作,并涵盖内存优化与Parquet格式应

weixin_34062469的博客 510

【Python专题】pandas.melt函数

大家经常把melt函数和透视表pivot_table函数放在一起对比。 同时,这里有一篇不错的对比的文章。Pandas melt和pivot_table比excel透视表好用多了 以及pandas行转列,列转行操作 一、作用 pandas.melt函数是为了将数据转换为对计算机友好的函数,当然,也是为了更加便于计算。 它主要是可以将在宽度上的表现形式转换为在长度上的表现形式。(Pandas.melt() unpivots a DataFrame from wide format to long f

数据媛 1万+

Pandas melt和pivot可逆整形实战:宽表长表转换原理与避坑指南

在数据分析中,宽表与长表的相互转换是数据清洗与建模准备的核心环节。其本质是维度信息的结构化重构:宽表将时间、指标等业务维度隐式编码于列名,而长表通过显式变量列(如date、metric)实现维度解耦与计算友好。melt()负责‘列转行’,将冗余列名升维为可分组、可聚合的逻辑字段;pivot_table()而非pivot()才是其安全逆操作,因其内置aggfunc机制可处理id+column组合的唯一性约束。该技术广泛应用于时序分析、报表生成、机器学习特征工程等场景,尤其适合处理销售日报、用户行为日志、多周期

weixin_30572613的博客 386

Pandas核心参数深度解析:从数据读取到分组聚合的实战技巧

在数据处理与分析领域,Pandas作为Python的核心库,其函数参数的合理配置直接决定了代码的效率和结果的准确性。理解参数背后的设计原理,不仅能避免常见的数据合并、类型转换错误,更能显著提升内存利用率和计算性能。例如,在数据读取阶段,通过dtype参数预先指定列类型,可以避免内存浪费和自动推断带来的潜在错误;在数据合并时,merge函数的how参数决定了连接类型,是内连接、左连接还是外连接,直接影响最终数据的完整性。这些参数技巧在数据清洗、分组聚合、时间序列分析等场景中具有极高的技术价值,能够帮助开发者构

weixin_34221332的博客 410

Pandas 数据处理从入门到精通:核心操作全解析

本文展示了Python中Pandas库的基本数据操作,主要包括: 创建包含多种数据类型的示例DataFrame(整数、字符串、日期、布尔值) 使用head()和tail()查看数据首尾行 获取DataFrame的基本信息(形状、列名、索引、数据类型) 数据类型检查与转换(astype) 查看唯一值、极值和求和(unique(), max(), min(), sum()) 索引操作(设置索引列set_index) 列表转换(tolist(), to_list())和排序操作 这些操作涵盖了Pandas数据框的

qq_45618788的博客 234

Pandas数据处理进阶:28个核心方法从入门到精通

在Python数据分析领域,数据处理是核心环节,而向量化计算则是提升效率的关键技术。向量化操作利用底层优化,避免了低效的循环,能大幅提升数据处理的性能。这一原理在Pandas库中得到了充分体现,其内置的大量向量化方法正是其技术价值的核心。掌握这些方法,对于处理数据分析、机器学习中的数据清洗与特征工程等应用场景至关重要。本文聚焦于Pandas的实战应用,深入解析数据IO、清洗、分组聚合等高频操作,并特别探讨了`read_parquet`在处理大规模数据时的优势以及如何利用`groupby`进行高效的数据聚合,

weixin_30279671的博客 396

Pandas数据清洗七把瑞士军刀:assign、pipe、loc等核心函数实战指南

在数据科学工程中,数据清洗是特征构建与模型落地的关键前提。pandas作为Python数据处理基石,其核心方法如.assign()、.pipe()、.loc[]、.groupby().agg()等并非语法点缀,而是支撑高可靠性、可维护性与高性能清洗流水线的底层能力。这些函数共同体现向量化计算、链式编程、精准索引与模块化设计等关键原理,显著提升GB级业务数据(如电商日志、金融时序、IoT传感器)的处理效率与协作质量。本文聚焦真实生产场景中高频使用且不可替代的7个函数,解析其设计哲学、性能边界与避坑要点,助力工

weixin_30564785的博客 381

Pandas DataFrames重塑实战:从脏数据到可交付结构

DataFrame重塑是数据科学中连接原始业务数据与下游建模、可视化、系统对接的关键环节。其核心原理在于通过melt、pivot_table、explode、stack等操作,动态调整数据的行、列、索引三维结构,以满足不同任务对数据形态的刚性要求——如绘图需长格式、机器学习需二维特征矩阵、API对接需规范JSON。这一过程远非语法调用,而是涉及向量化思维转换、NaN语义处理、维度唯一性校验、内存优化及类型安全等工程化实践。掌握Pandas DataFrames重塑,本质是掌握如何让数据在真实场景中‘稳、准、

a5199519的博客 417

Pandas数据清洗与预处理实战:数模竞赛与数据分析核心技能

在数据分析与科学计算领域,数据清洗与预处理是构建可靠模型的首要环节。其核心原理在于将原始、混乱的源数据转化为结构化、高质量的可用数据,涉及缺失值处理、异常值检测、格式标准化等关键技术。这一过程的技术价值在于为后续的统计分析、机器学习建模提供准确、一致的数据基础,直接影响模型性能与结论可信度。在数学建模竞赛、商业智能、金融分析等应用场景中,高效的数据预处理能力尤为关键。本文聚焦于Python的Pandas库,通过**向量化操作**和**分组聚合**等高效方法,系统讲解如何应对真实场景中的海量、多源、脏乱数据,

weixin_30385925的博客 362

多维聚合不是groupby:pandas pivot_table与维度建模实战

多维聚合是数据分析的核心能力,本质是将原始事务数据按业务维度组织成可分析的结构化视图。它源于OLAP立方体思想,强调维度(如地区、时间、产品)与度量(如销售额、复购率)的分离建模,而非简单分组求和。关键技术包括pivot_table构建交叉表、melt/pivot实现宽长转换、计算维度(如季度、用户分层)的规范生成,以及维度标准化与语义完整性保障。其核心价值在于支撑BI看板、自动化报告和机器学习特征工程等下游场景。本文聚焦pandas生态下的多维聚合落地路径,详解pivot_table四大关键参数、维度退化

weixin_30824599的博客 463

Pandas数据处理实训指南:从数据清洗到分析实战

在数据分析领域,数据处理是核心基础环节,它涉及将原始数据转化为可用于分析的整洁格式。其原理在于通过系统化的数据清洗、转换和整合,消除数据中的噪声和不一致性,从而提升数据质量和分析结果的可靠性。这一过程的技术价值在于能够显著提高数据分析的效率和准确性,为后续的建模、可视化及决策支持奠定坚实基础。应用场景广泛覆盖金融风控、电商运营、科学研究等多个行业,尤其在Python数据分析生态中,pandas库作为核心工具,提供了DataFrame数据结构和丰富的API,是实现数据处理自动化的关键。本文聚焦于pandas在

weixin_33738578的博客 412

多维聚合与数据变形:从OLAP立方体到pandas拓扑操作

多维聚合是BI分析与OLAP引擎的核心基础,本质是将关系型明细数据升维建模为具有坐标语义的N维立方体,支持Roll-up、Slice、Dice等可逆操作。其技术价值在于突破GROUP BY的二维限制,实现任意维度组合下的快速切片、钻取与动态透视。典型应用场景包括销售区域季度交叉分析、同比环比计算、TopN品牌排名及BI前端拖拽式探索。关键挑战在于保持维度语义一致性与聚合态不可逆性,避免因unstack错位、pivot重复或melt命名失当导致的逻辑错误。本文聚焦pandas中MultiIndex立方体的构建

weixin_33672400的博客 385

1006. 换个格式输出整数 (15)-PAT乙级真题

1006. 换个格式输出整数 (15)让我们用字母B来表示“百”、字母S表示“十”,用“12…n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234,因为它有2个“百”、3个“十”、以及个位的4。输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000)。输出格式:每个测试用例的输出占一行,用规定的格式输出n。输入样例1...

柳婼 の blog 2243

手把手教你为STM32设备生成自定义MAC地址(基于芯片ID的5种算法对比)

本文详细介绍了基于STM32芯片ID生成自定义MAC地址的5种算法,包括直接截取、异或折叠、CRC32哈希、自定义混合运算及SHA-256摘要。通过对比分析各算法的计算复杂度、唯一性及适用场景,帮助嵌入式开发者根据项目规模与资源,选择最合适的方案,确保设备MAC地址的唯一性与合规性。

weixin_29170327的博客 528

Pandas学习笔记

围绕Pandas Cheet Sheet,增加相应的样例代码,从而在不丢失简明的基础上,逐步深入,从而能快速掌握Pandas

bill的博客 1286

YOLOv11 改进策略 | HWD:引入 Haar 小波变换,减少信息丢失

在卷积神经网络(CNN)中,下采样(Downsampling)是降低特征图分辨率、扩大感受野的关键操作,通常通过最大池化(MaxPool)或步长为 2 的卷积(Strided Convolution)实现。然而,这些方法在降低分辨率的同时,往往会丢失图像中的高频细节信息(如边缘、纹理)和精确的空间位置信息,这可能对后续特征提取和目标检测精度产生不利影响,尤其是对于小目标和需要精细定位的任务。

走向CTO的路上... 1792

数模竞赛必备:Pandas数据清洗与高效处理实战指南

在数据科学和数学建模竞赛中,数据处理是核心基础环节。Pandas作为Python生态中最强大的数据分析库,其向量化操作和高效索引机制能够显著提升数据清洗与转换的效率。掌握DataFrame的索引切片、条件筛选、缺失值处理及分组聚合等关键技术,不仅能优化内存使用,还能避免常见性能陷阱。这些技能在应对多源异构的竞赛数据集时尤为重要,能够帮助参赛者快速完成数据预处理,将更多时间投入到模型构建与策略分析中。本文聚焦于Pandas在数学建模中的实战应用,涵盖数据清洗、重塑及性能优化等关键操作,助力参赛者从基础使用迈向

weixin_33911824的博客 374

保姆级教程:用Multisim仿真快速上手二极管、MOSFET和IGBT的开关特性

本文提供了一份详细的Multisim仿真教程,帮助读者快速掌握二极管、MOSFET和IGBT的开关特性。通过搭建实验电路、观察波形特征和参数影响分析,深入解析了反向恢复过程、米勒平台现象和拖尾电流效应。适合电力电子初学者和工程师通过仿真建立直观理解,提升电路设计能力。

weixin_29290863的博客 499

Kerberos基础及KDC服务(理论知识)

kerberos基础理论讲解+KDC服务

Siobhan_Mxin的博客 9715

Pandas索引操作全解析:从数据清洗翻车到高效查询实战

在数据处理与分析中,索引是高效访问和操作数据的核心机制。其原理在于为数据建立标签与位置的映射关系,通过哈希或二分查找等技术实现快速定位。掌握索引技术能显著提升数据查询、筛选和聚合的性能,是数据清洗、特征工程和业务分析的基础。在实际应用场景中,无论是处理销售报表、用户行为日志还是时间序列数据,合理的索引设计都能让数据操作事半功倍。本文围绕pandas DataFrame的索引操作,深入探讨了如何正确设置行索引与列索引,并详细解析了.loc、.iloc等索引器的使用技巧与避坑指南,帮助读者从一次数据清洗的翻车经

weixin_30301449的博客 367

GPU八卡A100使用INT4-W4A16量化大模型实验

本实验旨在探索在环境下,对大语言模型进行权重量化的可行性、效率与性能影响。通过采用工具集成 GPTQ 算法,实现对所有线性层的权重量化(W4A16 方案最终通过lm-eval工具在GSM8K任务上对压缩模型进行评估。

goodgood_UP的博客 1909

CKEditor 4 选区优化机制与列表全选删除 Bug(4931)修复解析

本文以 CKEditor 4 仓库中 [tests/core/selection/manual/optimizationlist.md](https://link.gitcode.com/i/18ab7268ae37a05f9bce479dd52ebd58) 手动测试用例为线索,剖析编辑器在“全选列表内容后按 Backspace 删除”这一场景下的行为约定,并深入讲解其背后的**选区优化(sele

gitblog_00720的博客 1012

第二节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - Python Flask 后端开发详解(附源码)

大家好,我是cuiwin!本节内容,我们从零开始开发基于Python(Flask)的后端项目,对接Vue Vben Admin(vben5)。登录mysql数据库执行: 创建数据库。

cuiwin的专栏 2268

C++11、C++14 和 C++17 标准新特性详解

特性C++11C++14C++17auto类型推导✅范围 for 循环✅Lambda 表达式✅✅✅智能指针✅移动语义✅nullptr✅统一初始化{}✅✅constexpr✅✅✅✅数字分隔符✅结构化绑定✅✅✅文件系统库✅。

h a 6 6 6 c k 为 你解决复杂难题! 441
上一篇: python可视化之——seaborn简单图绘制指南
下一篇: 机器学习之——诈骗号码识别
snow5618
博客等级 码龄9年 141粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值