[译] 每位数据分析师应该要知道的基本数据分析技术

栏目: 数据库 · 发布时间: 5年前

内容简介:在我作为一名数据分析师的日常工作中,我看到了来自客户的各种数据和分析请求。我注意到,在大多数项目中都需要一些基本的技术,这与您所从事的项目类型无关。我相信每个数据分析师/科学家都应该很好地理解这些技术。因此,本文的目标是带领读者了解这些技术,并在基本层面上解释这些技术。以下是我们将讨论的主题:为了便于分析,我们将使用Python中的panda库。因此,如果您还没有安装这个库,请在命令提示符中使用以下代码之一来安装panda:
[译] 每位数据分析师应该要知道的基本数据分析技术

在我作为一名数据分析师的日常工作中,我看到了来自客户的各种数据和分析请求。我注意到,在大多数项目中都需要一些基本的技术,这与您所从事的项目类型无关。我相信每个数据分析师/科学家都应该很好地理解这些技术。因此,本文的目标是带领读者了解这些技术,并在基本层面上解释这些技术。

以下是我们将讨论的主题:

  1. 基本过滤

  2. 多条件过滤

  3. 聚合

  4. 连接

为了便于分析,我们将使用 Python 中的panda库。因此,如果您还没有安装这个库,请在命令提示符中使用以下代码之一来安装panda:

# If you use Anaconda, type the following in anaconda prompt
conda install -c anaconda pandas
# If you use pip, type the following in command prompt
pip install pandas

此外,我假定您已经对Python和pandas库有了基本的了解。但是不用担心,如果你还没有接触到上面的任何一个,我们将从头到尾进行详细介绍。

[译] 每位数据分析师应该要知道的基本数据分析技术

我们的数据集

为了能够使用上述技术,我们需要数据。我们可以导入csv文件或excel文件,但现在我们只需要用pandas简单地创建一个小数据集。

以下代码将生成一个pandas数据框。

import pandas as pd

df = pd.DataFrame({'ID': ['A1', 'A1', 'B1', 'B1', 'C1', 'C1', 'D1', 'D1'],
'Value': [100, 120, 90, 80, 140, 30, 60, 210],
'Date': pd.date_range('20190407', periods=8)})

这里显示以下数据框。

[译] 每位数据分析师应该要知道的基本数据分析技术

如上所述,你可以看到ID,Value和Date。

1 基本的过滤

我们已经加载了pandas库和创建了数据集,我们开始第一个技术。当你想基于列的值获得数据的子集时,我们在谈论过滤数据。

在pandas我们有多种方式做这个事情,现在我们看一下最常用的方式。

  1. 用[]的布尔索引

  2. .loc 的布尔索引

用[]过滤数据如下

# Boolean indexing with square brackets

df[df['Value'] > 100]

在pandas中的过滤逻辑是将条件传递给方括号之间的DataFrame.

df[condition]

给我们输出如下结果

[译] 每位数据分析师应该要知道的基本数据分析技术

.loc 过滤

# Boolean indexing with .loc

df.loc[df['Value'] > 100]

正如所料,它给出了相同的输出,因为我们应用了相同的过滤器。

[译] 每位数据分析师应该要知道的基本数据分析技术

哪个更适合使用?对于基本过滤器,正如我们上面看到的,没有区别或首选项,这取决于您更喜欢哪种代码语法。但是,当您想应用更高级的数据选择时, .loc 提供了这一功能,并且可以执行更复杂的选择和切片。但现在不用担心。

2 基于条件过滤

我们使用了第一个过滤器,非常直接。但是假设你想应用一个有多个条件的过滤器。我们如何在pandas做到这一点?为此,我们研究了Python操作符。

2.1 &操作符

例如,您希望过滤ID等于C1且值大于100的所有行。

要应用这个过滤器,我们必须用&运算符连接两个条件。这看起来像这样:

# Filtering with multiple conditions '&' operator

df[(df['ID'] == 'C1') & (df['Value'] > 100)]

并将返回以下输出:

[译] 每位数据分析师应该要知道的基本数据分析技术

正如预期的那样,我们返回一行,因为只有这一行满足我们在过滤器中设置的条件。

2.2 |操作符

Python中的|操作符代表or,如果满足其中一个条件,则返回True。

我们可以通过应用以下过滤器来显示这一点:给出日期晚于2019-04-10或值大于100的所有行。

在Python代码中,它看起来像这样:

# Filtering with multiple conditions 'or' operator

condition = (df['Date'] > '2019-04-10') | (df['Value'] > 100)

df[condition]

并将返回以下输出:

[译] 每位数据分析师应该要知道的基本数据分析技术

正如预期的那样,返回的所有行都具有大于100的值,或者日期在2019-04-10之后。

3 聚合

有时需要聚合数据,以便创建特定的视图或进行一些计算。在pandas中,我们使用groupby。

那么groupby到底是什么呢?如果我们引用pandas文档:

