ビジュアライゼーションのためにデータを準備する方法
Preparing data for visualization.
Python
Tableau PrepやAlteryxを使用しない
次のデータ可視化プロジェクトを始めるには、データクリーニングに親しむことから始めましょう。データクリーニングは、生の“汚れた”データ入力をより信頼性の高く、関連性がある、簡潔なデータに変換する、どんなデータパイプラインにおいても重要なステップです。Tableau PrepやAlteryxなどのデータ準備ツールはこの目的のために作成されましたが、Pythonのようなオープンソースのプログラミング言語でこのタスクを達成できるのであれば、これらのサービスにお金を費やす必要はありません。本記事では、Pythonスクリプトを使用してデータを視覚化の準備ができるようにするプロセスを案内し、データ準備ツールに代わるよりコスト効果の高い選択肢を提供します。
注意: 本記事では、Tableau用のデータを取得するために焦点を当てますが、主要な概念は他のビジネスインテリジェンスツールにも同様に適用されます。
理解できます。データクリーニングは、すでに長いプロセスの中で別のステップに見えるかもしれません。しかし、それは重要であり、楽しめます。データセットに慣れる方法は、あなたが持っているデータと持っていないデータ、そしてあなたが終盤の分析目標に向けて取る必要がある決定について詳しく見ることです。
Tableauは多機能なデータ視覚化ツールですが、答えにたどり着くための方法が明確でない場合があります。これは、Tableauに統合する前にデータセットを処理することがあなたの最大の秘密の助けになる場合があるためです。以下では、データクリーニングがTableauと統合する前になぜ有益かについていくつかの主な理由を探ってみましょう。
- 不要な情報を除去する: 生データには、分析に不要な、または繰り返される情報が含まれることがよくあります。データをクリーニングすることで、無駄を取り除き、視覚化を最も関連性の高いデータ特徴に集中することができます。
- データ変換を簡素化する: 視覚化する意図が明確である場合、Tableauにデータをロードする前にこれらの事前変換を実行することで、プロセスを効率化することができます。
- チーム内での移植性の向上: データソースが定期的に更新される場合、新しい追加要素は不一致を導入し、Tableauを破損させる可能性があります。Pythonスクリプトとコード説明(より正式にはマークダウンドキュメンテーション)を使用することで、プログラミングに関する問題をトラブルシューティングすることができ、他の人々にコードを理解させることができます。
- データ更新の時間短縮: 定期的に更新する必要のあるデータは、Hyper APIを活用すると有効です。Hyper APIは、Tableauに特化したHyperファイル形式を生成し、データ抽出の自動化を許可し、データ更新プロセスをより効率的にします。
これで、データの準備の利点についていくつか説明しました。Pythonスクリプトを使用して、簡単なデータパイプラインを作成して、データクリーニングと処理がワークフローに統合され、視覚化が管理しやすくなる方法を探りましょう。
Pythonスクリプトを使用したデータパイプラインの作成
私たちのデータが進む旅はかなりシンプルです: データクリーニング、視覚化のためのデータ処理、そしてTableau-Ready Hyperファイルに変換してシームレスに統合します。
作業例に入る前に、Hyperファイルの変換にはpantab
ライブラリをダウンロードする必要があることに注意してください。このライブラリは、Pandas DataframesをTableau .hyperエクストラクトに簡単に変換します。これは、選択した環境のターミナルで次のコードを使用して簡単に実行できます(環境に不慣れな方は、環境と特定のライブラリのインストール方法についての素晴らしいプライマー記事があります):
#run the following line of code to install the pantab library in your environmentpip install pantab
チュートリアル:Pythonを使用した電気自動車ライセンスのデータ準備を探る
私たちが目指すデータ視覚化は、カナダの統計から得られる政府の利用可能なデータに基づいて、異なる電気自動車のメーカーやモデルの人気に焦点を当てています。
ここで注目すべきなのは、私の以前の記事で探索したデータセットに基づいて構築されているという点です: Rによる電気自動車の分析。データセットの初期探索と決定の背後にある理由を理解するには、詳細についてはそちらを参照してください。このチュートリアルでは、最初の入力に続く各ステップで、Pythonスクリプトの出力をそれぞれのフォルダに保存しています。以下に概要を示します。
このフォルダプロセスにより、パイプラインがうまく組織され、プロジェクト内の各出力を記録できるようになります。では、最初のPythonスクリプトを構築してみましょう!
データのクリーニング
パイプライン内の最初のスクリプトは、このデータセットに対して適用されるデータクリーニングの基本的な手順に従います。これには、関連する列の保持/名前変更、ヌルの削除と/または重複の削除、データ値の一貫性の確保が含まれます。
まずは、入力ファイルの場所と出力ファイルの宛先を指定することから始めましょう。このステップは重要です。なぜなら、ファイルの異なるバージョンを同じ場所に整理できるようになるためです。この場合、ファイル出力を月次で変更しているため、ファイル名の末尾に示されているように、各ファイル出力は月ごとに分離されます2023_04
。
以下のコードは元の.csv入力を読み取り、保持する列を定義します。この場合、私たちは、購入したモデルのタイプに関連する情報を保存し、車の販売店またはその他の関係ない列に関する列を無視することに関心があります。
次に、先頭または末尾の空白を削除し、理解しやすくするためにアンダースコアを追加して、列名を短くすることができます。
次に、データセットにほとんどのヌルエントリがないことを確認した後、.dropna
関数でヌルデータを削除します。この時点で、重複を削除することも望ましい場合がありますが、この特定のデータセットの場合は削除しません。これは、重複する情報が多くあり、行識別子がない場合にはデータ損失が発生するためです。
最後のステップは、データを適切なフォルダの場所に.csvファイルとして保存することです。これは、共有ディレクトリのclean_data
フォルダに配置されます。
ファイルを__file__
を使って参照し、../
が前のフォルダを示すBashコマンドを使用して、ファイルディレクトリを指定する方法に注意してください。これで、データのクリーニングスクリプトは終了です。次は、データ処理フェーズに進みましょう!
完全な動作するコードとアセンブルされたスクリプトにアクセスするには、こちらの私のGithubリポジトリを参照してください。
可視化のためのデータ処理
登録された電気自動車の人気の変化を強調することを目的とした可視化の目的を再度確認しましょう。効果的に展示するためには、最終的なTableau用のデータセットに以下の機能が含まれていることが望ましいため、以下のようにコード化します:
- 年ごとの車両の絶対数
- 年ごとの車両の比例数
- 登録された車両の最大の増加および減少
- 登録された車両のランキング
- 比較のために登録された車両の前回のランキング
目的とする視覚化に基づいて、理想的な列の作成は反復的なプロセスになる場合があります。私の場合、視覚化を構築した後で最後の列を含めました。これは、ランキングの違いを視覚的に比較して視聴者に提供したかったためであり、Pythonスクリプトがそれに合わせて調整されました。
次のコードでは、ブランドのデータセットと非常に似ているため、モデル集計データセットに焦点を当てます。まず、inputfile
とoutputfile
を定義しましょう。
inputfile
をclean_data
フォルダから参照したことに注意してください。これは、データクリーニングスクリプトの出力でした。
以下のコードは、データを読み込み、Vehicle_Make_and_Model
とCalendar_Year
ごとの集計数のデータフレームを作成します。
pivot
関数は、Excelのピボットテーブル機能と同様の動作をします。各Calendar_Year
の値を列入力として取ります。
その後、スクリプトは Forループ を使用してper_1K
入力を作成します。これにより、各モデルの割合を計算して、同じスケールで各モデルを比較できるようにし、各年の列を作成します。
年ごとの比率を計算することで、データセットの最初の年である2019年から、データの最後の完全な年である2022年までの各モデルの最大の増加および減少を計算できます。
ここでは、melt
関数を使用して、分離されたper_1K
列を年ごとに再ピボットして行に変換し、per_1K
とそれらの関連する値が含まれる1つの列だけを持つようにします。
以下のコードでは、絶対数と先に作成した他の計算を結合することができます。
ライセンス数を使用してrank
列を作成し、これらの値をVehicle_Make_and_Model
とCalendar_Year
でソートすることができます。
最後に、shift
関数を使用してprevious_rank
列を作成します。
最後に、出力をclean_model
フォルダパスに保存して、視覚的に準備されたデータセットを提供します。
親切なリマインダーとして、
clean_brand
処理されたデータセットの完全なPythonスクリプトコードは、こちらの私のGitHubリポジトリで見つけることができます。
最終データファイルを.hyperファイル形式に変換する
私たちのパイプラインの最後のステップは比較的簡単であり、作成した.csv処理ファイルを.hyperファイル形式に変換するだけです。先に参照したpantab
ライブラリをダウンロードしている限り、これは比較的簡単に行えるはずです。
Tableauでは、接続されたデータはライブ接続または抽出データとして存在することができます。ライブ接続では、データが連続的にフローし、ソースからの更新がほぼすぐにTableauに反映されます。抽出されたデータは、.hyperファイル拡張子を持つローカルファイルをTableauが作成し、データのコピーが含まれています。 (データソースの詳細な説明は、こちらをご覧ください)。その主な利点は、Tableauが情報にアクセスして表示する速度を高速化できることであり、特に大規模なデータセットの場合に特に有益です。
ハイパーファイル変換スクリプトのコードは、pandas
とpantab
パッケージを読み込み、次にTableauで必要なcleaned_model
データセットを読み込むことから始まります。
コードの最後の行では、frame_to_hyper
関数を使用して.hyperファイルを生成し、これをhyper
フォルダに保存しています。
最後に、.hyperファイル形式をTableauに簡単にロードできます。新しいワークブックを開いて、「ファイルを選択」セクションで、more
を選択してロードするファイルを選択できます。 ev_vehicle_models.hyper
ファイルをロードすると、以下のスクリーンショットに示すように、Tableau Extractとして表示され、データをビジュアル化する準備ができます!
まとめ
視覚化に緻密な計画を取り入れることで、ダッシュボードのメンテナンスを簡素化し、シンプルなデータパイプラインを作成することができます。リソースが不足している場合でも、Pythonのようなオープンソースのコーディングプログラムは強力な機能を提供しています。最後に、Pythonスクリプトにアクセスするには、こちらの私のGitHubリポジトリを確認してください。
すべての画像(特に注釈がない場合)は著者によるものです。
参考文献
- Salesforce、Tableau Hyper API、2023年
- R.Vickery、Python Virtual Environmentsのデータサイエンティストガイド、2021年1月
- K.Flerlage、Tableau Data Sources Part 1: Data Source Types、2022年7月
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles