我的数据清理脚本很慢,关于如何改进的任何想法?

     2023-03-12     215

关键词:

【中文标题】我的数据清理脚本很慢,关于如何改进的任何想法?【英文标题】:my data cleaning script is slow, any ideas on how to improve? 【发布时间】:2019-03-19 09:58:07 【问题描述】:

我有一个数据(csv 格式),其中第一列是纪元时间戳(严格增加),其他列是累积行(只是增加或等于)。 示例如下:

df = pandas.DataFrame([[1515288240, 100, 50, 90, 70],[1515288241, 101, 60, 95, 75],[1515288242, 110, 70, 100, 80],[1515288239, 110, 70, 110, 85],[1515288241, 110, 75, 110, 85],[1515288243,110,70,110,85]],columns =['UNIX_TS','A','B','C','D'])
df =
id    UNIX_TS  A   B   C  D
 0 1515288240 100 50  90 70
 1 1515288241 101 60  95 75
 2 1515288242 110 70 100 80
 3 1515288239 110 70 110 85
 4 1515288241 110 75 110 85
 5 1515288243 110 70 110 85

import pandas as pd
def clean(df,column_name,equl):
    i=0
    while(df.shape[0]-2>=i):
        if df[column_name].iloc[i]>df[column_name].iloc[i+1]:
            df.drop(df[column_name].iloc[[i+1]].index,inplace=True)
            continue
        elif df[column_name].iloc[i]==df[column_name].iloc[i+1] and equl==1:
            df.drop(df[column_name].iloc[[i+1]].index,inplace=True)
            continue
        i+=1

clean(df,'UNIX_TS',1)
for col in df.columns[1:]:
    clean(df,col,0)

df =
    id    UNIX_TS  A   B   C  D
     0 1515288240 100 50  90 70
     1 1515288241 101 60  95 75
     2 1515288242 110 70 100 80

我的脚本按预期运行,但速度太慢,任何人都有关于如何提高速度的想法。

我编写了一个脚本,根据 2 条规则删除所有无效数据:

    Unix_TS 必须严格递增(因为是一个时间,不能倒流或暂停), 其他列正在增加并且可以保持不变,例如在一行中为 100,下一行可以 >=100 但不能更少。

根据规则,索引 3 和 4 无效,因为 unix_ts 1515288239 是 1515288241 小于索引 2。 索引 5 是错误的,因为值 B 减少了

【问题讨论】:

解释一下该清洗的部位,清洗部位是什么? 我添加了清理数据的规则,可以理解吗? 好的..但是示例数据没有错误数据。 :) 它有问题,对吧?查看索引 3,它小于索引 2,索引 4 小于索引 2。 【参考方案1】:

IIUC,可以用

cols = ['A', 'B', 'C', 'D']
mask_1 = df['UNIX_TS'] > df['UNIX_TS'].cummax().shift().fillna(0)
mask_2 = mask_2 = (df[cols] >= df[cols].cummax().shift().fillna(0)).all(1)

df[mask_1 & mask_2]

输出

    UNIX_TS     A   B   C   D
0   1515288240  100 50  90  70
1   1515288241  101 60  95  75
2   1515288242  110 70  100 80

【讨论】:

嗨,解决方案不正确,因为在 mask_1 中,它应该将行索引 3 和 4 标识为 false。但你只说索引 3 为假,而不是索引 4。 @BhanuTez 它确实将 index3 和 4 识别为 False。你得看mask_1 & mask_2的结果 Ya.. 只是因为B列,如果B列有好的数据呢?我将在示例中添加额外的数据,以便其他人可以轻松理解。

深度优先搜索的实现和可改进性

...【发布时间】:2012-04-1720:49:10【问题描述】:我已经按照我的想法编码了DFS,并且没有参考任何教科书或伪代码来获取想法。我想我有一些代码行进行了不必要的计算。关于降低算法复杂性的任何想法?vector<int>visited;boolisFo... 查看详情

查询很慢,我可以做些啥来改进?

...的后端框架自动生成的查询有疑问。查询速度很慢,导致我的脚本出现问题。更新:按照@TheImpaler的回答后,我的初始查询问题已解决,执行时间从30秒变为300毫秒。唯一的问题是在我的WHERE子句中添加了一些 查看详情

为啥我的收藏视图在向下或向上滚动时很慢?如何解决性能问题?我已经清理了我的 UI 代码

】为啥我的收藏视图在向下或向上滚动时很慢?如何解决性能问题?我已经清理了我的UI代码【英文标题】:Whymycollectionviewisslowwhenscrollingdownorup?howtofixperformanceissue?IalreadyCleanedmyUICode为什么我的收藏视图在向下或向上滚动时很慢... 查看详情

medialibrary.sqlitedb - 关于如何编辑和查看的任何想法?

】medialibrary.sqlitedb-关于如何编辑和查看的任何想法?【英文标题】:medialibrary.sqlitedb-anyideasonhowtoeditandview?【发布时间】:2012-01-2520:32:38【问题描述】:有没有人在iPhone/iPad/iPodMediaLibrary.sqlitedb/var/mobile/media/iTunes_Control/iTunes上有任... 查看详情

关于如何在猫鼬中编写评论模式的任何想法?

