Pandas 2.2 中文官方教程和指南(七)(1)

简介: Pandas 2.2 中文官方教程和指南(七)

社区教程

原文:pandas.pydata.org/docs/getting_started/tutorials.html

这是社区提供的许多 pandas 教程的指南,主要面向新用户。

由 Julia Evans 撰写的 pandas cookbook

这本 2015 年的 cookbook(由Julia Evans撰写)的目标是为您提供一些具体的示例,帮助您开始使用 pandas。这些都是使用真实数据的示例,以及所有相关的错误和怪异之处。有关目录,请参阅pandas-cookbook GitHub 仓库

由 Stefanie Molin 撰写的 pandas 工作坊

Stefanie Molin撰写的入门工作坊,旨在快速让您掌握 pandas,并使用真实世界数据集。内容涵盖了 pandas 入门、数据整理和数据可视化(同时也涉及到 matplotlib 和 seaborn)。pandas-workshop GitHub 仓库提供了详细的环境设置说明(包括 Binder 环境)、幻灯片和笔记本供跟随学习,以及练习来练习概念。还有一个实验室,提供了一个未在工作坊中涵盖的数据集的新练习,供额外练习。

由 Hernan Rojas 撰写的学习 pandas

一套面向新手 pandas 用户的课程:bitbucket.org/hrojas/learn-pandas

使用 Python 进行实用数据分析

这个指南是使用 Python 数据生态系统进行数据分析过程的介绍,以及一个有趣的开放数据集。有四个部分涵盖了选定主题,如munging dataaggregating datavisualizing datatime series

新用户练习

通过真实数据集和练习来提升你的技能。更多资源,请访问主要仓库。## 现代 pandas

2016 年由Tom Augspurger撰写的教程系列。源代码可在 GitHub 仓库TomAugspurger/effective-pandas中找到。

使用 pandas、vincent 和 xlsxwriter 制作 Excel 图表

快乐的 pandas

由耿元浩撰写的中文教程。涵盖了 NumPy 和 pandas 的基本操作,4 种主要的数据操作方法(包括索引、分组、重塑和连接)以及 4 种主要的数据类型(包括缺失数据、字符串数据、分类数据和时间序列数据)。每章末尾都会发布相应的练习。所有数据集和相关材料都可以在 GitHub 仓库datawhalechina/joyful-pandas中找到。

视频教程

各种教程

由 Julia Evans 制作的 pandas 食谱

这本 2015 年的食谱书(由朱莉娅·埃文斯编写)的目标是为您提供一些具体的示例,帮助您开始使用熊猫。这些都是使用真实世界数据的示例,包括所有相关的错误和怪异之处。有关目录,请参阅pandas-cookbook GitHub 仓库

Stefanie Molin 主持的熊猫工作坊

Stefanie Molin 主持的入门熊猫工作坊,旨在快速让您掌握熊猫,使用真实数据集。内容涵盖了熊猫入门、数据整理和数据可视化(并介绍了 matplotlib 和 seaborn)。pandas-workshop GitHub 仓库提供了详细的环境设置说明(包括 Binder 环境)、幻灯片和笔记本供跟随学习,以及练习来练习概念。还有一个实验室,提供了一些未在工作坊中涵盖的数据集的新练习,供额外练习。

通过 Hernan Rojas 学习熊猫

为新熊猫用户准备的一套课程:bitbucket.org/hrojas/learn-pandas

用 Python 进行实用数据分析

这个指南是一个介绍如何使用 Python 数据生态系统和一个有趣的开放数据集进行数据分析的过程。有四个部分涵盖了选定主题,如数据整理数据聚合数据可视化时间序列

新用户练习

通过真实数据集和练习来提升你的技能。更多资源,请访问主要仓库

现代熊猫

2016 年由Tom Augspurger编写的教程系列。源代码可在 GitHub 仓库TomAugspurger/effective-pandas中找到。

使用熊猫、文森特和 xlsxwriter 制作 Excel 图表

快乐的熊猫

由耿元浩编写的中文教程。涵盖了 NumPy 和 pandas 的基本操作,4 种主要数据操作方法(包括索引、分组、重塑和连接)以及 4 种主要数据类型(包括缺失数据、字符串数据、分类数据和时间序列数据)。每章末尾都有相应的练习。所有数据集和相关材料都可以在 GitHub 仓库datawhalechina/joyful-pandas中找到。

视频教程

各种教程

用户指南

原文:pandas.pydata.org/docs/user_guide/index.html

