1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python 総当たり相関係数

Posted at

はじめに

Yellowfin が参照するデータベースにデータを取り込む前に、プログラムで様々な処理を施しておきたい場面は多くあると思います。
例えば、数多くのパターンの相関係数を事前に集計しておけば、その後の実装が楽になり、またパフォーマンスの向上にもつながります。

Python データ処理

データフレームにデータ読み込み

CSV ファイルから、3 名の生徒の各教科の点数を、データフレームに読み込みます。

CSV
import pandas as pd
df = pd.read_csv("score.csv")

データフレームの中身は以下のようになりました。

名前 教科 点数
山田 国語 60
山田 算数 72
山田 理科 75
山田 社会 97
山田 英語 66
榎本 国語 75
榎本 算数 78
榎本 理科 93
榎本 社会 82
榎本 英語 68
北村 国語 74
北村 算数 74
北村 理科 80
北村 社会 90
北村 英語 84

横持ち変換

テータを縦持ちから横持ちに変換します。pivot_table() 関数を使うと、簡単にデータ変換できます。

pivot
df_pivot = df.pivot_table(values=['点数'], index=['名前'], columns=['教科'], aggfunc=['mean'])
df_pivot.columns = df_pivot.columns.get_level_values(2)

この時点で、データフレーム内のデータは以下のような形になります。
縦軸に名前、横軸に教科のクロス集計表に、教科の単位で点数の平均を取ったものが配置されました。

教科 国語 理科 社会 算数 英語
名前
北村 63.0 78.0 78.0 100.0 90.0
山田 69.0 66.0 80.0 65.0 76.0
榎本 95.0 74.0 96.0 70.0 82.0

相関係数

corr() 関数を使えば、上記データフレームから、各教科総当たりの相関係数が簡単に算出できます。

correlation
df_corr = df_pivot.corr()

結果、データフレームの中身は以下のようになりました。

教科 国語 理科 社会 算数 英語
教科
国語 1.000000 0.012829 0.997131 -0.538318 -0.256683
理科 0.012829 1.000000 0.088475 0.835766 0.963123
社会 0.997131 0.088475 1.000000 -0.472988 -0.182794
算数 -0.538318 0.835766 -0.472988 1.000000 0.952683
英語 -0.256683 0.963123 -0.182794 0.952683 1.000000

Yellowfin からのデータ参照

データベースへのデータコピー

データフレームの中身をデータベースのテーブルにコピーすれば、Yellowfin がデータを参照できるようになります。
ここまでの説明では、動きを分かりやすく説明するために、少量のデータを使って処理の流れを説明しました。
実際には、大量のデータを使って処理することになるかと思います。大量のデータをデータベースに反映するためのベストプラクティスをこちらにまとめているので、併せてご確認ください。AWS Redshift に格納する場合のベストプラクティスではありますが、他環境においても類似の考え方を持ち込むことは可能だと思います。たぶん。

Yellowfin から参照

その後、データベースにアップロードされたデータを、Yellowfin から参照してチャートやダッシュボードを作成します。
Yellowfin コンテンツの作成に関する詳細は過去の記事をご確認ください。

最後に

統計解析に使える Python ライブラリは数多く存在します。我々は完全にその恩恵を授かってますね。
また、Pandas を用いると、構造化データとしてデータを扱うことができるため、データベースや BI ツールととても相性が良いと感じています (感度には個人差あり)。
便利な世の中になったもんですな。

では皆様、良いデータ分析を!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?