作者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/m.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