pandas 处理什么样的数据?#

  • 我想开始使用 pandas

    In [1]: import pandas as pd
    

    要加载 pandas 包并开始使用它,请导入该包。社区约定的 pandas 别名是 pd,因此将 pandas 加载为 pd 被认为是所有 pandas 文档中的标准做法。

pandas 数据表表示#

../../_images/01_table_dataframe.svg
  • 我想存储泰坦尼克号乘客的数据。对于许多乘客,我知道姓名(字符)、年龄(整数)和性别(男/女)数据。

    In [2]: df = pd.DataFrame(
       ...:     {
       ...:         "Name": [
       ...:             "Braund, Mr. Owen Harris",
       ...:             "Allen, Mr. William Henry",
       ...:             "Bonnell, Miss Elizabeth",
       ...:         ],
       ...:         "Age": [22, 35, 58],
       ...:         "Sex": ["male", "male", "female"],
       ...:     }
       ...: )
       ...: 
    
    In [3]: df
    Out[3]: 
                           Name  Age     Sex
    0   Braund, Mr. Owen Harris   22    male
    1  Allen, Mr. William Henry   35    male
    2   Bonnell, Miss Elizabeth   58  female
    

    要在表中手动存储数据,请创建一个 DataFrame。当使用一个 Python 列表字典时,字典键将用作列标题,每个列表中的值将作为 DataFrame 的列。

一个 DataFrame 是一个二维的数据结构,可以存储不同类型的数据(包括字符、整数、浮点值、分类数据等)在列中。它类似于电子表格、SQL 表或在 R 中的 data.frame

  • 该表有3列,每列都有一个列标签。列标签分别是 NameAgeSex

  • Name 由文本数据组成,每个值都是一个字符串,列 Age 是数字,列 Sex 是文本数据。

在电子表格软件中,我们数据的表格表示看起来非常相似:

../../_images/01_table_spreadsheet.png

DataFrame 中的每一列都是一个 Series#

../../_images/01_table_series.svg
  • 我只对处理列 Age 中的数据感兴趣

    In [4]: df["Age"]
    Out[4]: 
    0    22
    1    35
    2    58
    Name: Age, dtype: int64
    

    当选择一个 pandas DataFrame 的单列时,结果是一个 pandas Series。要选择该列,请在方括号 [] 中使用列标签。

备注

如果你熟悉 Python 字典,选择单个列与基于键选择字典值非常相似。

你可以从头创建一个 Series

In [5]: ages = pd.Series([22, 35, 58], name="Age")

In [6]: ages
Out[6]: 
0    22
1    35
2    58
Name: Age, dtype: int64

pandas 的 Series 没有列标签,因为它只是一个 DataFrame 的单列。Series 确实有行标签。

对 DataFrame 或 Series 执行某些操作#

  • 我想知道乘客的最大年龄

    我们可以在 DataFrame 上通过选择 Age 列并应用 max() 来实现这一点:

    In [7]: df["Age"].max()
    Out[7]: 58
    

    或者到 Series:

    In [8]: ages.max()
    Out[8]: 58
    

max() 方法所示,你可以对 DataFrameSeries 事情。pandas 提供了许多功能,每个功能都是一个可以应用于 DataFrameSeries方法。由于方法是函数,不要忘记使用括号 ()

  • 我对我的数据表的数值数据的一些基本统计数据感兴趣

    In [9]: df.describe()
    Out[9]: 
                 Age
    count   3.000000
    mean   38.333333
    std    18.230012
    min    22.000000
    25%    28.500000
    50%    35.000000
    75%    46.500000
    max    58.000000
    

    describe() 方法提供了 DataFrame 中数值数据的快速概览。由于 NameSex 列是文本数据,这些默认情况下不被 describe() 方法考虑。

许多 pandas 操作返回一个 DataFrame 或一个 Seriesdescribe() 方法是返回 pandas Series 或 pandas DataFrame 的 pandas 操作的一个例子。

To user guide

在用户指南中关于 使用 describe 进行聚合 的部分查看更多选项。

备注

这只是一个起点。与电子表格软件类似,pandas 将数据表示为一个包含列和行的表格。除了表示之外,您在电子表格软件中进行的数据操作和计算也由 pandas 支持。继续阅读下一个教程以开始学习!

REMEMBER

  • 导入包,即 import pandas as pd

  • 数据表作为 pandas DataFrame 存储

  • DataFrame 中的每一列都是一个 Series

  • 你可以通过在 DataFrameSeries 上应用方法来完成事情

To user guide

数据结构介绍 页面中提供了对 DataFrameSeries 更详细的解释。