pandas中关于DataFrame数据类型超好用的方法

参考资料:pandas官方参考文档
本文详细介绍了pandas中关于DataFrame数据类型的常用函数及其使用方法,结合了pandas给出的官方文档,佐以简单示例,万字长文助您一文搞定DataFrame相关的api调用问题。在使用pandas包中的函数时默认已经执行语句 import pandas as pdimport numpy as np以调用pandas包和numpy包。

目录

*
DataFrame数据类型

+ Constructor构造
+ Attributes属性
+
* Axes轴函数
* conversion转换函数
* Indexing, iteration索引、遍历函数
DataFrame的构造转换函数:pd.DataFrame()
DataFrame的聚合函数、应用函数

+ df.apply() 或 df.applymap()
+ df.aggregate()或df.agg()
+ df.transform()
+ df.groupby()

DataFrame数据类型

DataFrame是在python中独有的一种数据类型,它是一种二维的、大小可变的、有潜在异构的表格型数据。

Constructor构造

DataFrame([data, index, columns,dtype, copy])

Attributes属性

这里只介绍常用的api,如需了解其它的,请参考文章顶部参考链接。

Axes轴函数

  1. df.index:返回行标签;
  2. df.columns:返回列标签;注意这两处都没有括号,且列标签要求有s;
  3. df.dtypes:返回df的dtypes;
  4. df.info(): 返回对于df的信息概述,如:
    pandas中关于DataFrame数据类型超好用的方法
  5. df.values:返回二维np数组的形式的df,如:
    pandas中关于DataFrame数据类型超好用的方法
  6. df.size:求出df中的元素数量,如上图df的size即为4;
    pandas中关于DataFrame数据类型超好用的方法

; conversion转换函数

  1. DataFrame.astype(dtype[, copy, errors])
    作用:将一个df转换成指定的类型;
    格式: df.astype('int32')
    示例:
    pandas中关于DataFrame数据类型超好用的方法
    注意:不通过赋值不会存储转换结果,即执行完df.astype(‘int8’)之后如果直接执行df.dtypes返回的结果仍是int64;
  2. DataFrame.convert_dtypes([infer_objects, …])
    作用:将df中的列自动转换成最可能适配的类型,并且使用的dtype都是支持pd.NA的;即把用户自定义的类型转换成python语言中最适配的数据类型,并把np.nan转换为pd.NA;
    pandas中关于DataFrame数据类型超好用的方法
    即把用户自定义的类型转换成python语言中最适配的数据类型,并把np.nan转换为pd.NA;
  3. DataFrame.infer_objects()
    作用:尝试为列类型为object的列推断更好的数据类型;
    与convert_dtypes()的区别:infer_objects()只针对类型为object的列,而convert_dtypes()针对所有的列;
  4. DataFrame.copy([deep])
    作用:复制一个df;
    格式: df_new = df.copy()
    示例:
    pandas中关于DataFrame数据类型超好用的方法

Indexing, iteration索引、遍历函数

  1. df.head([n])
    作用:返回前n行数据,默认为5
  2. df.at
    作用:按标签返回 行列对的单个值
    格式: df.at[row_label, col_label]
    示例:
    pandas中关于DataFrame数据类型超好用的方法
  3. df.iat
    作用:按索引返回 行列对的单个值
    示例:
    pandas中关于DataFrame数据类型超好用的方法
  4. df.loc
    作用:通过 标签或布尔数组访问 一行或多行或一行列对(不是只能行列对哦!)
    格式: df.loc[row_label]df.loc[row_label, col_label]df.loc[[row1_label, row2_label,...]]
    注意:不能取一列数据
    示例:
    pandas中关于DataFrame数据类型超好用的方法
  5. df.iloc
    作用:通过 索引或布尔数组访问 一行或多行或一行列对(不是只能行列对哦!)
    格式: df.iloc[row_label]df.loc[row_label, col_label]df.loc[[row1_label, row2_label,...]]
    注意:不能取一列数据

; DataFrame的构造转换函数:pd.DataFrame()

作用:将data转换成dataframe的数据类型;
格式:

pd.DataFrame(data = None, index = None, columns = None, dtype = None, copy = None)

参数:
data:需要转换位dataframe格式的原数据
index:行标签列表
columns:列标签列表
dtype:数据类型列表

示例:

pandas中关于DataFrame数据类型超好用的方法

DataFrame的聚合函数、应用函数

df.apply() 或 df.applymap()

