In [1]: import pandas as pd
本教程使用的数据:
  • 本教程使用泰坦尼克号数据集,存储为 CSV。数据由以下数据列组成:

    • PassengerId:每位乘客的 ID。

    • Survived:表示乘客是否幸存。0对于是和1否。

    • Pclass:3 个票价类别之一: Class 1、 Class2和 Class 3

    • 姓名:乘客姓名。

    • 性别:乘客的性别。

    • 年龄:乘客的年龄(岁)。

    • SibSp:船上兄弟姐妹或配偶的数量。

    • Parch:船上父母或儿童的数量。

    • 票号:旅客的票号。

    • 票价:表示票价。

    • 客舱:乘客的客舱编号。

    • 登船:登船港口。

    至原始数据

如何读写表格数据?#

../../_images/02_io_readwrite.svg
  • 我想分析泰坦尼克号乘客数据(以 CSV 文件形式提供)。

    In [2]: titanic = pd.read_csv("data/titanic.csv")
    

    pandas 提供了read_csv()将存储为 csv 文件的数据读取到 pandas 中的功能DataFrame。 pandas 支持许多不同的文件格式或开箱即用的数据源(csv、excel、sql、json、parquet...),每个文件格式或数据源都带有前缀read_*.

确保在读入数据后始终检查数据。显示 a 时DataFrame,默认显示前 5 行和后 5 行:

In [3]: titanic
Out[3]: 
     PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0              1         0       3  ...   7.2500   NaN         S
1              2         1       1  ...  71.2833   C85         C
2              3         1       3  ...   7.9250   NaN         S
3              4         1       1  ...  53.1000  C123         S
4              5         0       3  ...   8.0500   NaN         S
..           ...       ...     ...  ...      ...   ...       ...
886          887         0       2  ...  13.0000   NaN         S
887          888         1       1  ...  30.0000   B42         S
888          889         0       3  ...  23.4500   NaN         S
889          890         1       1  ...  30.0000  C148         C
890          891         0       3  ...   7.7500   NaN         Q

[891 rows x 12 columns]
  • 我想查看 pandas DataFrame 的前 8 行。

    In [4]: titanic.head(8)
    Out[4]: 
       PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
    0            1         0       3  ...   7.2500   NaN         S
    1            2         1       1  ...  71.2833   C85         C
    2            3         1       3  ...   7.9250   NaN         S
    3            4         1       1  ...  53.1000  C123         S
    4            5         0       3  ...   8.0500   NaN         S
    5            6         0       3  ...   8.4583   NaN         Q
    6            7         0       1  ...  51.8625   E46         S
    7            8         0       3  ...  21.0750   NaN         S
    
    [8 rows x 12 columns]
    

    要查看 a 的前 N ​​行DataFrame,请使用该head()方法并以所需的行数(在本例中为 8)作为参数。

笔记

对最后 N 行感兴趣吗? pandas也提供了一种 tail()方法。例如,titanic.tail(10)将返回 DataFrame 的最后 10 行。

可以通过请求 pandas 属性来检查 pandas 如何解释每个列数据类型dtypes

In [5]: titanic.dtypes
Out[5]: 
PassengerId      int64
Survived         int64
Pclass           int64
Name            object
Sex             object
Age            float64
SibSp            int64
Parch            int64
Ticket          object
Fare           float64
Cabin           object
Embarked        object
dtype: object

对于每一列,都会列出所使用的数据类型。其中的数据类型DataFrame为整数 ( int64)、浮点数 ( float64) 和字符串 ( object)。

笔记

当询问 时dtypes,不使用括号! 是 a和dtypes的属性。 a或的属性不需要括号。属性代表/的特征,而方法(需要括号)则使用 /执行某些操作,如第一个教程中介绍的那样。DataFrameSeriesDataFrameSeriesDataFrameSeriesDataFrameSeries

  • 我的同事要求以电子表格形式提供泰坦尼克号数据。

    In [6]: titanic.to_excel("titanic.xlsx", sheet_name="passengers", index=False)
    

    函数read_*用于将数据读取到 pandas,而 to_*方法则用于存储数据。该to_excel()方法将数据存储为 Excel 文件。在此示例中,sheet_name名为“passengers”而不是默认的“Sheet1”。通过设置 index=False行索引标签不会保存在电子表格中。

等效的读取函数read_excel()会将数据重新加载到 DataFrame

In [7]: titanic = pd.read_excel("titanic.xlsx", sheet_name="passengers")
In [8]: titanic.head()
Out[8]: 
   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
1            2         1       1  ...  71.2833   C85         C
2            3         1       3  ...   7.9250   NaN         S
3            4         1       1  ...  53.1000  C123         S
4            5         0       3  ...   8.0500   NaN         S

[5 rows x 12 columns]
  • 我对以下内容的技术摘要感兴趣DataFrame

    In [9]: titanic.info()
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 891 entries, 0 to 890
    Data columns (total 12 columns):
     #   Column       Non-Null Count  Dtype  
    ---  ------       --------------  -----  
     0   PassengerId  891 non-null    int64  
     1   Survived     891 non-null    int64  
     2   Pclass       891 non-null    int64  
     3   Name         891 non-null    object 
     4   Sex          891 non-null    object 
     5   Age          714 non-null    float64
     6   SibSp        891 non-null    int64  
     7   Parch        891 non-null    int64  
     8   Ticket       891 non-null    object 
     9   Fare         891 non-null    float64
     10  Cabin        204 non-null    object 
     11  Embarked     889 non-null    object 
    dtypes: float64(2), int64(5), object(5)
    memory usage: 83.7+ KB
    

    该方法info()提供了有关 a 的技术信息 DataFrame,因此让我们更详细地解释输出:

    • 它确实是一个DataFrame.

    • 有 891 个条目,即 891 行。

    • 每行都有一个行标签(也称为index),其值范围为 0 到 890。

    • 该表有 12 列。大多数列的每一行都有一个值(所有 891 个值都是non-null)。有些列确实存在缺失值且值少于 891 个non-null

    • NameSexCabinEmbarked由文本数据(字符串,又名object)组成。其他列是数值数据,其中一些是整数(又名integer),其他列是实数(又名float)。

    • 不同列中的数据类型(字符、整数……)通过列出dtypes.

    • 还提供了用于保存 DataFrame 的大致 RAM 量。

记住

  • 函数支持从许多不同的文件格式或数据源将数据输入 pandas read_*

  • 从 pandas 导出数据可以通过不同的 to_*方法来实现。

  • head//方法和属性方便初次检查tailinfodtypes

转至用户指南

有关 pandas 的输入和输出可能性的完整概述,请参阅有关读取器和写入器功能的用户指南部分。