网站首页 > 基础教程 正文
Pandas是Python当中重要的数据分析工具,在进行数据分析时,确保使用正确的数据类型非常重要,否则可能会得到意想不到的结果或错误。对 Pandas 而言,它会在很多情况下正确地作出数据类型推断,你可以继续进行分析工作,而无需深入思考该主题。
尽管 Pandas 工作得很好,但在数据分析过程中的某个时刻,你可能需要将数据从一种类型显式转换为另一种类型。本文将讨论 Pandas 的基本数据类型(即 dtypes),它们如何映射到 python 和 numpy 数据类型,以及从一种 Pandas 类型转换为另一种类型的几个方式。
Pandas 的数据类型:数据类型本质上是编程语言用来理解如何存储和操作数据的内部结构。例如,一个程序需要理解你可以将两个数字加起来,比如 5 + 10 得到 15。或者,如果是两个字符串,比如「cat」和「hat」,你可以将它们连接(加)起来得到「cathat」。尚学堂·百战程序员陈老师指出有关 Pandas 数据类型的一个可能令人困惑的地方是,Pandas、Python 和 numpy 的数据类型之间有一些重叠。
大多数情况下,你不必担心是否应该明确地将熊猫类型强制转换为对应的 NumPy 类型。一般来说使用 Pandas 的默认 int64 和 float64 就可以。我列出此表的唯一原因是,有时你可能会在代码行间或自己的分析过程中看到 Numpy 的类型。
数据类型是在你遇到错误或意外结果之前并不会关心的事情之一。不过当你将新数据加载到 Pandas 进行进一步分析时,这也是你应该检查的第一件事情。
我将使用一个非常简单的 CSV文件 来说明在 Pandas 中可能会遇到的一些常见的由数据类型导致的错误。另外,在 github 上也一个示例 notbook。
使用 lambda,我们可以将代码简化为一行,这是非常有效的方法。但我对这种方法有三个主要的意见:如果你只是在学习 Python / Pandas,或者如果将来会有 Python 新人来维护代码,我认为更长的函数的可读性更好。主要原因是它可以包含注释,也可以分解为若干步骤。lambda 函数对于新手来说更难以掌握。
其次,如果你打算在多个列上重复使用这个函数,复制长长的 lambda 函数并不方便。
最后,使用函数可以在使用 read_csv() 时轻松清洗数据。我将在文章结尾处介绍具体的使用方法。有些人也可能会争辩说,其他基于 lambda 的方法比自定义函数的性能有所提高。但为了教导新手,我认为函数方法更好。
关于Pandas 辅助函数的说明:Pandas 在直白的 astype() 函数和复杂的自定义函数之间有一个中间地带。这些辅助函数对于某些数据类型转换非常有用。
如果你顺序读下来,你会注意到我没有对日期列或 Jan Units 列做任何事情。这两种列都可以使用 Pandas 的内置函数(如 pd.to_numeric() 和 pd.to_datetime())进行转换。
Jan Units 转换出现问题的原因是列中包含一个非数字值。如果我们尝试使用 astype(),我们会得到一个错误(如前所述)。
猜你喜欢
- 2024-10-12 一文掌握Numpy矩阵 numpy矩阵乘法实现原理
- 2024-10-12 矩阵运算库:Numpy 矩阵运算库不支持点乘
- 2024-10-12 Python 的整数与 Numpy 的数据溢出
- 2024-10-12 整理20个Pandas统计函数 pandas函数汇总
- 2024-10-12 一文搞定Pandas核心概念之Series pandas的两大核心
- 2024-10-12 人工智能深度学习基础——Numpy模块知识汇总
- 2024-10-12 关于类型为numpy,TensorFlow.tensor,torch.tensor的shape变化
- 2024-10-12 Numpy基础用法汇总 numpy基础及取值操作
- 2024-10-12 想学好Python数据分析,一定要掌握的重要模块之numpy
- 2024-10-12 numpy基础之ndarray的数据类型dtype
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)