Python,熊猫和解决Excel世界中的三个问题

Excel是一种极为常见的数据分析工具。学习它的方法很容易,几乎在每台计算机上都可以使用,并且熟练掌握它的人可以解决它的相当复杂的问题。Python通常被认为是一种功能几乎无限的工具,但比Excel难掌握。该材料的作者(我们今天将其翻译发表)想谈谈使用Python解决通常在Excel中完成的三个任务的解决方案。本文是对那些精通Excel的人的Python入门。



资料载入


首先,我们导入Python库pandas并将数据加载到存储在Excel工作salesstates工作簿中的数据框中我们将为相应的数据框指定相同的名称。

import pandas as pd
sales = pd.read_excel('https://github.com/datagy/mediumdata/raw/master/pythonexcel.xlsx', sheet_name = 'sales')
states = pd.read_excel('https://github.com/datagy/mediumdata/raw/master/pythonexcel.xlsx', sheet_name = 'states')

现在,我们将使用.head()数据框方法在数据框sales的开头显示元素:

print(sales.head())

将显示的内容与您在Excel中看到的内容进行比较。


将Excel中数据输出的外观与从pandas数据框中输出的数据的外观进行比较在

这里您可以看到,可视化数据框中数据的结果与在Excel中看到的结果非常相似。但是有一些非常重要的区别:

  • Excel中的行编号从1开始,在熊猫中,第一行的编号(索引)为0。
  • 在Excel中,列的字母以letter开头A,在pandas中,列的名称对应于相应变量的名称。

我们将继续研究熊猫的可能性,使我们能够解决通常在Excel中解决的问题。

在Python中实现Excel Excel IF功能


Excel具有非常方便的功能IF,例如,可以根据检查另一个单元格中的内容,将某些内容写入单元格。假设您要在Excel中创建一个新列,该列的单元格会告诉我们该列对应单元格中的值是否超过500 B在Excel中,E您可以通过MoreThan500将相应的文本写入单元格来为该列(在本例中为列)分配标题E1之后,在单元格中E2,您可以输入以下内容:

=IF([@Sales]>500, "Yes", "No")


在Excel中使用IF函数

为了对熊猫做同样的事情,可以使用列表推导:

sales['MoreThan500'] = ['Yes' if x > 500 else 'No' for x in sales['Sales']]


列出Python中的包含项:如果当前值大于500,则

列表中包括是;否则,否列出项是解决此类问题的出色工具,它通过减少对if / else之类的复杂构造的需求来简化代码。if / else可以解决相同的问题,但是所提出的方法可以节省时间,并使代码更简洁。列表包含的详细信息可以在这里找到

在Python中实现VLOOKUP Excel功能


在我们的数据集中,在一张Excel工作表上,有城市名称,在另一张上,有州和省的名称。如何找出每个城市的确切位置? Excel函数适用于此功能VLOOKUP,您可以使用该功能链接两个表的数据。当保存位于表达式左侧的数据集中的每个记录时,此函数将根据左连接的原理工作。使用函数VLOOKUP,我们建议系统在指定工作表的给定列中搜索特定值,然后返回找到值右侧指定列数的值。看起来是这样的:

=VLOOKUP([@City],states,2,false)

当我们使用函数在该列的单元格中填写城市所在州和省的名称时,我们 在工作表上设置sales列标题FStateVLOOKUP


在Excel中使用VLOOKUP函数

在Python中,可以使用mergepandas中的方法执行相同的操作它需要两个数据帧并将其合并。要解决此问题,我们需要以下代码:

sales = pd.merge(sales, states, how='left', on='City')

让我们来分析一下:

  1. 该方法的第一个参数merge是原始数据帧。
  2. 第二个参数是我们在其中寻找价值的数据框架。
  3. 该参数how确切指示我们要如何联接数据。
  4. 参数on指向执行连接所用的变量(如果在不同数据帧中我们感兴趣的数据以不同的名称命名,则此处仍可以使用参数left_onright_on,这是必需的)。

汇总表


数据透视表是Excel最强大的功能之一。这些表使您可以快速从大型数据集中提取有价值的信息。创建一个Excel数据透视表,其中显示有关每个城市的总销售额的信息。


在Excel中创建数据透视表

如您所见,要创建这样的表,只需将字段拖到区域中CityRows然后将字段Sales拖到区域中Values之后,Excel将自动显示每个城市的总销售额。

为了在pandas中创建相同的数据透视表,您需要编写以下代码:

sales.pivot_table(index = 'City', values = 'Sales', aggfunc = 'sum')

让我们来分析一下:

  1. 在这里,我们使用一种方法sales.pivot_table,告诉熊猫我们要基于数据框创建数据透视表sales
  2. 参数index指向要用来汇总数据的列。
  3. 该参数values指示我们将汇总哪些值。
  4. 该参数aggfunc指定我们要在值的处理使用(在这里你仍然可以使用函数的函数meanmaxmin等)。

摘要


通过此材料,您了解了如何将Excel数据导入熊猫,如何实现Excel函数IFPython工具熊猫的功能。VLOOKUP,以及如何使用熊猫重现Excel数据透视表的功能。也许现在您在想,如果可以在Excel中进行操作,为什么还要使用熊猫呢?这个问题没有单一答案。 Python使您可以创建可以进行微调和深入研究的代码。这样的代码可以重复使用。 Python可以描述非常复杂的数据分析方案。 Excel功能可能仅足以用于较小规模的数据研究。如果到目前为止您只使用过Excel,建议您尝试使用Python和pandas并找出可以做什么。

您使用什么工具来分析数据?

, , iPhone. , .


All Articles