• vaex读取和处理大型文件的方法


    1、针对pandas在对读取超过上G的数据时速度较慢,并且即使读取后,可能由于文件过大使用pandas的方法导致死机的情况较多。
     
    2、vaex属于DataFrame的一个扩展性,针对大型文件的处理,特别好用,其机理是采用“映射”的方式,并不把数据直接读取到内存里面。其相关的介绍和使用教程,API等可在官网查找到:https://vaex.io/docs/api.html#vaex.from_csv。其中的方法和纯Pandas的相似,有些几乎一样的。
     
    3、实际应用:
    这里举一个简单:比如我现在有一个将近6G的csv文件,来自于期货螺纹钢(rb),2016年到现在的数据,文件比较大,我们要对这个数据进行清洗,针对数据的datetime,分解成Data(格式:YYYY/MM/DD)和Time(格式:HH:MM:SS)的样式,其中last_price存为Price,成交量volume存出为Volume。然后对比后存储为csv文件。过程就是一个简单的数据清洗。

     

     
    第一步:读取原始csv文件并存储为vaex的hdf5的数据结构,并读取出来
    此时我们可以看到文件夹里面生成了一个hdf5数据结构,打开速度也是非常快的,当日你也可以试一下Pandas会让你慢的崩溃。

     

     
    第二步:查看数据信息

     

    此时看到,这里生成的惰性数据结构hdf5和纯Pandas几乎是一样的。
     
     
    第三步:增加两个处理字符的方法,下面apply的方法和纯Pandas略有不一样,此时要注意。并打印清洗后的DataFrame数据结果:

     

     

     
    第四步:查看清洗后数据的信息,对比,然后存储为csv文件。
    对比后数据行数一致

     

     
     
     
     
     
    4、源码:
    import pandas as pd
    import vaex
    
    
    # df = vaex.open("rb_tick_20160101_20210401.csv")
    # df.export_hdf5("rb_tick_20160101_20210401.hdf5")
    # 生成hdf5的数据
    vaex.from_csv("rb_tick_20160101_20210401.csv", convert=True)
    
    # 打开生成的数据并赋值给变量data
    data = vaex.open("rb_tick_20160101_20210401.csv.hdf5")
    
    # 查看数据信息
    data.info()
    
    # 创建清洗后的数据存放dataFrame
    cleaned_data = pd.DataFrame()# 查看数据信息
    
    
    # 创建日期和时间的数据整理函数
    def dateMethod(st):
        return str(st[0:4]) + "/" + str(st[5:7]) + "/" + str(st[8:10])
    
    def timeMethod(st):
        return str(st[11:19])
    
    # 收集Date
    cleaned_data["Date"] = data.apply(dateMethod, arguments=[data.datetime]).values
    # 收集Time
    cleaned_data["Time"] = data.apply(timeMethod, arguments=[data.datetime]).values
    # 收集Price
    cleaned_data["Price"] = data["KQ.m@SHFE.rb.last_price"].values
    # 收集Volume
    cleaned_data["Volume"] = data["KQ.m@SHFE.rb.volume"].values
    
    # 打印清洗后的数据
    cleaned_data
    
    
    # 对比清洗后的数据内容和清洗前的数据信息
    cleaned_data.info()
    data.info()
    
    # 清洗后的数据存储为csv文件
    cleaned_data.to_csv("cleaned_data.csv")
    

      

     
    5、建议安装vaex在纯python环境下,不容易出错。

  • 相关阅读:
    有什么好的自助报表工具?
    各家报表工具对国产系统的支持如何
    Jenkins构建触发器(定时构建项目)
    Windows10安装Tomcat8.5与jdk1.8.0_181(以及可能出现的问题的解决)
    uinttest断言assert
    python判断语句if
    python运算符
    selenium如何定位鼠标悬停才显示的按钮
    python列表、元组、字典
    python常用数据类型
  • 原文地址:https://www.cnblogs.com/noah0532/p/14702533.html
Copyright © 2020-2023  润新知