IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Pandas大数据筛选数据经验教训一则 -> 正文阅读

[人工智能]Pandas大数据筛选数据经验教训一则

1. 前言

有经验的开发者都知道,整型计算、比较是计算机软件高级编程语言、数据库里较快的,对于Python及Pandas也不例外。

问题过程是这样的,按年月筛选数据集范围,更加较好的满足算法时序需求和计算效率。因此,在网络故障停止计算的紧张的空隙时间,及时优化代码。在优化代码过程中,为了减少代码修改,快速实现,直接使用原有数据字段没有进行类型强制转换,而是动态求值转换为字符串直接比较,结果,欲速则不达,计算效率大幅下降(少量数据调试代码,凭直觉看不出来)。

Python作为一门动态语言,其变量的类型可以自由变化。这个特性提高了代码的开发效率,却也增加了阅读代码和维护代码的难度。

2. 实验分析三种筛选数据集效率

为了准确定位计算效率问题,提高未来数据处理能力,筹备如下小实验,为优化代码提供参考依据。实验比较方法为:在pandas dataframe中,使用年月数据筛选数据集,比较方法如下:

  • 整型数据比较筛选数据
  • 整型数据字符串类型比较筛选数据
  • 动态转换为整型字符串类型比较筛选数据。

其中,数据源为随机产生10000个“年月”(实际场景数据量是千万以上级别),进行10000次筛选,比较计算用时。

实验代码如下:

import pandas as pd
import datetime
import numpy as np
import random
from scipy import stats
# 随机产生月份
x =[random.randint(2015,2030)*100+ random.randint(1,12) for j in range(10000)]
data = pd.DataFrame({'x':x}) 
data['sx'] = data['x'].astype(str)
#print(x)
print('整型数字比较')
now_time = datetime.datetime.now()
time_str = datetime.datetime.strftime(now_time,'%Y-%m-%d %H:%M:%S.%f')
print(time_str)
for i in range(10000):
    tmp = data.loc[data['x']>202001]

print('整型数字字符串比较')
now_time = datetime.datetime.now()
time_str = datetime.datetime.strftime(now_time,'%Y-%m-%d %H:%M:%S.%f')
print(time_str)    
for i in range(10000):
    tmp = data.loc[data['sx']>'202001']

print('转换整型数字字符串比较')
now_time = datetime.datetime.now()
time_str = datetime.datetime.strftime(now_time,'%Y-%m-%d %H:%M:%S.%f')
print(time_str)
for i in range(10000):
    tmp = data.loc[data['sx']>((data['sx']+'01').astype('datetime64') + datetime.timedelta(days=-3*366)).dt.strftime('%Y%m').max()]

now_time = datetime.datetime.now()
time_str = datetime.datetime.strftime(now_time,'%Y-%m-%d %H:%M:%S.%f')
print(time_str)

运行结果如下:

	整型数字比较
	2022-05-09 09:32:01.370711
	整型数字字符串比较
	2022-05-09 09:32:06.368290
	转换整型数字字符串比较
	2022-05-09 09:32:15.074743
	2022-05-09 09:41:45.381319

3. 结论

3.1. 实验结果分析

对实验结果进行统计分析,在1万级别的数据量情况下,以整型数据比较筛选数据集用时为基准,数字字符串比较筛选数据集用时增加到172%,动态转换整型数字字符串比较筛选数据集用时增加到11408%。
在这里插入图片描述

3.2. 优化措施

  • 数据输入、输出强制类型检查,转换为理想数据类型;
  • 数据计算、比较尽量使用整型数据类型;
  • 杜绝使用动态类型转换,提前对数据进行类型强制转换、计算处理。

例如增加变量定义和处理:

#趋势数据为三年有效计算
self.threeyearsbefore = datetime.datetime.strptime(self.end,'%Y-%m-%d %H:%M:%S') + datetime.timedelta(days=-3*366)
self.yearmonthbefore = int(self.threeyearsbefore.strftime('%Y%m'))

在程序体相应的使用点,修改相应引用。

3.3. 实验应用效果

计算效率有所提升。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 11:54:11  更:2022-05-10 11:56:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:20:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码