用户指南涵盖了 pandas 的所有主题领域。每个子部分介绍一个主题(如“处理缺失数据”),并讨论 pandas 如何解决该问题,其中穿插着许多示例。

对于刚开始使用 pandas 的用户,应从 10 分钟入门 pandas 开始。

要了解 pandas 基础知识的高层摘要,请参阅数据结构简介和基本功能。

可以在 API 参考中获取有关任何特定方法的更多信息。

如何阅读这些指南

在这些指南中,您将看到代码块内的输入代码,例如:

import pandas as pd
pd.DataFrame({'A': [1, 2, 3]}) 

或者:

In [1]: import pandas as pd
In [2]: pd.DataFrame({'A': [1, 2, 3]})
Out[2]: 
 A
0  1
1  2
2  3 

第一个块是标准的 Python 输入,而第二个块中的 In [1]: 表示输入在一个笔记本中。在 Jupyter 笔记本中,最后一行会被打印出来,并且图表会内联显示。

例如:

In [3]: a = 1
In [4]: a
Out[4]: 1 

等同于:

a = 1
print(a) 

指南

  • 10 分钟入门 pandas
  • pandas 中的基本数据结构
  • 对象创建
  • 查看数据
  • 选择
  • 缺失数据
  • 操作
  • 合并
  • 分组
  • 重塑
  • 时间序列
  • 分类数据
  • 绘图
  • 导入和导出数据
  • 注意事项
  • 数据结构简介
  • Series
  • 数据框
  • 基本功能
  • 头部和尾部
  • 属性和底层数据
  • 加速操作
  • 灵活的二进制操作
  • 描述性统计
  • 函数应用
  • 重新索引和更改标签
  • 迭代
  • .dt 访问器
  • 矢量化字符串方法
  • 排序
  • 复制
  • 数据类型
  • 基于 dtype 选择列
  • IO 工具(文本,CSV,HDF5,…)
  • CSV 和文本文件
  • JSON
  • HTML
  • LaTeX
  • XML
  • Excel 文件
  • OpenDocument 电子表格
  • 二进制 Excel(.xlsb)文件
  • Calamine(Excel 和 ODS 文件)
  • 剪贴板
  • Pickling
  • 消息包
  • HDF5(PyTables)
  • Feather
  • Parquet
  • ORC
  • SQL 查询
  • Google BigQuery
  • Stata 格式
  • SAS 格式
  • SPSS 格式
  • 其他文件格式
  • 性能考虑
  • PyArrow 功能
  • 数据结构集成
  • 操作
  • I/O 读取
  • 索引和选择数据
  • 不同的索引选择方式
  • 基础知识
  • 属性访问
  • 切片范围
  • 通过标签进行选择
  • 通过位置进行选择
  • 通过可调用对象进行选择
  • 结合位置和基于标签的索引
  • 选择随机样本
  • 扩充设置
  • 快速标量值获取和设置
  • 布尔索引
  • 使用 isin 进行索引
  • where()方法和掩码
  • 通过numpy()有条件地扩充设置
  • query()方法
  • 重复数据
  • 类似字典的get()方法
  • 通过索引/列标签查找数值
  • 索引对象
  • 设置/重置索引
  • 返回视图还是副本
  • MultiIndex / 高级索引
  • 分层索引(MultiIndex)
  • 使用分层索引进行高级索引
  • MultiIndex进行排序
  • 取值方法
  • 索引类型
  • 杂项索引常见问题解答
  • 写时复制(CoW)
  • 先前的行为
  • 迁移至写时复制
  • 描述
  • 链式赋值
  • 只读的 NumPy 数组
  • 要避免的模式
  • 写时复制优化
  • 如何启用 CoW
  • 合并、连接、串联和比较
  • concat()
  • merge()
  • DataFrame.join()
  • merge_ordered()
  • merge_asof()
  • compare()
  • 重塑和透视表
  • pivot()pivot_table()
  • stack()unstack()
  • melt()wide_to_long()
  • get_dummies()from_dummies()
  • explode()
  • crosstab()
  • cut()
  • factorize()
  • 处理文本数据
  • 文本数据类型
  • 字符串方法
  • 拆分和替换字符串
  • 串联
  • 使用 .str 进行索引
  • 提取子字符串
  • 测试匹配或包含模式的字符串
  • 创建指示变量
  • 方法摘要
  • 处理缺失数据
  • 被视为“缺失”的值
  • NA 语义
  • 插入缺失数据
  • 处理缺失数据的计算
  • 丢弃缺失数据
  • 填充缺失数据
  • 重复标签
  • 重复标签的后果
  • 重复标签检测
  • 禁止重复标签
  • 分类数据
  • 对象创建
  • CategoricalDtype
  • 描述
  • 处理分类数据
  • 排序和顺序
  • 比较
  • 操作
  • 数据整理
  • 数据的输入/输出
  • 缺失数据
  • 与 R 的 factor 的差异
  • 注意事项
  • 可空整数数据类型
  • 构造
  • 操作
  • 标量 NA 值
  • 可空布尔数据类型
  • 带 NA 值的索引
  • Kleene 逻辑操作
  • 图表可视化
  • 基本绘图:plot
  • 其他图表
  • 绘制缺失数据
  • 绘图工具
  • 绘图格式化
  • 直接使用 Matplotlib 绘图
  • 绘图后端
  • 表可视化
  • 样式化对象和自定义显示
  • 格式化显示
  • 样式化对象和 HTML
  • 添加样式的方法
  • 表样式
  • 设置类和链接到外部 CSS
  • 样式化函数
  • 工具提示和标题
  • 使用切片进行更精细的控制
  • 优化
  • 内置样式
  • 共享样式
  • 限制
  • 其他有趣和有用的功能
  • 导出到 Excel
  • 导出到 LaTeX
  • 关于 CSS 和 HTML 的更多信息
  • 可扩展性
  • 分组:拆分-应用-组合
  • 将对象分组
  • 遍历分组
  • 选择一个分组
  • 聚合
  • 转换
  • 过滤
  • 灵活的 apply
  • Numba 加速例程
  • 其他有用的功能
  • 示例
  • 窗口操作
  • 概览
  • 滚动窗口
  • 加权窗口
  • 扩展窗口
  • 指数加权窗口
  • 时间序列/日期功能
  • 概览
  • 时间戳 vs. 时间跨度
  • 转换为时间戳
  • Generating ranges of timestamps
  • Timestamp limitations
  • Indexing
  • Time/date components
  • DateOffset objects
  • Time Series-related instance methods
  • Resampling
  • Time span representation
  • Converting between representations
  • Representing out-of-bounds spans
  • Time zone handling
  • Time deltas
  • Parsing
  • Operations
  • Reductions
  • Frequency conversion
  • Attributes
  • TimedeltaIndex
  • Resampling
  • Options and settings
  • Overview
  • Available options
  • Getting and setting options
  • Setting startup options in Python/IPython environment
  • Frequently used options
  • Number formatting
  • Unicode formatting
  • Table schema display
  • Enhancing performance
  • Cython (writing C extensions for pandas)
  • Numba (JIT compilation)
  • Expression evaluation via eval()
  • Scaling to large datasets
  • Load less data
  • Use efficient datatypes
  • Use chunking
  • Use Other Libraries
  • Sparse data structures
  • SparseArray
  • SparseDtype
  • Sparse accessor
  • Sparse calculation
  • Interaction with scipy.sparse
  • Frequently Asked Questions (FAQ)
  • DataFrame memory usage
  • Using if/truth statements with pandas
  • Mutating with User Defined Function (UDF) methods
  • Missing value representation for NumPy types
  • Differences with NumPy
  • Thread-safety
  • 字节顺序问题
  • 食谱
  • 习惯用法
  • 选择
  • 多索引
  • 缺失数据
  • 分组
  • 时间序列
  • 合并
  • 绘图
  • 数据输入/输出
  • 计算
  • 时间增量
  • 创建示例数据
  • 常量序列

