#key-value #streaming #pandas #dataframe #data-processing #set-key

bin+lib kvc

非常简单的键值计数工具,可以从/到 pandas 数据框或流格式转换

15 个版本 (5 个稳定版)

1.1.3 2023年6月21日
1.0.0 2021年5月12日
0.5.6 2021年5月12日
0.5.5 2021年4月21日
0.1.0 2021年3月27日

#164 in 科学


kda-tools 中使用

MIT 许可证

1.5MB
395

包含 (debian 包, 705KB) releases/kvc_1.1.1_amd64.deb, (debian 包, 640KB) releases/kvc_0.4.0_amd64.deb

这个 crate / 包是一个 Rust 模块,用于处理流输入和输出。它的目的是对一组流键进行计数值或累积。它设计得非常简单,可以消费/产生空格分隔的值。

键值计数

我使用这个库来解析类似日志的简单日志,其中每行都是以下形式

2021-03-01 warnings:3 error ... (other items with optional counts)

假设我想对这份数据进行一些处理。这是一个非常易读/易写的格式,但不是标准的。

我们可以使用 kvc-stream 将其转换为类似 k-v 对流的东西,或者使用 kvc-df 将其转换为 pandas 数据框

规范

kvc 日志格式非常简单。

  • 每行都是一个“帧”
  • 一个帧可以有一个可选的“日期标题”
  • 一个帧由空格分隔的键的字符串组成,每个键可以有一个可选的计数
  • '#' 结束帧,并用作注释

这些是有效的帧,每行一个

a
event event
2021-04-01 april_fools_pranks:4
2021-03-01 key another_key a-third-key <weird-symbols_ar_ok!> this_has_occured_three_times:3 this_twice this_twice
2021-04-02 # Nothing happened that day

假设它存储在 data.txt 中。(试试看!)

运行 <data.txt kvc-stream 产生

1 a 1
2 event 2
3 Date 2021-04-01
3 april_fools_pranks 4
4 Date 2021-03-01
4 <weird-symbols_ar_ok!> 1
4 a-third-key 1
4 this_has_occured_three_times 3
4 this_twice 2
4 key 1
4 another_key 1
5 Date 2021-04-02

运行 cat data.txt | kvc-df(或 < data.txt kvc-df)产生

index  april_fools_pranks  this_twice  a  <weird-symbols_ar_ok!>  event  Date        a-third-key  key  this_has_occured_three_times  another_key
1      0                   0           1  0                       0      0           0            0    0                             0
2      0                   0           0  0                       2      0           0            0    0                             0
3      4                   0           0  0                       0      2021-04-01  0            0    0                             0
4      0                   2           0  1                       0      2021-03-01  1            1    3                             1
5      0                   0           0  0                       0      2021-04-02  0            0    0                             0

好的,我实际上已经对齐了文本,并使用以下命令生成了索引:cat data.txt | kvc-df -i | column -t

我使用这个来保存事件日志,并可以轻松地在其他程序或数据库中进行分析。

依赖项

约2.8-4MB
约60K SLoC