数据处理【瑞士军刀pandas指南】:6.数据重命名和合并

半腔热情 提交于 2019-12-21 01:46:51

参考来源:Vitu.AI

我们还是先来加载一下数据。

import pandas as pd
pd.set_option('max_rows', 5)
import numpy as np
melbourne_data = pd.read_csv('melb_data.csv') 
melbourne_data.head()

重命名

通常,数据将通过列名,索引名或我们不满意的其他命名约定来获取。 在这种情况下,我们可能会使用pandas重命名实用程序函数来更改有问题的条目的名称。

我们在这里介绍的第一个函数是rename,它允许你重命名索引名称或者列名。 例如,要将数据集中的Price列更改为Px,我们将执行以下操作:

melbourne_data.rename(columns={'Price': 'Px'})

重命名允许你通过分别指定索引或列关键字参数来重命名索引或列值。 它支持各种输入格式,但我通常会发现Python dict是最方便的。 下面是一个使用它来重命名索引上的一些元素的示例。

melbourne_data.rename(index={0: 'firstEntry', 1: 'secondEntry'})

你可能经常重命名列,但很少重命名索引值。 为此,set_index通常更方便。

行索引和列索引都可以有自己的name属性。 rename_axis方法可用于更改这些名称。 例如:

melbourne_data.rename_axis("houses", axis='rows').rename_axis("fields", axis='columns')

合并

在对数据集执行操作时,我们有时需要以特别的方式组合不同的DataFrame和/或Series。 pandas有三种核心方法可以做到这一点。 为了增加复杂性,这些是concat,join和merge。 合并可以做的大部分也可以通过join更简单地完成,所以我将省略它并专注于前两个函数。

最简单的组合方法是concat。 这个函数就像核心Python中的list.concat方法一样:给定一个元素列表,它会沿着轴将这些元素组合在一起。

当我们在不同的DataFrame或Series对象中有数据但具有相同的字段(列)时,这非常有用。

一个例子:YouTube视频数据集,它根据原籍国(例如加拿大和英国,在此示例中)分割数据。

点击这里 下载加拿大 数据集
点击这里 下载英国 数据集

我们再把zip过的csv文件上传到vitu的数据集空间里

my picture

我们将使用read_csv函数将数据读入DataFrame

如果我们想同时研究多个国家,我们可以使用concat将它们联合起来:

canadian_youtube = pd.read_csv("CAvideos.csv.zip")
british_youtube = pd.read_csv("GBvideos.csv.zip")

pd.concat([canadian_youtube, british_youtube])

就复杂性而言,排中间的组合器是pd.DataFrame.join。 join允许你组合具有共同索引的不同DataFrame对象。 例如,要在加拿大和英国同一天下载的视频,我们可以执行以下操作:

left = canadian_youtube.set_index(['title', 'trending_date'])
right = british_youtube.set_index(['title', 'trending_date'])

left.join(right, lsuffix='_CAN', rsuffix='_UK')

此处需要lsuffix和rsuffix参数,因为数据在英国和加拿大数据集中具有相同的列名。 如果这不是真的(因为,比如我们事先将它们重命名),我们就不需要它们了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!