如何阅读这些指南

在这些指南中,您将看到代码块中的输入代码,例如:

import pandas as pd
pd.DataFrame({'A': [1, 2, 3]}) 

或者:

In [1]: import pandas as pd
In [2]: pd.DataFrame({'A': [1, 2, 3]})
Out[2]: 
 A
0  1
1  2
2  3 

第一个块是标准的 Python 输入,而第二个块中的 In [1]: 表示输入位于 笔记本 中。在 Jupyter 笔记本中,最后一行被打印出来,图表在行内显示。

例如:

In [3]: a = 1
In [4]: a
Out[4]: 1 

等价于:

a = 1
print(a) 

指南

  • pandas 十分钟入门
  • pandas 中的基本数据结构
  • 对象创建
  • 查看数据
  • 选择
  • 缺失数据
  • 操作
  • 合并
  • 分组
  • 重塑
  • 时间序列
  • 类别
  • 绘图
  • 导入和导出数据
  • 注意事项
  • 数据结构简介
  • 序列
  • 数据框
  • 基本要点
  • 头部和尾部
  • 属性和底层数据
  • 加速操作
  • 灵活的二进制操作
  • 描述统计
  • 函数应用
  • 重新索引和修改标签
  • 迭代
  • .dt 访问器
  • 向量化字符串方法
  • 排序
  • 复制
  • 数据类型
  • 基于 dtype 选择列
  • IO 工具(文本、CSV、HDF5 等)
  • CSV 和文本文件
  • JSON
  • HTML
  • LaTeX
  • XML
  • Excel 文件
  • OpenDocument 电子表格
  • 二进制 Excel(.xlsb)文件
  • Calamine(Excel 和 ODS 文件)
  • 剪贴板
  • 腌制
  • msgpack
  • HDF5(PyTables)
  • Feather
  • Parquet
  • ORC
  • SQL 查询
  • Google BigQuery
  • Stata 格式
  • SAS 格式
  • SPSS 格式
  • 其他文件格式
  • 性能考虑
  • PyArrow 功能
  • 数据结构集成
  • 操作
  • 输入/输出读取
  • 索引和选择数据
  • 索引的不同选择
  • 基础知识
  • 属性访问
  • 切片范围
  • 按标签选择
  • 按位置选择
  • 通过可调用进行选择
  • 结合位置和基于标签的索引
  • 选择随机样本
  • 带扩展的设置
  • 快速标量值获取和设置
  • 布尔索引
  • 使用 isin 进行索引
  • where() 方法和掩码
  • 使用 numpy() 条件性地扩大设置
  • query() 方法
  • 重复数据
  • 类似字典的 get() 方法
  • 通过索引/列标签查找值
  • 索引对象
  • 设置/重置索引
  • 返回视图与副本
  • MultiIndex / 高级索引
  • 分层索引(MultiIndex)
  • 具有分层索引的高级索引
  • MultiIndex 的排序
  • Take 方法
  • 索引类型
  • 杂项索引 FAQ
  • 写时复制(CoW)
  • 之前的行为
  • 迁移到写时复制
  • 描述
  • 链式赋值
  • 只读 NumPy 数组
  • 要避免的模式
  • 写时复制优化
  • 如何启用 CoW
  • 合并、连接、串联和比较
  • concat()
  • merge()
  • DataFrame.join()
  • merge_ordered()
  • merge_asof()
  • compare()
  • 重塑和数据透视表
  • pivot()pivot_table()
  • stack()unstack()
  • melt()wide_to_long()
  • get_dummies()from_dummies()
  • explode()
  • crosstab()
  • cut()
  • factorize()
  • 处理文本数据
  • 文本数据类型
  • 字符串方法
  • 字符串拆分和替换
  • 串联
  • 使用 .str 进行索引
  • 提取子字符串
  • 测试匹配或包含模式的字符串
  • 创建指示变量
  • 方法摘要
  • 处理缺失数据
  • 被视为“缺失”的值
  • NA 语义
  • 插入缺失数据
  • 处理带有缺失数据的计算
  • 删除缺失数据
  • 填充缺失数据
  • 重复标签
  • 重复标签的后果
  • 重复标签检测
  • 不允许重复标签
  • 分类数据
  • 对象创建
  • CategoricalDtype
  • 描述
  • 处理分类数据
  • 排序和顺序
  • 比较
  • 操作
  • 数据整理
  • 数据的输入输出
  • 缺失数据
  • 与 R 的 factor 的差异
  • 注意事项
  • 可空整数数据类型
  • 构造
  • 操作
  • 标量 NA 值
  • 可空布尔数据类型
  • 带有 NA 值的索引
  • 克里尼逻辑操作
  • 图表可视化
  • 基本绘图:plot
  • 其他图表
  • 绘制带有缺失数据的图表
  • 绘图工具
  • 绘图格式化
  • 直接使用 Matplotlib 绘图
  • 绘图后端
  • 表格可视化
  • 样式对象和自定义显示
  • 格式化显示
  • 样式对象和 HTML
  • 添加样式的方法
  • 表格样式
  • 设置类和链接到外部 CSS
  • 样式函数
  • 工具提示和标题
  • 使用切片进行精细控制
  • 优化
  • 内置样式
  • 共享样式
  • 限制
  • 其他有趣且有用的内容
  • 导出到 Excel
  • 导出到 LaTeX
  • 更多关于 CSS 和 HTML
  • 可扩展性
  • 分组:分割-应用-合并
  • 将对象拆分成组
  • 遍历组
  • 选择一组
  • 聚合
  • 变换
  • 过滤
  • 灵活的 apply
  • Numba 加速例程
  • 其他有用功能
  • 示例
  • 窗口操作
  • 概述
  • 滚动窗口
  • 加权窗口
  • 扩展窗口
  • 指数加权窗口
  • 时间序列/日期功能
  • 概述
  • 时间戳 vs. 时间跨度
  • 转换为时间戳
  • 生成时间戳范围
  • 时间戳限制
  • 索引
  • 时间/日期组件
  • DateOffset 对象
  • 与时间序列相关的实例方法
  • 重新取样
  • 时间跨度表示
  • 在不同表示之间转换
  • 表示越界跨度
  • 时区处理
  • 时间增量
  • 解析
  • 操作
  • 减少
  • 频率转换
  • 属性
  • TimedeltaIndex
  • 重新取样
  • 选项和设置
  • 概述
  • 可用选项
  • 获取和设置选项
  • 在 Python/IPython 环境中设置启动选项
  • 常用选项
  • 数字格式化
  • Unicode 格式化
  • 表模式显示
  • 增强性能
  • Cython(为 pandas 编写 C 扩展)
  • Numba(JIT 编译)
  • eval() 表达式评估
  • 扩展到大数据集
  • 减少数据加载
  • 使用高效数据类型
  • 使用分块
  • 使用其他库
  • 稀疏数据结构
  • SparseArray
  • SparseDtype
  • 稀疏访问器
  • 稀疏计算
  • scipy.sparse 的交互
  • 常见问题解答(FAQ)
  • DataFrame 内存使用情况
  • 与 pandas 一起使用 if/真值语句
  • 使用用户定义函数 (UDF) 方法进行突变
  • NumPy 类型的缺失值表示
  • 与 NumPy 的差异
  • 线程安全
  • 字节顺序问题
  • 食谱
  • 习语
  • 选择
  • 多级索引
  • 缺失数据
  • 分组
  • 时间序列
  • 合并
  • 绘图
  • 数据输入/输出
  • 计算
  • 时间增量
  • 创建示例数据
  • 常数序列

