Re: [問題] Excel資料做比較

看板Python作者 (perry tsai)時間9年前 (2016/04/01 01:13), 編輯推噓5(5017)
留言22則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《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://www.ptt.cc/bbs/Python/M.1459444417.A.78A.html

04/01 05:52, , 1F
是的,檔案名稱差異很大,我試著把所有文字部分抓出來比對
04/01 05:52, 1F

04/01 05:53, , 2F
五個檔案的文字部分(不重複)大概都是1xx個
04/01 05:53, 2F

04/01 05:54, , 3F
但是這五個檔案完全相同的文字部分只有2x個
04/01 05:54, 3F

04/01 05:56, , 4F
資料量並不大,但是看來文字部分的歧異很大
04/01 05:56, 4F

04/01 05:56, , 5F
所以才考慮一份 Excel 寫一個 parser,但這感覺又有點蠢...
04/01 05:56, 5F

04/01 06:04, , 6F
我在想能不能讓 parser 能讀某種定義檔
04/01 06:04, 6F

04/01 06:04, , 7F
這樣可以每個 Excel 寫一份定義檔就好,parser 維持不變
04/01 06:04, 7F

04/01 06:05, , 8F
但定義檔要怎麼設計就又沒概念了,不知道有沒有現成的可抄
04/01 06:05, 8F

04/01 09:50, , 9F
我可能會找能吃EBNF的paeser吧
04/01 09:50, 9F

04/01 17:15, , 10F
看了一下EBNF,好像不是我想要的Q_Q
04/01 17:15, 10F

04/01 21:57, , 11F
自己建 dict mapping 一開始當然會比較辛苦
04/01 21:57, 11F

04/01 21:57, , 12F
但是久了 dict 就很豐富了 "珍奶" "珍珠奶茶" 自動
04/01 21:57, 12F

04/01 21:58, , 13F
mapping 成為 珍奶
04/01 21:58, 13F

04/01 21:58, , 14F
第一步先 mapping 第二部就可以直接 parse 了
04/01 21:58, 14F

04/01 21:59, , 15F
每一個 excel 都可以套用同一個 parser
04/01 21:59, 15F

04/01 22:01, , 16F
if itemName == "珍珠奶茶": itemName = "珍奶"
04/01 22:01, 16F

04/01 22:01, , 17F
讀進來的時候順便檢查名稱 有找到就直接改掉
04/01 22:01, 17F

04/01 22:01, , 18F
最後你就可以統整了
04/01 22:01, 18F

04/01 22:02, , 19F
if itemName in dict.keys(): itemName = dict[itemN
04/01 22:02, 19F

04/01 22:03, , 20F
ame] key 是改名前 value 是改名後
04/01 22:03, 20F

04/01 22:04, , 21F
1xx個 建 dict 應該不會花太久時間
04/01 22:04, 21F

04/02 00:50, , 22F
好吧,看來也只能這樣了,一個一個慢慢加
04/02 00:50, 22F
文章代碼(AID): #1M_Lh1UA (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1M_Lh1UA (Python)