数据分析师-编程语言与工具-Pandas_Pandas高级功能:窗口函数与自定义聚合.docx

数据分析师-编程语言与工具-Pandas_Pandas高级功能:窗口函数与自定义聚合.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE1

PAGE1

Pandas高级功能概览

1窗口函数的介绍与应用场景

1.1窗口函数原理

窗口函数(WindowFunctions)在Pandas中是一种强大的工具,用于在数据的连续或指定范围内执行计算,而无需改变数据的原始结构。它允许我们对数据进行局部的、连续的或基于某些条件的聚合操作,如计算移动平均、累积和、排名等。窗口函数的关键在于它能够处理数据的“窗口”,即数据的子集,而这些子集可以基于行数、时间间隔或数据的特定值来定义。

1.2窗口函数应用场景

移动平均:在时间序列分析中,计算过去N个时间点的平均值,以平滑数据波动。

累积和:计算数据的累积总和,如累计销售额、累计用户数等。

排名:在数据集中对特定列的值进行排名,如销售额排名、用户活跃度排名等。

百分位数:计算数据在窗口中的百分位数,用于了解数据分布情况。

滚动统计:如滚动标准差、滚动最大值等,用于分析数据的波动性和趋势。

1.3窗口函数示例

假设我们有一个包含股票价格数据的DataFrame,我们想要计算过去5天的移动平均价格。

importpandasaspd

#创建示例数据

data={Date:pd.date_range(start=2023-01-01,periods=10),

Price:[100,102,105,103,104,106,107,108,109,110]}

df=pd.DataFrame(data)

#计算过去5天的移动平均价格

df[Moving_Average_5D]=df[Price].rolling(window=5).mean()

print(df)

1.4解释

在上述代码中,我们首先创建了一个包含日期和价格的DataFrame。然后,使用rolling函数定义了一个窗口大小为5的滚动窗口,并计算了这个窗口内的平均价格。结果被存储在新列Moving_Average_5D中。

2自定义聚合函数的实现与优化

2.1自定义聚合函数原理

Pandas允许用户定义自己的聚合函数,这为数据分析提供了极大的灵活性。自定义聚合函数可以是任何Python函数,只要它能够接受一个数组或Series作为输入,并返回一个单一的值作为输出。这使得我们可以根据具体需求,实现更复杂的数据处理逻辑,如计算中位数偏差、加权平均等。

2.2自定义聚合函数实现

假设我们有一个包含用户评分数据的DataFrame,我们想要计算每个用户的评分中位数偏差。

importpandasaspd

importnumpyasnp

#创建示例数据

data={UserID:[1,1,1,2,2,2,3,3,3],

Rating:[4,5,3,2,3,4,5,4,3]}

df=pd.DataFrame(data)

#自定义函数:计算中位数偏差

defmedian_deviation(x):

median=x.median()

returnnp.abs(x-median).mean()

#使用自定义函数计算每个用户的评分中位数偏差

df[Median_Deviation]=df.groupby(UserID)[Rating].transform(median_deviation)

print(df)

2.3解释

在示例中,我们定义了一个名为median_deviation的自定义函数,它首先计算输入数据的中位数,然后计算每个值与中位数的绝对偏差的平均值。使用groupby和transform函数,我们能够对每个用户组应用这个自定义函数,计算出每个用户的评分中位数偏差。

2.4自定义聚合函数优化

当处理大规模数据集时,自定义聚合函数的性能优化变得尤为重要。以下是一些优化策略:

向量化操作:尽可能使用NumPy等库的向量化操作,避免使用Python的循环,因为后者在大规模数据上效率较低。

使用apply与agg:apply和agg函数可以接受多个列作为输入,这在需要跨列计算时非常有用。

并行处理:利用Dask等库,将数据集分割成多个块,并行处理每个块,最后合并结果,以提高处理速度。

2.5优化示例

使用NumPy的向量化操作来优化上述示例中的自定义函数。

importpandasaspd

importnumpyasnp

#创建示例数据

data={UserID:[1,1,1,2,2,2,3,3,3],

Rating:[4,5,3,2,3,4,5,4,3]}

df=pd.DataFrame

您可能关注的文档

文档评论(0)

kkzhujl + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档