pandas 十分钟入门

原文:pandas.pydata.org/docs/user_guide/10min.html

这是针对新用户的 pandas 的简短介绍。您可以在食谱中查看更复杂的示例。

通常,我们按照以下方式导入:

In [1]: import numpy as np
In [2]: import pandas as pd 

pandas 中的基本数据结构

Pandas 提供了两种处理数据的类:

  1. Series:一个一维带标签的数组,保存任何类型的数据
    例如整数、字符串、Python 对象等。
  2. DataFrame:一种二维数据结构,类似于二维数组或带有行和列的表。

对象创建

参见数据结构介绍部分。

通过传递值列表来创建一个Series,让 pandas 创建一个默认的RangeIndex

In [3]: s = pd.Series([1, 3, 5, np.nan, 6, 8])
In [4]: s
Out[4]: 
0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64 

通过传递具有日期时间索引和标记列的 NumPy 数组使用date_range()和标记列来创建一个DataFrame

In [5]: dates = pd.date_range("20130101", periods=6)
In [6]: dates
Out[6]: 
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
 '2013-01-05', '2013-01-06'],
 dtype='datetime64[ns]', freq='D')
In [7]: df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list("ABCD"))
In [8]: df
Out[8]: 
 A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
2013-01-05 -0.424972  0.567020  0.276232 -1.087401
2013-01-06 -0.673690  0.113648 -1.478427  0.524988 

