Pandas列重命名变得简单:方法和最佳实践
本文是关于如何在Pandas中重命名列的指南。
Pandas是一个用于处理数据集的Python库。它可以轻松地从不同的文件格式(如CSV、JSON和SQL)中读取数据。当数据加载到Pandas中时,它会存储在一个DataFrame对象中。
DataFrame是一个二维对象,意味着数据以表格格式存储,包含行和列。这类似于将数据存储在CSV或电子表格文件中。当您加载数据时,pandas将尝试从数据集源文件中加载列名。
然而,加载的列名可能不理想,您可能希望将列名重命名为更有意义的名称。
在本文中,我们首先讨论在Pandas中命名列的最佳实践。之后,我们将介绍重命名列的方法。
Pandas中命名列的最佳实践
在我们介绍本文的重命名指南部分之前,以下是您在pandas中命名列时可能想要遵循的最佳实践和约定。
✅ 使用具有描述性的名称。像col_1
这样的晦涩名称很难理解,并且无法传达有关数据集中包含的数据的多少信息。
✅ 在命名列时使用蛇形命名法。在蛇形命名法中,您的列名将如下所示:number_of_people
而不是NumberOfPeople
。
✅ 虽然蛇形命名法被认为是首选,但您应该使用原始数据集使用的命名约定。这样在数据集和Pandas的DataFrame对象之间切换时就不会造成困惑。
✅ 无论使用哪种命名约定,在整个数据集中保持一致。避免将某些列使用帕斯卡命名法,而将其他列使用蛇形命名法。
✅ 最后,尽量使用较短的名称。这些名称更容易输入,因为笔记本中的代码建议和完成通常不太好。这意味着在笔记本中编程需要大量手动输入代码,而较短的名称会让生活变得更容易。
如何在Pandas中重命名列
您可以以两种方式使用本文的内容。首先,您可以将其作为参考阅读。其次,您还可以跟随操作,coding这样记住所讨论的概念的机会更大。我推荐使用后一种方法。
要进行编码操作,我将使用Google Colab托管的笔记本。您也可以创建一个并跟随操作;它完全免费。本教程中我将编写的所有代码的笔记本可在here中找到。
设置笔记本
在开始在pandas中重命名列之前,让我们设置一下笔记本并加载一些示例数据。创建一个代码单元格,使用以下代码导入pandas。
import pandas as pd
导入pandas后,您可以加载california_housing_data
数据集,该数据集在创建Google Colab笔记本时默认提供为示例数据集。
housing_data = pd.read_csv('/content/sample_data/california_housing_train.csv')
您可以使用以下代码查看数据集的前几行:
housing_data.head()
您也可以使用以下代码列出数据集中的列:
housing_data.columns
这应该产生以下输出:
Index(['longitude', 'latitude', 'housing_median_age', 'total_rooms',
'total_bedrooms', 'population', 'households', 'median_income',
'median_house_value'],
dtype='object')
这意味着您的数据已正确加载,DataFrame中包含我们所需的内容。
方法1:使用Rename函数
在pandas中重命名列的最简单方法是使用DataFrame对象的rename
方法。使用这个方法,通过调用rename方法来重命名列。该方法接受多个参数。
在这种情况下,我们对重命名列感兴趣,所以我们将传入columns关键字参数。这个参数的值是一个字典,其中的条目表示从旧列名到新列名的映射关系。下面是一个例子,我们将households
列重命名为houses
。
housing_data.rename(columns={ 'households': 'houses' })
这应该产生以下输出:
如你所见,我们传入一个字典,其中键是旧列名,值是新列名。值不一定只是一个字符串,它也可以是一个函数,函数返回的值是新的列名。如果你想重命名更多的列,可以在字典中添加更多的条目。
方法2:替换列字符串
在pandas中重命名列的另一种方法是在DataFrame上替换列字符串。假设你想将当前命名为population
的列重命名为number_of_people
。使用这种方法,你可以写下以下代码:
housing_data.columns = housing_data.columns.str.replace('population', 'number_of_people')
要打印修改后的列表,我们使用以下代码:
housing_data
这应该在屏幕上产生以下输出:
方法3:分配一个列名列表
另外,你可以通过将列表赋值给DataFrame的columns属性来重命名pandas中的列。对于这个例子,如果我想将所有的列都重命名为使用数字,可以使用以下代码:
housing_data.columns = [x for x in range(9)]
在这个例子中,我将housing_data.columns属性设置为一个从0到8的整数列表。为了生成这个列表,我使用了列表推导,这是Python的一个本地特性,可以方便地使用for循环生成值的列表。
使用这种方法的缺点是你必须重命名整个列名集合;你不能只重命名一部分列。理想情况下,你的列名应该是更具描述性的,但我只是在这里使用数字作为演示。
你可以通过写下以下代码来查看输出:
housing_data
方法4:使用set_axis()函数重命名pandas中的列
我们将讨论的方法是DataFrame对象的set_axis方法。这个方法用于在Pandas中将一个值列表设置为任意两个轴的轴值。由于我们正在重命名列,所以我们设置axis 1
。要使用这个方法,我们使用以下代码:
column_names = [str(x) for x in range(8, -1, -1)]
housing_data.set_axis(column_names, axis=1, inplace=True)
第一行生成一个从8到0的值的列表,按降序排列,并将它们存储在column_names
变量中。在第二行中,我们调用set_axis方法,提供column_names
作为参数,并将要修改的轴设置为axis 1。我们还将inplace
设置为True
,这样它就会修改原始的DataFrame。
我们可以通过以下方式查看DataFrame:
housing_data
这应该会产生以下结果:
最后的话
本文简要介绍了pandas中如何以表格格式存储数据。我们还讨论了在Pandas中命名列的最佳实践,以使我们的生活更轻松。
最后但最重要的是,我们还讨论了pandas中不同的重命名列的方法。