使用机器学习处理数据的第一步就得先理解它,咱们现在就帮助它们一起理解起来。
(本篇文章这次换一套数据集,数据文件可以在文章头部下载,并保存至您的虚拟环境的目录中)
不知道如何搭建环境的小伙伴请看我机器学习笔记里面的入门文章:
政安晨的机器学习笔记http://t.csdnimg.cn/lZqlV
概述
往往数据会给我们带来列名、索引名或其他命名约定,而我们对此并不满意。在这种情况下,你会学习如何使用pandas函数将有问题的条目的名称更改为更好的名称。你还将探索如何将多个DataFrame和/或Series的数据合并在一起。
重命名
我们在这里介绍的第一个函数是rename(),它可以让您更改索引名称和/或列名称。例如,要将数据集中的points列更改为score,我们可以这样做:
import pandas as pd
pd.set_option('display.max_rows', 5)
reviews = pd.read_csv("./winemag-data-130k-v2.csv", index_col=0)
reviews
政安晨的执行:
reviews.rename(columns={'points': 'score'})
将points重命名为score:
rename()函数允许通过指定index或column关键字参数来重命名索引或列的值。它支持多种输入格式,但一般来说,使用Python字典是最方便的。以下是一个使用rename()函数重命名索引元素的示例。
reviews.rename(index={0: 'firstEntry', 1: 'secondEntry'})
您可能经常重命名列,但很少重命名索引值。为此,通常使用set_index()更方便。
行索引和列索引都可以有自己的名称属性。可以使用rename_axis()方法来更改这些名称。
例如:
reviews.rename_axis("wines", axis='rows').rename_axis("fields", axis='columns')
组合
在对数据集进行操作时,我们有时需要以非平凡的方式组合不同的DataFrame和/或Series。Pandas提供了三种核心方法来实现这一点。按照复杂程度递增的顺序,它们是concat()、join()和merge()。大部分merge()能做的事情在join()中也可以更简单地实现,因此我们将忽略merge()并集中讨论前两个函数。
最简单的组合方法是concat()。给定一个元素列表,这个函数将把这些元素沿着一个轴粘合在一起。
当我们有不同的DataFrame或Series对象,但具有相同的字段(列)时,这是非常有用的。
例如:某平台视频数据集,根据原始国家(例如加拿大和英国)将数据拆分。如果我们想同时研究多个国家,我们可以使用concat()将它们合并在一起。
canadian_xxx = pd.read_csv("../input/xxx-new/CAvideos.csv")
british_xxx = pd.read_csv("../input/xxx-new/GBvideos.csv")pd.concat([canadian_youtube, british_youtube])
在复杂性方面中最复杂的组合器是join()。join()允许您组合具有共同索引的不同DataFrame对象。例如,要获取在加拿大和英国都趋势的视频,我们可以执行以下操作:
left = canadian_xxx.set_index(['title', 'trending_date'])
right = british_xxx.set_index(['title', 'trending_date'])left.join(right, lsuffix='_CAN', rsuffix='_UK')
在这里,lsuffix和rsuffix参数是必需的,因为英国和加拿大数据集中具有相同的列名。如果这不是真的(例如,我们之前已将它们重命名),我们就不需要它们。
(这里咱们就先不演绎了)