原创

Spark resampling

2860元腾讯云代金券免费领取,付款直接抵现金,立即领取>>>

腾讯云海外服务器1折限时抢购,2核4G云主机768元/1年,立即抢购>>>

腾讯云服务器1折限时抢购,2核4G云主机899元/3年,立即抢购>>>

对时间序列的index进行resample是很常见的操作。比如,按日、周、月、季度统计用户新增、活跃、累计等,就需要对用户表进行resample操作。 pandas 的resample函数可以轻松地对时间序列数据进行重采样,并按照一定的频率聚合数据。但是因为spark中没有index的概念,所以做起来并不容易。

以下介绍是如何在 spark 中进行重采样的示例。

1. 笨拙的方法

def resample(column, agg_interval=900, time_format='yyyy-MM-dd HH:mm:ss'):
    if type(column)==str:
        column = F.col(column)

    # Convert the timestamp to unix timestamp format.
    # Unix timestamp = number of seconds since 00:00:00 UTC, 1 January 1970.
    col_ut =  F.unix_timestamp(column, format=time_format)

    # Divide the time into dicrete intervals, by rounding. 
    col_ut_agg =  F.floor(col_ut / agg_interval) * agg_interval  

    # Convert to and return a human readable timestamp
    return F.from_unixtime(col_ut_agg)`

测试如下

导入数据:

sdf = spark.read.csv('production.csv', header=True, inferSchema=True) 
sdf = (
    sdf
    .withColumn('_c0',f.to_timestamp(f.col('_c0')))
)
sdf.show(2)

运行

sdf = sdf.withColumn('dt_resampled', resample(sdf._c0, agg_interval=3600)) # 1 hour
sdf.show(5)
  1. groupby + window
group = sdf.groupBy('Cantons', f.window("_c0", "1 day")).agg(f.sum("Production").alias('Sum Production'))
group.show(5,truncate=False)
sdf_resampled = group.select(group.window.start.alias("Start"), group.window.end.alias("End"), "Cantons", "Sum Production").orderBy('Start', ascending=True)
sdf_resampled.show()

)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 [email protected] 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mlr3_重抽样

    这里$is_instantiated是false,这表示,我们没有将采样方法设置再数据集中。同时这里默认的采样比例是0.6667,可以通过下面两种方式更改

    火星娃统计
  • Android中图片压缩分析(下)

    上篇我们详细介绍了图片质量压缩的相关内容和算法,接下来的下篇给大家介绍一下图片的尺寸压缩和常用的几种尺寸压缩算法。

    QQ音乐技术团队
  • mlr3_Benchmarking

    这个词语,翻译是基准测试,一般用于比较多任务、多学习器、不同抽样方案的表现,在mlr3中通过benchmar函数实现

    火星娃统计
  • mlr3基础(二)

    机器学习流程 source: https://mlr3book.mlr-org.com/images/ml_abstraction.svg

    王诗翔呀
  • 统计学习导论 Chapter5 -- Resampling Methods

    Book: An Introduction to Statistical Learning with Applications in R http:...

    用户1148525
  • 非均衡数据处理--如何学习?

    Sampling技术比较直观,就是怎么把样本变成均衡的。 我们知道不均衡数据, 最重要的还是收集minority数据。 但是一般这是一个长期的过程。 那么, ...

    史博
  • Backtrader量化平台教程(八) TimeFrame

    AD:(本人录制的backtrader视频课程,大家多多支持哦~?https://edu.csdn.net/course/detail/9040)? ? ? ?

    钱塘小甲子
  • "应用机器学习"视频教程,哥伦比亚大学 2020版

    向大家推荐来自哥伦比亚大学的“应用机器学习”(Applied Machine Learning 2020)课程,相比斯坦福的 CS229 更加注重代码实践,使用...

    CV君
  • 从空间混合中采样效果更好

    摘要:我们的研究结果表明强烈的空间混合速度比邻域的增长速度快,这意味着旋转系统存在有效的完美采样器。 我们新的基于重采样的算法绕过了这条线的先前工作的主要障碍,...

    罗大琦
  • 使用Rasterio做投影变换

    在之前GDAL系列文章中的《栅格数据投影转换》提到过,做投影转换最重要的是计算数据在目标空间参考系统中的放射变换参数(GeoTransform)和图像的尺寸(行...

    卡尔曼和玻尔兹曼谁曼
  • 利用gdal、rasterio将modis文件进行格式转换、投影转换

    modis的hdf文件在存储上有优势,但是在实际使用过程中存在一定的弊端。例如本次重点讲解的NDVI-16D-1km、MAIAC-1D-1km两类文件,其中ma...

    一个有趣的灵魂W
  • 图像配准

    图像配准(Image registration)是将同一场景拍摄的不同图像进行对齐的技术,即找到图像之间的点对点映射关系,或者对某种感兴趣的特征建立关联。以同...

    瓜大三哥
  • Bitmap图片压缩,大图加载防止OOM

    ](https://developer.android.com/topic/performance/graphics/load-bitmap) 这两篇文章中已经...

    静默加载
  • Bitmap图片压缩,大图加载防止OOM

    Android官网中处理位图 和 高效加载大型位图 这两篇文章中已经做了很明确指出了如何高效的加载大图。这篇文章只是对其中的内容进行总结和扩展(比如图片内存...

    静默加载
  • Satpy基础系列教程(3)-Satpy总览

    Satpy is designed to provide easy access to common operations for processing met...

    zhangqibot
  • 原 记一次LightGBM-GBDT参数调整经历

    问题:有验证集的训练方式可以通过验证集earlystop来控制训练的过拟合问题,换成无验证集的训练方式后,无法继续通过使用earlystop这种方式来减少过拟合...

    用户3578099
  • 计算机视觉学术速递[9.2]

    【1】 Two-step Domain Adaptation for Mitosis Cell Detection in Histopathology Ima...

    公众号-arXiv每日学术速递
  • R︱Yandex的梯度提升CatBoost 算法(官方述:超越XGBoost/lightGBM/h2o)

    俄罗斯搜索巨头 Yandex 昨日宣布开源 CatBoost ,这是一种支持类别特征,基于梯度提升决策树的机器学习方法。 CatBoost 是由 Yand...

    素质
  • cv2.resize()

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    狼啸风云

扫码关注云+社区

领取腾讯云代金券

http://www.vxiaotou.com