作用:对于df执行某函数 或 对df的所有元素执行某函数
格式:

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)
df.applymap(func[, na_action])

参数:
func:欲施加给某行或者某列的函数
axis:{0 or ‘index’, 1 or ‘columns’}, default 0即为对列实施函数

  • 0 or ‘index’: 对某列(的每行)实施函数
  • 1 or ‘columns’: 对某行中(的每列)实施函数

raw:一个布尔值, default False,决定了一行或列的数据类型是以series还是ndarray object的形式传入函数

  • False : 以series为数据类型传入参数
  • True : 以ndarray objects为数据类型传入参数,如果函数是基于numpy包实现的时候有更好的表现

示例:

  • np自带的函数:
    pandas中关于DataFrame数据类型超好用的方法
  • lambda函数:
    pandas中关于DataFrame数据类型超好用的方法

df.aggregate()或df.agg()

作用: 对所有行或所有列做一项或多项聚合操作(两种形式的函数效果一模一样);
格式:

DataFrame.aggregate(func=None, axis=0, *args, **kwargs)

示例:

pandas中关于DataFrame数据类型超好用的方法

df.transform()

作用:对df每个元素调用函数;
与df.apply()的区别:在调用一个普通函数的时候没有区别,调用聚合函数时有区别,调用多个函数时也有区别。(个人理解transform只能对每个元素都进行操作,选择axis参数的意义不大)

格式:

DataFrame.transform(func, axis=0, *args, **kwargs)

示例:

  • 只调用一个函数:
    pandas中关于DataFrame数据类型超好用的方法
  • 同时调用多个lambda函数:
    pandas中关于DataFrame数据类型超好用的方法
    transform只显示最后一个lambda函数的执行结果,而apply会把每个执行结果都显示出来;
  • 同时调用多个聚合函数:(部分函数只能使用apply函数)
    pandas中关于DataFrame数据类型超好用的方法
    np.sqrt, np.exp等两种函数都能使用:
    pandas中关于DataFrame数据类型超好用的方法
  • sum等聚合函数在df.transform中要与groupby配合使用:
    pandas中关于DataFrame数据类型超好用的方法
    而df.transform(‘sum’)和df.transform(np.sum)都将报错;
    总结:对于df执行函数时的情况复杂,如果不是对普通函数建议直接使用apply(),使用聚合函数时考虑实际情况选择需要调用的api。(需要groupby分区时用transform())

df.groupby()

作用:在对数据做聚合操作前给数据分组
格式:

DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True,  observed=False, dropna=True)

主要参数:
by:mapping, function, label, or list of labels
用于确定 groupby 的组:

  1. 如果 by 是一个函数,它会在对象索引的每个值上调用。
  2. 如果传递了 dict 或 Series,则 Series 或 dict VALUES 将用于确定分组规则。
  3. 如果传递了 ndarray,则按原样使用这些值来确定组。
  4. 标签或标签列表可以通过 self 中的列传递给 group。
  5. 请注意,元组被解释为(单个)键。

axis:{0 or ‘index’, 1 or ‘columns’}, default 0
与其余函数的规则一致;

as_index:bool, default True
对于聚合输出,返回带有组标签的对象作为索引。 仅与 DataFrame 输入相关。 as_index=False 是有效的”SQL 风格”分组输出。

sort:bool, default True
对组键进行排序。 关闭此功能可获得更好的性能。 请注意,这不会影响每个组内的观察顺序。 Groupby 保留每个组中行的顺序。

group_keys:bool, default True
调用apply时,将组键添加到索引以识别片段。

dropna:bool, default True
如果为 True,并且组键包含 NA 值,则 NA 值和行/列将被删除。 如果为 False,NA 值也将被视为组中的键。
示例:

pandas中关于DataFrame数据类型超好用的方法