我们所说的“分组”是指涉及下列一项或多项步骤的程序:

根据一些标准将数据分成若干组。

独立地对每个组应用一个函数。

将结果组合成数据结构。

基本上,它是根据一些指标,将数据分组,让你自己对这些组做一些操作。

3.1 Groupby 获得总和

让我们看一个例子。假设我们想要基于ID得到每个组的value的总值。这就像下面的Python代码:

# Get the total value of each group based on ID

df.groupby('ID', as_index=False)['Value'].sum()

将为我们提供以下结果

[译] 每位数据分析师应该要知道的基本数据分析技术

所以如果我们再看看我们的DataFrame,我们可以看到这是正确的:

[译] 每位数据分析师应该要知道的基本数据分析技术

例如ID A1的总value是100 + 120 = 220,这是正确的。

Groupby:获得最大日期

pandas提供了一个大范围的函数,您可以在使用groupby之后对您的组使用这些函数。让我们再看一个。例如,我们可以使用 .max() 函数获得每个组的最大日期。

就像这样

# Get the highest date of each group

df.groupby('ID', as_index=False)['Date'].max()

输出结果如下:

[译] 每位数据分析师应该要知道的基本数据分析技术

4 连接

连接是基于一个公共列以并排的方式组合两个数据框。大多数情况这些列被当做主键列。

join 这个术语起源于数据库语言SQL,之所以需要它,是因为 SQL 数据库的数据建模大多是通过关系建模来完成的。

连接有很多类型,您的输出将基于执行的连接类型。由于这是一个入门教程,我们将介绍最常见的一个: inner join 。在本系列后面的部分中,我们将研究更复杂的连接。

内部连接来自韦恩图表示两个集合的交集部分。因此,当我们将其转换为数据时,内部连接将返回两个数据框中都存在的行。

[译] 每位数据分析师应该要知道的基本数据分析技术

4.1 我们的数据集

因为我们想合并两个数据框,所以我们将创建新的数据。这两个虚构的数据集表示customer主表和orders表。

使用下面的代码,我们创建了两个新的数据框:

# Dataset 1 - Customer Table
dfA = pd.DataFrame({'Customer_ID':[1, 2, 3, 4, 5],
'Name': ['GitHub', 'Medium', 'Towardsdatascience', 'Google', 'Microsoft'],
'City': ['New York', 'Washington', 'Los Angeles', 'San Francisco', 'San Francisco']})

# Dataset 2 - Orders
dfB = pd.DataFrame({'Order_ID': [1, 2, 3, 4, 5, 6, 7],
'Order_date': pd.date_range('20190401', periods=7),
'Amount':[440, 238, 346, 637, 129, 304, 892],
'Customer_ID':[4, 3, 4, 1, 2, 5, 5]})

它们看起来像这样:

[译] 每位数据分析师应该要知道的基本数据分析技术
[译] 每位数据分析师应该要知道的基本数据分析技术

因此,我们要对新数据进行逻辑分析,得到orders表中每个订单表的客户名称和城市。这是一个典型的连接问题,按行匹配两个dataframes,并用更多的列充实数据。在本例中,键列是Customer_ID。

在pandas中,我们使用 merge 方法进行连接。我们将把以下参数传递给这个方法:

  • 您想加入哪个数据框(dfA、dfB)。

  • 关键列是什么(Customer_ID)。

  • 您希望执行哪种类型的连接(内部连接)。

在merge方法中,我们可以使用的参数比上面列出的更多,但目前这些参数已经足够了。

我们想要执行的合并在pandas中看起来如下:

pd.merge(left=dfB, right=dfA, on='Customer_ID', how='inner' )

正如我们所期望的,name和city列被添加到每个对应的customer_ID旁边。

[译] 每位数据分析师应该要知道的基本数据分析技术

以上就是本部分的内容:使用Python,每个数据分析师都应该知道的基本数据分析技术。

你可以在我的GitHub上以Jupyter Notebook的形式找到这篇文章的代码:

https://github.com/ErfPy/MediumArticles

如果这篇文章对你有用,请考虑给这篇文章点赞,并与朋友和/或同事分享。

如有任何问题或其他讨论,请随时发表留言。

原文链接:

https://towardsdatascience.com/basic-data-analysis-techniques-every-data-analyst-should-know-using-python-4de80ab52396

公众号推荐:数据人才(ID:datarencai)

(一个帮助数据人才找工作的公众号,

也分享数据人才学习和生活的有趣事情。)

[译] 每位数据分析师应该要知道的基本数据分析技术


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Little Typer

The Little Typer

Daniel P. Friedman、David Thrane Christiansen、Duane Bibby、Robert Harper、Conor Mcbride / MIT Press / 2018-10-16 / GBP 30.00

An introduction to dependent types, demonstrating the most beautiful aspects, one step at a time. A program's type describes its behavior. Dependent types are a first-class part of a language, and are......一起来看看 《The Little Typer》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具