】关于如何在猫鼬中编写评论模式的任何想法?【英文标题】:Anyideasonhowtowriteacommentsschemainmongoose?【发布时间】:2021-12-1601:52:51【问题描述】:我有两个集合用户和帖子。我正在构建类似于Facebook的东西。如何为cmets设计架构,... 查看详情

关于如何在猫鼬中编写评论模式的任何想法?

】关于如何在猫鼬中编写评论模式的任何想法?【英文标题】:Anyideasonhowtowriteacommentsschemainmongoose?【发布时间】:2021-12-1601:52:51【问题描述】:我有两个集合用户和帖子。我正在构建类似于Facebook的东西。如何为cmets设计架构,... 查看详情

我应该如何组织我的主 ddl 脚本

】我应该如何组织我的主ddl脚本【英文标题】:HowshouldIorganizemymasterddlscript【发布时间】:2010-09-0512:31:17【问题描述】:我目前正在为我们的数据库创建一个主ddl。从历史上看,我们使用备份/恢复来对我们的数据库进行版本控制... 查看详情

关于如何在 Windows 中使用 hadoop 安装水槽的任何想法?

】关于如何在Windows中使用hadoop安装水槽的任何想法?【英文标题】:Anyideaabouthowtoinstallflumewithhadoopinwindows?【发布时间】:2016-01-2817:22:08【问题描述】:我将hadoop安装在c:\\hadoop2.5.2,然后在c:\\hadop2.5.2\\apache-flume-1.6.0下解压flume二... 查看详情

关于如何使用 KIF 测试实现拉取刷新的任何想法?

】关于如何使用KIF测试实现拉取刷新的任何想法?【英文标题】:AnyideasonhowtoimplementpulltorefreshwithKIFTests?【发布时间】:2013-03-2213:39:07【问题描述】:这是相当开放的。有人知道如何在KIF测试中测试拉动刷新功能吗?【问题讨论... 查看详情

SQL查询很慢。没有索引如何改进?

...:00:47【问题描述】:我需要使用单个查询从多个表中获取数据,该查询提供大约10600个结果(行)。问题是查询需要很长时间才能执行。就像..很长一段时间..90秒。有什么方法可以在不添加索引的情况下改进查询?表会不断更新... 查看详情

SikuliX:我的脚本在检测图像时反应太慢,如何改进?

】SikuliX:我的脚本在检测图像时反应太慢,如何改进?【英文标题】:SikuliX:myscriptreactstooslowwhendetectingtheimage,howtoimproveit?【发布时间】:2021-09-3005:57:57【问题描述】:我正在制作一个脚本,让我的角色自动钓鱼fishAppear="exclamation... 查看详情

MSYS 打印奇怪的字符串

...SYS正在向终端打印一些奇怪的字符(空格、空值等)。使我的单元测试的结果有点神秘。关于如何解决这个问题的任何想法?我正在研究可能将其通过管道传输到将清理输出的脚本。$bundleexecrspecspec/requests/static_pages_spec.rb← 查看详情

伙计们关于如何在 Flutter(Android)中获取 BluetoothDevice 的硬件地址的任何想法。我正在使用 FlutterBlue

】伙计们关于如何在Flutter(Android)中获取BluetoothDevice的硬件地址的任何想法。我正在使用FlutterBlue【英文标题】:GuysanyideasonhowIcangetthehardwareaddressoftheBluetoothDeviceinFlutter(Android).I\'musingFlutterBlue【发布时间】:2021-04-2318:21:59【问题... 查看详情

std::distance 很慢,如何改进? [关闭]

】std::distance很慢,如何改进?[关闭]【英文标题】:std::distanceisslowandhowtoimproveit?[closed]【发布时间】:2019-07-2916:52:01【问题描述】:std::distance似乎很慢。我有一个大的多图并尝试使用equal_range来查找具有公共键的元素:autorange=in... 查看详情

有人有任何关于如何使用修改后的 Java 脚本值处理返回 Json (url) 的示例吗?

...】:2016-04-0800:59:40【问题描述】:从urljson跟踪我需要的数据:"result":"data":["name":"page1","period":"dia 查看详情

寻找改进我的 javascript (jquery) 代码的想法。递归函数

】寻找改进我的javascript(jquery)代码的想法。递归函数【英文标题】:Lookingforthoughtsonimprovementofmyjavascript(jquery)code.Recursivefunction【发布时间】:2012-07-1902:06:35【问题描述】:我编写的这段代码可以制作一些淡入淡出的视觉“图块”... 查看详情

如何让我的脚本每小时发布一次[重复]

】如何让我的脚本每小时发布一次[重复]【英文标题】:howtomakethatmyscriptpostseveryhour[duplicate]【发布时间】:2020-09-0414:05:26【问题描述】:我正在制作一个脚本,每个小时都会在Twitter上发布每个冠状病毒病例。我已经完成了,但... 查看详情

我的 APK 是 118MB ......我只需要一些关于如何减小它的大小的想法吗?

】我的APK是118MB......我只需要一些关于如何减小它的大小的想法吗?【英文标题】:MyAPKis118MB...Ijustneedsomeideasonhowtoreduceit\'ssize?【发布时间】:2012-02-1209:20:53【问题描述】:我正在开发一个android应用程序,其中包含一个可以查看... 查看详情