3

単にコードを構成する方法ではなく、このタスクにどのように取り組むべきかについて、意見を求めることから始めたいと思います。

これが私がやろうとしていることです: 多数の一意の名前 + 日付 (つまり、日付が別のフィールドである場合) の mysql テーブルに大量のデータをロードしています。私の目標は、特定の名前を選択して (rawinput を使用し、将来的にはドロップダウン メニューを追加する可能性があります)、フィールドの 1 つ (収益、月ごとの収益、クリック数など)。あなたのアドバイスは何ですか-このデータをpython経由でExcelワークブックに移動するか、この情報をpythonで表示する方法はありますか(もちろん、Excelと比較するチャートを使用して)?

ありがとう!

4

2 に答える 2

2

このようなデータ (名前、日付) の分析は、アドホック SQL クエリを発行して時系列情報を取得するものと見なすことができます。

データセットの大きさに応じて、日付/時間枠 (日/週/月/年、または時間/分でさらに詳しく説明) で情報を「サンプリング」します。

日付フィールドがサンプルレートに切り捨てられるようなクエリをよく使用します.mysql DATE_FORMAT関数はそのためにクールです(postgresとoracleはそれぞれdate_truncとtruncを使用します)

データで見たいものは、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はそのための正しいものではないと思います(または十分に習得していません)が、出発点になる可能性があります.

個人的には、javascript ライブラリである dygraph が時系列のプロットに非常に優れており、ソースとして csv ファイルを使用できることがわかりました。このような構成では注意が必要です。クロスドメイン セキュリティの制約により、Dygraph オブジェクトを表示する csv ファイルと html ページは同じサーバー上にある必要があります (または、ブラウザーのセキュリティ制約が受け入れたいものは何でも)。

これは私のお気に入りの Web フレームワークであり、URL 呼び出しを次のようにラップしているため、django を使用してこのような webapp を構築していました。

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

最初の URL は、Dygraph オブジェクトの csv ファイルを取得するために URL を参照する変数を含むテンプレート ファイルを単純に出力するビューを呼び出します。

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

2 番目の URL は、SQL クエリを生成するビューを呼び出し、結果をテキスト/csv として出力し、Dygraph によってレンダリングされます。

それは「自家製」であり、シンプルにすることも拡張することもでき、任意のデスクトップコンピューターで簡単に実行でき、他の JavaScript ライブラリ/フレームワークで使用するために json 形式を出力するように拡張できます。

それ以外の場合、Pentaho、JasperReport、SOFA などのレポートに関連するツールがオープンソースにあります (ただし、時系列機能は私のニーズには十分ではありません)。そのようなツールでレポート内のデータソースとしてクエリを作成し、timeseries を出力するグラフを作成します。

今日、正しい javascript ライブラリ/フレームワークを使用した Web 手法は、そのような古典的な BI ツールによるレポートの古い方法に挑戦するのに本当に正しくなり始めており、物事をインタラクティブにすることがわかりました :-)

于 2011-01-08T12:26:31.837 に答える
0

問題は、データの分析と提示という 2 つの主要な部分に分けることができます。データ分析の部分を行う方法を既に知っていて、それをどのように提示するか疑問に思っていることを前提としています。

これは、Web アプリに特に適した問題のようです。それを避けたい理由はありますか?

Web プログラミングやプログラミング全般にまったく慣れていない場合は、 web2pyのようなものが簡単に始めることができます。ここに簡単なチュートリアルがあります。

デスクトップ データベースを多用するアプリについては、daboをご覧ください。これにより、データベース テーブルのビューの作成などが非常に簡単になります。それが構築されているwxpythonにも、多くの単純なグラフ機能があります。

于 2010-02-14T08:35:04.183 に答える