跳至主要内容

Pandas 列删除教程

学习如何在 pandas 的 DataFrame 中删除列。
· 3分钟 阅读

使用 AI 探索

在数据分析中,DataFrame 里常常会有对分析无用的列。删除这些列可以让您更容易聚焦于其余有用的列。

您可以通过指定标签名和对应的轴来移除列,或者直接指定索引或列名。使用多级索引时,可以通过指定层级来移除不同层级上的标签。

.drop() 方法

先将缺失值的计数与数据框的形状作比较。您会注意到,county_name 列的缺失值数量与行数相同,这意味着该列只包含缺失值。

ri.isnull().sum()
state                            0
stop_date                        0
stop_time                        0
county_name                  91741
driver_gender                 5205
driver_race                   5202
...
ri.shape
91741, 15

由于它不包含有用信息,可以使用 .drop() 方法删除该列。

除了指定列名外,您需要指定从列轴上删除,并设置就地执行,以避免如下所示的赋值语句:

ri.drop('county_name',
  axis='columns', inplace=True)

.dropna() 方法

.dropna() 方法可以根据行中是否存在缺失值来删除行,是一种非常好用的方式。

例如,基于上面的数据集,假设 stop_date 和 stop_time 两列对我们的分析至关重要,那么没有这些数据的行对我们来说就没有用处。

ri.head()
    state   stop_date    stop_time    driver_gender   driver_race
0      RI  2005-01-04        12:55                M         White
1      RI  2005-01-23        23:15                M         White
2      RI  2005-02-17        04:15                M         White
3      RI  2005-02-20        17:15                M         White
4      RI  2005-02-24        01:20                F         White

我们可以让 pandas 删除在 stop_date 或 stop_time 任一列中存在缺失值的所有行。由于指定了子集,.dropna() 方法在决定删除哪些行时只会考虑这两列。

ri.dropna(subset=['stop_date', 'stop_time'], inplace=True)

删除列的交互式示例

在本示例中,您将删除只包含缺失值的 county_name 列,并删除 state 列,因为所有交通拦截都发生在同一个州(罗德岛)。因此,这些列不含有用信息,可以被删除。每列的缺失值数量已打印到控制台供您参考。

  • 查看 DataFrame 的 .shape,以了解行数和列数。
  • 通过将列名列表传给 .drop() 方法,删除 county_name 和 state 两列。
  • 再次查看 .shape,确认列数已减少两个。
# Examine the shape of the DataFrame
print(ri.shape)

# Drop the 'county_name' and 'state' columns
ri.drop(['county_name', 'state'], axis='columns', inplace=True)

# Examine the shape of the DataFrame (again)
print(ri.shape)

运行以上代码,会得到如下结果:

(91741, 15)
(91741, 13)

亲自试一试。

如需进一步了解如何在 pandas 中删除列,请观看我们课程 Introduction to Data Visualization with ggplot2 中的这段视频。

本文内容摘自 Kevin Markham 在 DataCamp 开设的 Introduction to Data Visualization with ggplot2 课程。

查看我们的 Pandas 添加列教程。

主题