作者ripple0129 (perry tsai)
看板Python
标题Re: [问题] Excel资料做比较
时间Fri Apr 1 01:13:34 2016
※ 引述《os653 ()》之铭言:
: 有很多个月份的 Excel 想要做比较,基本上每个月一份 Excel
: 内容大概是某某东西某某月销售多少,想计算销售成长率
: 问题是资料有点杂
: 像是东西的名字不太固定,同月份的珍奶跟珍珠奶茶应该要并计
: 或是贩售的场所名字略有不同,XX豆浆跟XX豆浆大王其实指的是同个东西
: 我自己想了两个处理办法
: 1. 不管内容,全部参在一起做成撒尿牛丸
: 直接把资料都读进资料库,像这样
: 2015/03 XX豆浆大王 珍奶 100
: 2015/03 XX豆浆 珍奶 200
: 2015/04 XX豆浆大王 珍珠奶茶 300
: 2015/04 XX豆浆 珍珠奶茶 400
: 之後再回头慢慢把同义不同名的资料合并
: 2. 先设计好资料库,每一份 Excel 单独写一个 parser 去处理
: parser 要负责把同义不同名的资料修正後再丢进资料库
: 请问这两个做法那个比较好?或是有其他更适当的做法?
: 我自己觉得两个做法都有点别扭,还请各位提供点意见,感谢
当然是先parse再进资料库,
不过没说你资料量有多少,
读进资料库只要几秒的量,
什麽做法也没差了。
不过为什麽一个档案一个parse,
每个档案资料名称差异很大吗?
个人作法应该会是整个parse写好,
自动open excel档parse完直接塞资料库,
就是一次写完就放给它全自动完成,
不过重点还是在於parse做的准不准确吧。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.137.75.211
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1459444417.A.78A.html
1F:推 os653: 是的,档案名称差异很大,我试着把所有文字部分抓出来比对 04/01 05:52
2F:→ os653: 五个档案的文字部分(不重复)大概都是1xx个 04/01 05:53
3F:→ os653: 但是这五个档案完全相同的文字部分只有2x个 04/01 05:54
4F:→ os653: 资料量并不大,但是看来文字部分的歧异很大 04/01 05:56
5F:→ os653: 所以才考虑一份 Excel 写一个 parser,但这感觉又有点蠢... 04/01 05:56
6F:→ os653: 我在想能不能让 parser 能读某种定义档 04/01 06:04
7F:→ os653: 这样可以每个 Excel 写一份定义档就好,parser 维持不变 04/01 06:04
8F:→ os653: 但定义档要怎麽设计就又没概念了,不知道有没有现成的可抄 04/01 06:05
9F:推 Yshuan: 我可能会找能吃EBNF的paeser吧 04/01 09:50
10F:推 os653: 看了一下EBNF,好像不是我想要的Q_Q 04/01 17:15
11F:推 largesperm: 自己建 dict mapping 一开始当然会比较辛苦 04/01 21:57
12F:→ largesperm: 但是久了 dict 就很丰富了 "珍奶" "珍珠奶茶" 自动 04/01 21:57
13F:→ largesperm: mapping 成为 珍奶 04/01 21:58
14F:→ largesperm: 第一步先 mapping 第二部就可以直接 parse 了 04/01 21:58
15F:→ largesperm: 每一个 excel 都可以套用同一个 parser 04/01 21:59
16F:→ largesperm: if itemName == "珍珠奶茶": itemName = "珍奶" 04/01 22:01
17F:→ largesperm: 读进来的时候顺便检查名称 有找到就直接改掉 04/01 22:01
18F:→ largesperm: 最後你就可以统整了 04/01 22:01
19F:→ largesperm: if itemName in dict.keys(): itemName = dict[itemN 04/01 22:02
20F:→ largesperm: ame] key 是改名前 value 是改名後 04/01 22:03
21F:→ largesperm: 1xx个 建 dict 应该不会花太久时间 04/01 22:04
22F:推 os653: 好吧,看来也只能这样了,一个一个慢慢加 04/02 00:50