通过传递一个对象字典来创建一个DataFrame,其中键是列标签,值是列值。

In [9]: df2 = pd.DataFrame(
 ...:    {
 ...:        "A": 1.0,
 ...:        "B": pd.Timestamp("20130102"),
 ...:        "C": pd.Series(1, index=list(range(4)), dtype="float32"),
 ...:        "D": np.array([3] * 4, dtype="int32"),
 ...:        "E": pd.Categorical(["test", "train", "test", "train"]),
 ...:        "F": "foo",
 ...:    }
 ...: )
 ...: 
In [10]: df2
Out[10]: 
 A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foo 

结果DataFrame的列具有不同的 dtypes:

In [11]: df2.dtypes
Out[11]: 
A          float64
B    datetime64[s]
C          float32
D            int32
E         category
F           object
dtype: object 

如果您正在使用 IPython,则会自动启用列名(以及公共属性)的选项完成。这是将完成的属性的子集:

In [12]: df2.<TAB>  # noqa: E225, E999
df2.A                  df2.bool
df2.abs                df2.boxplot
df2.add                df2.C
df2.add_prefix         df2.clip
df2.add_suffix         df2.columns
df2.align              df2.copy
df2.all                df2.count
df2.any                df2.combine
df2.append             df2.D
df2.apply              df2.describe
df2.applymap           df2.diff
df2.B                  df2.duplicated 

