以节省内存的方式处理一些数据

karld的Python项目详细描述


如何数据

  1. 拆分数据。
  2. 创建一个将数据作为迭代器的生成器,生成键和值对。
  3. 按键对每个键/值对列表进行排序。
  4. 使用heap按键合并键/值对列表。
  5. 按键对键/值对分组。
  6. 将每个键分组的值减少到一个值,从而产生一个键/值对。

您可以使用密钥函数代替密钥,只要它生成 在映射排序合并组阶段中使用相同的键。

分割数据

使用分割文件分割数据文件或使用分割csv文件分割 可能有多行字段以确保它们不被拆分的csv文件。:

import os

import karld

big_file_names = [
    "bigfile1.csv",
    "bigfile2.csv",
    "bigfile3.csv"
]

data_path = os.path.join('path','to','data', 'root')


def main():
    for filename in big_file_names:
        # Name the directory to write the split files into based
        # on the name of the file.
        out_dir = os.path.join(data_path, 'split_data', filename.replace('.csv', ''))

        # Split the file, with a default max_lines=200000 per shard of the file.
        karld.io.split_csv_file(os.path.join(data_path, filename), out_dir)


if __name__ == "__main__":
    main()

当您生成数据并希望根据数量将其分片到文件时,请使用 拆分输出函数之一,如split_file_output_csvsplit_file_outputsplit_file_output_json

import os
import pathlib

import karld


def main():
    """
    Python 2 version
    """

    items = (str(x) + os.linesep for x in range(2000))

    out_dir = pathlib.Path('shgen')
    karld.io.ensure_dir(str(out_dir))

    karld.io.split_file_output('big_data', items, str(out_dir))


if __name__ == "__main__":
    main()

CSV可序列化数据:

import pathlib

import karld


def main():
    """
    From a source of data, shard it to csv files.
    """
    if karld.is_py3():
        third = chr
    else:
        third = unichr

    # Your data source
    items = ((x, x + 1, third(x + 10)) for x in range(2000))

    out_dir = pathlib.Path('shard_out_csv')

    karld.io.ensure_dir(str(out_dir))

    karld.io.split_file_output_csv('big_data.csv', items, str(out_dir))


if __name__ == "__main__":
    main()

JSON可序列化数据行:

import pathlib

import karld


def main():
    """
    From a source of data, shard it to csv files.
    """
    if karld.is_py3():
        third = chr
    else:
        third = unichr

    # Your data source
    items = ((x, x + 1, third(x + 10)) for x in range(2000))

    out_dir = pathlib.Path('shard_out_json')

    karld.io.ensure_dir(str(out_dir))

    karld.io.split_file_output_json('big_data.json', items, str(out_dir))


if __name__ == "__main__":
    main()

文档

阅读文档:http://karld.readthedocs.org/en/latest/

已在http://karld.readthedocs.org/en/latest/getting-started.html展开“入门”。

更多的例子记录在http://karld.readthedocs.org/en/latest/source/example.html。查看 示例文件的源,例如…

贡献:

在这里提交任何问题:https://github.com/johnwlockwood/karl_data/issues

development的分支发出pull请求
https://github.com/johnwlockwood/karl_data.
documentation是用structuredtext编写的,当前使用
狮身人面像风格 列表http://sphinx-doc.org/domains.html#info-field-lists

查看关闭的pull请求,查看开发流程 对master的每个更改都是通过github上的pull请求完成的。代码评审 是受欢迎的,即使是合并的请求。请随意提问 密码。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
maven通过pom文件增加最大java堆大小   java如何在Kojo IDE输出窗格中打印到同一行?   如何使用特定的JRE交付Java应用程序?   java Cordova插件调用日志找不到符号   Java上Redis哈希中的spring列表   java ThreadSafeClientConnManager不是多线程   java如何在激活器中获取IEclipseContext   java如何通过编程更改除法器偏差   在中找不到maven Java/Mvn本地资源。罐包装   JOptionPane的java用户输入验证。showInputDialog   java编辑:如何更改日期对象的日期格式?   文件编写器Java;如何覆盖   一行中包含多个值的java读取属性   java如何在安卓中使用截击上传视频