2 个版本
0.1.1 | 2022 年 10 月 12 日 |
---|---|
0.1.0 | 2022 年 10 月 10 日 |
#1979 在 命令行实用工具
695KB
125 行
Few Word Do Trick (fwdt)
Few Word Do Trick (fwdt) 是一个跨平台的通用快速记录器,适用于人类,支持不完整的 csv,以提供更好的数据录入体验。
人类数据录入的两条法则
第一条法则:为了防止数据录入错误,永远不要录入数据。
第二条法则:当第一条法则不可行时,只录入更改。
个人轶事
人类的数据录入容易出错。我亲身经历过。尽管我没有证据,但我假设普通人无法生成无瑕疵的录入,尤其是在录入的数量增加到更大的数字时。
最近我偶然发现了一个业余无线电数据记录器 fle。这是一种领域特定语言 (DSL),允许通过最小重复来录入数据。这个命令行实用工具在精神上类似,但没有发明自己的业余无线电特定 DSL。它使用不完整的 csv 文件作为数据输入,并输出完整的 csv 文件。
入门指南
将 fl 文件转换为逗号分隔的 csv 文件的命令是
# get the data
wget https://raw.githubusercontent.com/alexhallam/fwdt/main/test/data/radio_log_small.csv
# output the imputed csv file
fwdt -s, test/data/radio_log_small.csv
输出是
date,group,mycall,operator,received,sent,freq,time,call
2022-08-08,cw,wq8R,wq8R,599,599,7.2230,1107,qr3e
2022-08-08,cw,wq8R,wq8R,599,599,7.2230,1113,kn6h
2022-08-08,cw,wq8R,wq8R,599,599,7.2230,1127,ae0bc
2022-08-08,cw,wq8R,wq8R,599,599,7.2230,1207,ae4bc
2022-08-08,cw,wq8R,wq8R,599,599,14.223,1207,qr3e
2022-08-08,cw,wq8R,wq8R,599,599,14.223,1213,kn6h
2022-08-08,cw,wq8R,wq8R,599,599,14.223,1217,a8rat
2022-08-08,cw,wq8R,wq8R,599,599,14.223,1217,ko7rqq
自动更新
我更喜欢立即反馈。可以将 fwdt
的输出通过管道传输到 tidy-viewer
。如果使用 entr
,则每次保存文件时都可以预览数据更改!
find . | entr sh -c 'fwdt -s, radio_log_small.csv | tidy-viewer'
详细信息
假设用户心中已有最终的 dataset。使用 wc -m
字符计数为 453
。
date group mycall operator received sent freq time call
1 2022-08-08 cw wq8R wq8R 599 599 7.2230 1107 qr3e
2 2022-08-08 cw wq8R wq8R 599 599 7.2230 1113 kn6h
3 2022-08-08 cw wq8R wq8R 599 599 7.2230 1127 ae0bc
4 2022-08-08 cw wq8R wq8R 599 599 7.2230 1207 ae4bc
5 2022-08-08 cw wq8R wq8R 599 599 14.223 1207 qr3e
6 2022-08-08 cw wq8R wq8R 599 599 14.223 1213 kn6h
7 2022-08-08 cw wq8R wq8R 599 599 14.223 1217 a2rat
8 2022-08-08 cw wq8R wq8R 599 599 14.223 1217 ko7rqq
如果用户删除重复数据,字符计数可能减少到 187
。用户必须录入的数据仅显示如下。我将把这些不完整的 csv 文件称为 快速记录 (fl) 文件。
date,group,mycall,operator,received,sent,freq,time,call
2022-08-08,cw,wq8R,wq8R,599,599,7.2230,1107,qr3e
1113,kn6h
1127,ae0bc
1207,ae4bc
14.223,1207,qr3e
1213,kn6h
1217,a8rat
1217,ko7rqq
如果将此映射到原始格式,则更容易看到哪些被删除。
date group mycall operator received sent freq time call
1 2022-08-08 cw wq8R wq8R 599 599 7.22 1107 qr3e
2 NA NA NA NA NA NA NA 1113 kn6h
3 NA NA NA NA NA NA NA 1127 ae0bc
4 NA NA NA NA NA NA NA 1207 ae4bc
5 NA NA NA NA NA NA 14.2 1207 qr3e
6 NA NA NA NA NA NA NA 1213 kn6h
7 NA NA NA NA NA NA NA 1217 a8rat
8 NA NA NA NA NA NA NA 1217 ko7rqq
如何创建有效的快速记录文件
规则非常简单。
- 前两行(列标题和数据的第一行)必须完整。数据的第一行是“母行”。这是当数据不存在时进行未来递归数据推断的基础。
- 所有后续行都替换为最右侧的列。(将变化最频繁的列放在右边)。
安装
cargo install fwdt
Scorch
我该如何知道何时使用fl文件而不是csv文件?
Scorch定义为[1 - (fl_word_count/csv_word_count)]
。使用页面顶部的示例fl_word_count=187
和csv_word_count=453
,因此1 - (187/453) ~ 59%
。这是一个不寻常高的Scorch值。它表示使用fl文件而不是完整的csv文件所节省的文本百分比。即使Scorch较小,5%,这也意味着5%的文本不需要手动输入,因此将是无错误的。
帮助
fwdt 0.1.0
📝🔥 Few Word Do Trick (fwdt) is a fast data logger 📝🔥
Example Usage:
fwdt -s, data.csv
USAGE:
fwdt [FLAGS] [OPTIONS] [FILE]
FLAGS:
-d, --debug-mode Print object details to make it easier for the maintainer to find and resolve bugs.
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-s, --delimiter <delimiter> The delimiter separating the columns. Example #1 `fwdt -s ' '
test/data/power_lift.csv`. Example #2 `fwdt -s, test/data/radio_log_small.csv`
ARGS:
<FILE> Data file to process
依赖项
~7.5MB
~122K SLoC