如您所见,列ABCD都已自动完成。EF也是如此;其余的属性由于篇幅被截断。

查看数据

参见基本功能部分。

使用DataFrame.head()DataFrame.tail()分别查看框架的顶部和底部行:

In [13]: df.head()
Out[13]: 
 A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
2013-01-05 -0.424972  0.567020  0.276232 -1.087401
In [14]: df.tail(3)
Out[14]: 
 A         B         C         D
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
2013-01-05 -0.424972  0.567020  0.276232 -1.087401
2013-01-06 -0.673690  0.113648 -1.478427  0.524988 

显示DataFrame.indexDataFrame.columns

In [15]: df.index
Out[15]: 
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
 '2013-01-05', '2013-01-06'],
 dtype='datetime64[ns]', freq='D')
In [16]: df.columns
Out[16]: Index(['A', 'B', 'C', 'D'], dtype='object') 

使用DataFrame.to_numpy()返回底层数据的 NumPy 表示形式,不包括索引或列标签:

In [17]: df.to_numpy()
Out[17]: 
array([[ 0.4691, -0.2829, -1.5091, -1.1356],
 [ 1.2121, -0.1732,  0.1192, -1.0442],
 [-0.8618, -2.1046, -0.4949,  1.0718],
 [ 0.7216, -0.7068, -1.0396,  0.2719],
 [-0.425 ,  0.567 ,  0.2762, -1.0874],
 [-0.6737,  0.1136, -1.4784,  0.525 ]]) 

注意

NumPy 数组整个数组有一个 dtype,而 pandas DataFrames 每列有一个 dtype。当您调用 DataFrame.to_numpy(),pandas 将找到可以容纳 DataFrame 中 所有 dtypes 的 NumPy dtype。如果通用数据类型是 objectDataFrame.to_numpy() 将需要复制数据。

