当前位置:网站首页 > Python编程 > 正文

pivot函数 python(pivot函数 excel)



注意:确保你已经浏览了以前的所有课程,因为以前课程中学到的知识将用于此练习。

In [1]:

In [2]:

我们将创建我们自己的测试数据进行分析。

In [3]:

现在我们有了生成测试数据的函数,我们可以创建一些数据并将其粘贴到数据帧中。

In [4]:

In [5]:

Out[5]:

我们现在将把这个数据帧保存到一个Excel文件中,然后将其返回到一个数据帧。我们这样做,只是向您展示如何读写Excel文件。

我们不会将数据帧的索引值写入Excel文件,因为它们不是我们初始测试数据集的一部分。

to_execel,read_excel 函数需库xlrd(0.9.0以上版本)支持。需先安装,可 pip install xlrd

In [6]:

我们将使用read_excel函数从Excel文件中读取数据。该函数允许您按名称或位置读取特定的表单。

In [7]:

注意:除非有指定,否则Excel文件上的位置指当前目录。

In [8]:

Out[8]:

In [9]:

Out[9]:

In [10]:

Out[10]:

本节尝试清理数据以供分析。

  1. 确保状态栏全部大写
  2. 选择状态等于“1”的记录
  3. 合并(新泽西州NJ和纽约州NY)到纽约州NY列
  4. 删除所有异常值(数据集中的任何奇怪结果)

让我们快速看看:一些州的值是大写的,有些是小写的

Out[11]:

将所有州的值转换为大写,我们使用upper()函数和数据帧的apply属性。使用lambda函数将应用在State列的大写函数上。

In [12]:

In [13]:

Out[13]:

In [14]:

把NJ变成NY我们只需...

[df.State =='NJ'] - 查找 State列中他们等于 NJ的所有记录。
df.State [df.State =='NJ'] ='NY' - 对于 State列中与 NJ等同的所有记录,将其替换为 NY

In [15]:

我们看看结果

In [16]:

Out[16]:

现在,我们可能想要绘制数据图来检查数据中的异常值。我们使用数据帧的plot属性。从下面的图表中可以看到,它不是非常确定的,可能是我们需要进行更多数据准备的标志

In [17]:

我们看看数据,发现同一个State,StatusDate和Status组合有多个值。这可能意味着您正在使用的数据是脏/不良/不准确的,但我们也会另有其他假设。我们可以假设这个数据集是一个更大的数据集的一个子集,如果我们简单地在每个 State, StatusDate, 和 Status的CustomerCount列中添加值,我们将获得每天的总客户数

In [18]:

Out[18]:

现在我们的任务是创建一个数据压缩了的新数据帧,以便每个州和每个州都有每日的客户数量。我们可以忽略Status列,因为此列中的所有值均为值1。为了实现这一点,我们将使用数据帧的函数groupby()sum()

请注意,我们必须使用reset_index。如果我们不这样做,我们将无法通过State和StatusDate进行分组,因为groupby函数只需要列作为输入。该reset_index函数将数据帧按StatusDate列索引

In [19]:

Out[19]:

数据帧里StateStatusDate列自动按日期索引。您可以将索引视为数据库表的主键,但不具有唯一值的限制。您将看到索引中的列允许我们轻松地选择,绘图并对数据执行计算

下面我们删除Status列,因为它全部等于1,不再需要。

In [20]:

Out[20]:

In [21]:

Out[21]:

In [22]:

Out[22]:

In [23]:

Out[23]:

现在让我们绘制每个州的数据。

如你所见,可以通过分析State列的图表,我们对数据的外观更加清晰。你能发现异常值吗?

In [24]:

我们也可以绘制特定日期的数据,如2012。由于数据由每周的客户数量组成,数据的可变性似乎是可疑的。对于本教程,我们将假设不良数据已处理

In [25]:

我们假定每个月的客户数量保持相对稳定。该月份特定范围以外的数据将从数据集中删除。最终的结果应该是没有尖峰的平滑图。

StateYearMonth - 在这里我们按State,StatusDate的年和StatusDate的月进行分组。
Daily ['Outlier'] - 一个布尔值(True或False)值,让我们知道CustomerCount列中的值是否在可接受的范围之外。

我们使用属性transform 而替代apply。原因是transform能保持数据帧的形状(行数和列数)相同,而apply不行。通过查看以前的图,我们可以看到它们不像高斯分布,这意味着我们不能使用 均值和stDev之类的汇总统计量。我们使用百分位数代替。请注意,我们冒着消除良好数据的风险。

In [26]:

名为Daily的数据帧将保存每天汇总的客户数量。原始数据(df)每天有多个记录。我们剩下一个由State和StatusDate索引的数据集。异常值列等于False,表示该记录不是异常值。

In [27]:

Out[27]:

我们创建一个名为ALL的单独数据帧,它是将Daily数据帧按StatusDate分组而成。我们基本上摒弃了State列。Max列表示每月的最大客户数。Max列用于平滑的曲线。

In [28]:

Out[28]:

正如您从上面的ALL数据帧中看到的那样,在2009年1月份,最大客户数为901.如果我们使用了apply,我们会得到一个以(Year 和 Month)作为索引的数据帧,并且只有Max列值为901。


还有一个兴趣来衡量当前客户数量是否达到公司既定的目标。这里的任务是直观地显示当前客户数量是否符合下面列出的目标。我们将称目标为BHAG(大额年度目标)。

  • 12/31/2011 - 1,000位客户
  • 2012年12月31日 - 2,000位客户
  • 2013年12月31日 - 3,000名客户

我们将使用date_range函数来创建我们的日期。

定义: date_range(start = None,end = None,periods= None,freq ='D',tz = None,normalize = False,name = None,closed = None)
描述:返回固定频率的日期索引,日期作为默认频率

通过选择频率为A或annual,我们将能够从上面获得三个目标日期。

In [29]:

In [30]:

Out[30]:

使用concat函数可以简化前面课程中学习的数据帧的组合。请记住,当我们选择axis = 0时,我们会明智地追加行

In [31]:

Out[31]:

In [32]:

There was also a need to forecast next year's customer count and we can do this in a couple of simple steps. We will first group the combined dataframe by Yearand place the maximum customer count for that year. This will give us one row per Year.

还需要预测明年的客户数量,我们可以通过几个简单的步骤来完成。我们首先按year组合数据帧,并提取当年的最大客户数量。这会给我们每年一行。

In [33]:

Out[33]:

In [34]:

Out[34]:

为了获得明年的最终客户数量,我们假设我们目前的增长率保持不变。然后,我们将增加这一年的客户数量,这将是我们对明年的预测。

In [35]:

Out[35]:

为每个State创建单独的图形。

In [36]:

到此这篇pivot函数 python(pivot函数 excel)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • python函数def讲解(py def函数)2026-05-10 07:00:07
  • python如何绘制函数图像(python绘制函数图像方法)2026-05-10 07:00:07
  • python函数大全及详解高中(高中python常用函数)2026-05-10 07:00:07
  • pivot函数 python报错out of bound(pivot_table python)2026-05-10 07:00:07
  • python中def函数的用法(python def函数用法)2026-05-10 07:00:07
  • python读取pcap文件(python读取pcd文件)2026-05-10 07:00:07
  • python函数可以没有return语句,不返回值(python函数没有return,返回什么)2026-05-10 07:00:07
  • python中字典可以修改和删除吗(python中字典的key)2026-05-10 07:00:07
  • 安装node-sass(安装nodesass需要python吗)2026-05-10 07:00:07
  • 华为机考题库2023(华为机考题库2023python)2026-05-10 07:00:07
  • 全屏图片