Original: https://blog.csdn.net/Daisy_Wang777/article/details/122099335
Author: 芊欣欲
Title: pandas中关于DataFrame数据类型超好用的方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/695346/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 方面级情感分析(一)

    方面级情感分析任务定义:方面级情感分析(Aspect-based sentiment analysis, ABSA)主要包括方面词抽取和方面级情感分类。ABSA任务需要识别出给定目…

    人工智能 2023年7月13日
    070
  • yuv422,yuv420,yuv444的区别

    声明:下面的图部分是摘自博主的,感谢博主 https://www.cnblogs.com/tid-think/p/10616789.html,如果涉及侵权,感谢告知, 学习了博主的…

    人工智能 2023年6月20日
    098
  • 【Python数据分析】pandas常用基础数据分析代码

    目录 一、获取老番茄数据 二、python数据分析 1、读取数据源 2、查看数据概况 3、查看异常值 4.1、查看最大值(max函数) 4.2、查看最小值(min函数) 5.1、查…

    人工智能 2023年7月15日
    076
  • 全网最详细的深度学习tensorflow-gpu环境配置

    学习深度学习第一步就是环境的配置,相信很多小伙伴已经被什么anaconda,tensorflow,Pytorch,cuda这些东西搞得晕头转向,今天带大家详细配置深度学习的环境,这…

    人工智能 2023年5月23日
    0112
  • 关于model 需要定义 $fillable

    关于model 需要定义 $fillable 引用laravel文档中的一段话 你也可以使用 create 方法来保存新模型。 此方法会返回模型实例。 不过,在使用之前,你需要在模…

    人工智能 2023年6月28日
    060
  • Spark源码系列:DataFrame repartition、coalesce 对比

    在Spark开发中,有时为了更好的效率,特别是涉及到关联操作的时候,对数据进行重新分区操作可以提高程序运行效率(很多时候效率的提升远远高于重新分区的消耗,所以进行重新分区还是很有价…

    人工智能 2023年6月2日
    091
  • neo4j桌面版安装

    一、下载neo4j桌面版安装驱动 1.在neo4j官网下载neo4j桌面版。 2.填写相关信息并保存激活码 (2)填写相关信息 (3)保存激活码 建议创建记事本,保存红圈内激活码 …

    人工智能 2023年6月1日
    070
  • Connection)

    问题介绍 在计算机科学中,Connection(连接)是指两个节点之间的通信路径。在网络中,Connection通常表示两台计算机之间的连接状态或通信链接。在本文中,我们将详细讨论…

    人工智能 2024年1月1日
    042
  • 第1章 PyTorch和神经网:1.1 PyTorch和神经网络

    第1章 PyTorch和神经网络 1.1 PyTorch入门 1.1.2 PyTorch张量 1.1.3 PyTorch的自动求导机制 1.1.4 计算图 自动梯度计算看似很神奇,…

    人工智能 2023年7月14日
    076
  • 机器学习复盘(4):监督学习完整总结

    监督学习是最常见的一种机器学习,他的训练数据是有标签的。通过已有的一部分输入数据与输出数据之间的相应关系。生成一个函数,将输入映射到合适的输出,训练目标是能够对新数据(或测试数据)…

    人工智能 2023年6月18日
    0116
  • 小目标检测综述

    1.小目标检测算法的一般流程 传统小目标检测算法流程 现有的小目标检测算法流程 1.输入待检测图片对象,首先对待检测图片进行候选框提取。 1.输入图像,开始训练,首先进 Origi…

    人工智能 2023年6月17日
    097
  • 本科生如何入门GNSS算法(四)- rtklib单点定位解算源码说明

    目录 单点定位 LSQ 设计矩阵 残差阵 后记 欢迎关注个人公众号 单点定位 单点定位的过程就是最小二乘平差的过程,所涉及到的卫星位置计算/大气误差计算等都是为了计算残差。关于最小…

    人工智能 2023年6月11日
    079
  • 爬取某家网二手房数据(详细教程)

    爬取某家网二手房数据(详细教程) 项目描述: 项目实施: * 1. 确定目标 – 1.1 先来说第一个页面 + * 上述设置的目的是: 所以我们可以在代码中这样呈现: …

    人工智能 2023年6月19日
    085
  • java之《浅入了解异常》适合预习,复习

    🎇🎇🎇作者:@小鱼不会骑车🎆🎆🎆专栏:《java练级之旅》🎓🎓🎓个人简介:一名专科大一在读的小比特,努力学习编程是我唯一的出路😎😎😎 认识异常 🍂简单认识异常 🍂异常的体系结构 🍂…

    人工智能 2023年7月30日
    079
  • Pandas之Series、DataFrame、MultiIndex

    Series是一个类似于一维数组的数据结构,它能够保存任何类型的数据 *主要由一组数据和与之相关的索引两部分构成。 pd.Series(data=Node,index=None,d…

    人工智能 2023年7月6日
    059
  • 基于Transform的深度学习目标检测(DETR模型)

    项目链接 Github 论文:End-to-End Object Detection with Transformers 1、准备数据 1.1 coco数据集 COCO的全称是Co…

    人工智能 2023年7月12日
    086
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球