In [18]: df2.dtypes
Out[18]: 
A          float64
B    datetime64[s]
C          float32
D            int32
E         category
F           object
dtype: object
In [19]: df2.to_numpy()
Out[19]: 
array([[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],
 [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo'],
 [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'],
 [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo']],
 dtype=object) 

describe() 显示数据的快速统计摘要:

In [20]: df.describe()
Out[20]: 
 A         B         C         D
count  6.000000  6.000000  6.000000  6.000000
mean   0.073711 -0.431125 -0.687758 -0.233103
std    0.843157  0.922818  0.779887  0.973118
min   -0.861849 -2.104569 -1.509059 -1.135632
25%   -0.611510 -0.600794 -1.368714 -1.076610
50%    0.022070 -0.228039 -0.767252 -0.386188
75%    0.658444  0.041933 -0.034326  0.461706
max    1.212112  0.567020  0.276232  1.071804 

转置您的数据:

In [21]: df.T
Out[21]: 
 2013-01-01  2013-01-02  2013-01-03  2013-01-04  2013-01-05  2013-01-06
A    0.469112    1.212112   -0.861849    0.721555   -0.424972   -0.673690
B   -0.282863   -0.173215   -2.104569   -0.706771    0.567020    0.113648
C   -1.509059    0.119209   -0.494929   -1.039575    0.276232   -1.478427
D   -1.135632   -1.044236    1.071804    0.271860   -1.087401    0.524988 

DataFrame.sort_index() 按轴排序:

In [22]: df.sort_index(axis=1, ascending=False)
Out[22]: 
 D         C         B         A
2013-01-01 -1.135632 -1.509059 -0.282863  0.469112
2013-01-02 -1.044236  0.119209 -0.173215  1.212112
2013-01-03  1.071804 -0.494929 -2.104569 -0.861849
2013-01-04  0.271860 -1.039575 -0.706771  0.721555
2013-01-05 -1.087401  0.276232  0.567020 -0.424972
2013-01-06  0.524988 -1.478427  0.113648 -0.673690 

DataFrame.sort_values() 按值排序:

In [23]: df.sort_values(by="B")
Out[23]: 
 A         B         C         D
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-06 -0.673690  0.113648 -1.478427  0.524988
2013-01-05 -0.424972  0.567020  0.276232 -1.087401 

选择

注意

当选择和设置标准 Python / NumPy 表达式对于交互式工作来说直观且方便,但对于生产代码,我们推荐优化的 pandas 数据访问方法,DataFrame.at()DataFrame.iat()DataFrame.loc()DataFrame.iloc()

查看索引文档 索引和选择数据 和 MultiIndex / 高级索引。

Getitem ([])

对于 DataFrame,传递单个标签选择一个列并产生等同于 df.ASeries

In [24]: df["A"]
Out[24]: 
2013-01-01    0.469112
2013-01-02    1.212112
2013-01-03   -0.861849
2013-01-04    0.721555
2013-01-05   -0.424972
2013-01-06   -0.673690
Freq: D, Name: A, dtype: float64 

对于 DataFrame,传递一个切片 : 选择匹配的行:

In [25]: df[0:3]
Out[25]: 
 A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
In [26]: df["20130102":"20130104"]
Out[26]: 
 A         B         C         D
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860 

按标签选择

在 按标签选择 中查看更多使用 DataFrame.loc()DataFrame.at()

选择匹配标签的行:

In [27]: df.loc[dates[0]]
Out[27]: 
A    0.469112
B   -0.282863
C   -1.509059
D   -1.135632
Name: 2013-01-01 00:00:00, dtype: float64 

选择所有行(:)与选择列标签:

In [28]: df.loc[:, ["A", "B"]]
Out[28]: 
 A         B
2013-01-01  0.469112 -0.282863
2013-01-02  1.212112 -0.173215
2013-01-03 -0.861849 -2.104569
2013-01-04  0.721555 -0.706771
2013-01-05 -0.424972  0.567020
2013-01-06 -0.673690  0.113648 

对于标签切片,两个端点都是 包含 的:

In [29]: df.loc["20130102":"20130104", ["A", "B"]]
Out[29]: 
 A         B
2013-01-02  1.212112 -0.173215
2013-01-03 -0.861849 -2.104569
2013-01-04  0.721555 -0.706771 

选择单行和列标签返回一个标量:

In [30]: df.loc[dates[0], "A"]
Out[30]: 0.4691122999071863 

为了快速访问标量(等同于先前的方法):

In [31]: df.at[dates[0], "A"]
Out[31]: 0.4691122999071863 

按位置选择

在按位置选择中使用DataFrame.iloc()DataFrame.iat()查看更多。

通过传递的整数位置选择:

In [32]: df.iloc[3]
Out[32]: 
A    0.721555
B   -0.706771
C   -1.039575
D    0.271860
Name: 2013-01-04 00:00:00, dtype: float64 

整数切片类似于 NumPy/Python:

In [33]: df.iloc[3:5, 0:2]
Out[33]: 
 A         B
2013-01-04  0.721555 -0.706771
2013-01-05 -0.424972  0.567020 

整数位置位置的列表:

In [34]: df.iloc[[1, 2, 4], [0, 2]]
Out[34]: 
 A         C
2013-01-02  1.212112  0.119209
2013-01-03 -0.861849 -0.494929
2013-01-05 -0.424972  0.276232 

明确切片行:

In [35]: df.iloc[1:3, :]
Out[35]: 
 A         B         C         D
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804 

明确切片列:

In [36]: df.iloc[:, 1:3]
Out[36]: 
 B         C
2013-01-01 -0.282863 -1.509059
2013-01-02 -0.173215  0.119209
2013-01-03 -2.104569 -0.494929
2013-01-04 -0.706771 -1.039575
2013-01-05  0.567020  0.276232
2013-01-06  0.113648 -1.478427 

明确获取一个值:

In [37]: df.iloc[1, 1]
Out[37]: -0.17321464905330858 

快速访问标量(等同于先前的方法):

In [38]: df.iat[1, 1]
Out[38]: -0.17321464905330858 

布尔索引

选择df.A大于0的行。

In [39]: df[df["A"] > 0]
Out[39]: 
 A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-04  0.721555 -0.706771 -1.039575  0.271860 

从满足布尔条件的DataFrame中选择值:

In [40]: df[df > 0]
Out[40]: 
 A         B         C         D
2013-01-01  0.469112       NaN       NaN       NaN
2013-01-02  1.212112       NaN  0.119209       NaN
2013-01-03       NaN       NaN       NaN  1.071804
2013-01-04  0.721555       NaN       NaN  0.271860
2013-01-05       NaN  0.567020  0.276232       NaN
2013-01-06       NaN  0.113648       NaN  0.524988 

使用isin()方法进行过滤:

In [41]: df2 = df.copy()
In [42]: df2["E"] = ["one", "one", "two", "three", "four", "three"]
In [43]: df2
Out[43]: 
 A         B         C         D      E
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632    one
2013-01-02  1.212112 -0.173215  0.119209 -1.044236    one
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804    two
2013-01-04  0.721555 -0.706771 -1.039575  0.271860  three
2013-01-05 -0.424972  0.567020  0.276232 -1.087401   four
2013-01-06 -0.673690  0.113648 -1.478427  0.524988  three
In [44]: df2[df2["E"].isin(["two", "four"])]
Out[44]: 
 A         B         C         D     E
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804   two
2013-01-05 -0.424972  0.567020  0.276232 -1.087401  four 

设置

设置新列会自动通过索引对齐数据:

In [45]: s1 = pd.Series([1, 2, 3, 4, 5, 6], index=pd.date_range("20130102", periods=6))
In [46]: s1
Out[46]: 
2013-01-02    1
2013-01-03    2
2013-01-04    3
2013-01-05    4
2013-01-06    5
2013-01-07    6
Freq: D, dtype: int64
In [47]: df["F"] = s1 

按标签设置值:

In [48]: df.at[dates[0], "A"] = 0 

按位置设置值:

In [49]: df.iat[0, 1] = 0 

通过分配 NumPy 数组进行设置:

In [50]: df.loc[:, "D"] = np.array([5] * len(df)) 

先前设置操作的结果:

In [51]: df
Out[51]: 
 A         B         C    D    F
2013-01-01  0.000000  0.000000 -1.509059  5.0  NaN
2013-01-02  1.212112 -0.173215  0.119209  5.0  1.0
2013-01-03 -0.861849 -2.104569 -0.494929  5.0  2.0
2013-01-04  0.721555 -0.706771 -1.039575  5.0  3.0
2013-01-05 -0.424972  0.567020  0.276232  5.0  4.0
2013-01-06 -0.673690  0.113648 -1.478427  5.0  5.0 

使用设置的where操作:

In [52]: df2 = df.copy()
In [53]: df2[df2 > 0] = -df2
In [54]: df2
Out[54]: 
 A         B         C    D    F
2013-01-01  0.000000  0.000000 -1.509059 -5.0  NaN
2013-01-02 -1.212112 -0.173215 -0.119209 -5.0 -1.0
2013-01-03 -0.861849 -2.104569 -0.494929 -5.0 -2.0
2013-01-04 -0.721555 -0.706771 -1.039575 -5.0 -3.0
2013-01-05 -0.424972 -0.567020 -0.276232 -5.0 -4.0
2013-01-06 -0.673690 -0.113648 -1.478427 -5.0 -5.0 


Pandas 2.2 中文官方教程和指南(七)(2)https://developer.aliyun.com/article/1509748

相关文章
|
21天前
|
SQL 数据采集 数据挖掘
Pandas 教程
10月更文挑战第25天
28 2
|
3月前
|
存储 JSON 数据格式
Pandas 使用教程 CSV - CSV 转 JSON
Pandas 使用教程 CSV - CSV 转 JSON
38 0
|
3月前
|
JSON 数据格式 Python
Pandas 使用教程 JSON
Pandas 使用教程 JSON
42 0
|
3月前
|
SQL 数据采集 JSON
Pandas 使用教程 Series、DataFrame
Pandas 使用教程 Series、DataFrame
68 0
|
5月前
|
数据采集 存储 数据可视化
Pandas高级教程:数据清洗、转换与分析
Pandas是Python的数据分析库,提供Series和DataFrame数据结构及数据分析工具,便于数据清洗、转换和分析。本教程涵盖Pandas在数据清洗(如缺失值、重复值和异常值处理)、转换(数据类型转换和重塑)和分析(如描述性统计、分组聚合和可视化)的应用。通过学习Pandas,用户能更高效地处理和理解数据,为数据分析任务打下基础。
654 3
|
6月前
|
索引 Python
Pandas 2.2 中文官方教程和指南(一)(4)
Pandas 2.2 中文官方教程和指南(一)
61 0
|
6月前
|
存储 SQL JSON
Pandas 2.2 中文官方教程和指南(一)(3)
Pandas 2.2 中文官方教程和指南(一)
98 0
|
6月前
|
XML 关系型数据库 PostgreSQL
Pandas 2.2 中文官方教程和指南(一)(2)
Pandas 2.2 中文官方教程和指南(一)
179 0
|
6月前
|
XML 关系型数据库 MySQL
Pandas 2.2 中文官方教程和指南(一)(1)
Pandas 2.2 中文官方教程和指南(一)
184 0
|
6月前
|
C++ 索引 Python
Pandas 2.2 中文官方教程和指南(五)(4)
Pandas 2.2 中文官方教程和指南(五)
51 0
下一篇
无影云桌面