2010-02-14 78 views
3

我想先徵求您對我應該如何處理此任務的意見,而不是簡單地說明如何構建我的代碼。通過python創建選定的mysql表的統計信息

這裏是我想要做的事:我有很多加載到MySQL表爲大量獨特的名稱的數據+日期(即,其中的日期是一個單獨的領域)。我的目標是能夠選擇一個特定的名稱(使用rawinput,也許將來會添加一個下拉菜單),並查看每月趨勢,其中一個領域的移動平均值和其他統計數據(收入,每月收入,點擊次數等)。你有什麼建議 - 將這些數據通過python移動到excel工作簿,還是有辦法在python中顯示這些信息(當然,使用與excel相比的圖表)?

謝謝!

回答

0

您的問題可以分解爲兩個主要部分:分析數據,並呈現它。我假設你已經知道如何做數據分析部分,你想知道如何呈現它。

這似乎是一個特別適合web應用程序的問題。你有什麼理由避免這種情況?

如果你是很新的網絡編程和編程一般,事遂所願web2py可以上手的簡單方法。有一個simple tutorial here

對於桌面數據庫應用程序沉重,看看dabo。它使得像在數據庫表上創建視圖非常簡單。它在其上構建,還有很多簡單的圖形功能。

+0

我不會反對到一個網絡應用程序,我只是在編程方面很新穎......我想要採取寶貝步驟來創建一個網絡應用程序,但如果您認爲這將是一條路,那麼您能指出我的方向嗎? – DalivDali

+0

我編輯了我的回覆推薦web2py,因爲它使得開始使用web編程變得非常簡單,並且您的所有開發都在瀏覽器中完成。 –

2

分析這些數據(姓名,日期)可以被視爲發出即席SQL查詢來獲得時間序列信息。

你會的「樣本」您的信息取決於如何大是數據集中的日期/時間(日/周/月/年或小時/分鐘以上的相關詳細)。

我經常用這樣的查詢,其中日期字段是截斷的採樣率,在MySQL DATE_FORMAT功能很酷爲(Postgres的和Oracle使用date_trunc和TRUNC respectivly)

你想在你的數據看什麼在你的WHERE條件下。

select DATE_FORMAT(date_field,'%Y-%m-%d') as day, 
     COUNT(*) as nb_event 
FROM yourtable 
WHERE name = 'specific_value_to_analyze' 
GROUP BY DATE_FORMAT(date_field,'%Y-%m-%d'); 

執行此查詢並輸出到csv文件。你可以使用直接的mysql命令,但是我建議使用python腳本來執行這樣的查詢,並且可以使用getopt選項來輸出格式(帶或不帶列標題,使用不同於默認值的分隔符等)。甚至可以基於某些選項動態構建查詢。

要繪製這些信息,請查看時間序列工具。如果你缺少數據(日期不會出現在這種sql查詢的結果),你應該照顧的選擇。 Excel不是正確的,我認爲(或者不夠高手),但可能是一個開始。

本人來說,我發現dygraph,一個JavaScript庫,真的很酷的時間序列繪製,並且它可以與csv文件作爲源使用。由於跨域安全性約束,仔細考慮這種配置,顯示Dygraph對象的csv文件和html頁面應該位於同一臺服務器上(或者任何瀏覽器的安全約束條件)。

我曾經使用Django構建這樣的web應用,因爲它是我最喜歡的Web框架,在那裏我換URL調用,因爲這:

GET /timeserie/view/<category>/<value_to_plot> 
GET /timeserie/csv/<category>/<value_to_plot> 

第一URL中調用一個觀點,即簡單地輸出與可變模板文件該引用的URL來獲取csv文件爲對象Dygraph:

<script type="text/javascript"> 
    g3 = new Dygraph(
    document.getElementById("graphdiv3"), 
    "{{ csv_url }}", 
    { 
     rollPeriod: 15, 
     showRoller: true 
    } 
); 
</script> 

第二個URL調用生成SQL查詢和輸出其結果作爲文本/ CSV由Dygraph被渲染的圖。

這是「自制」可以忍受簡單或擴展,在任何臺式電腦上輕鬆運行,可以擴展到輸出json格式供其他人使用javascript庫/框架。

否則在開源中有工具,與此類報表相關(但時間序列功能通常不足以滿足我的需求),如Pentaho,JasperReport,SOFA。您可以在此類工具的報告中將查詢作爲數據源進行創建,並生成輸出時間序列的圖形。

我發現,如今的網絡技術與正確的JavaScript庫/框架,真正開始是正確的,例如經典的BI工具來挑戰的報告的舊方式,它使事情互動:-)