Python(Pandas+Plotly)で中央値の時系列の推移を比較する方法を紹介【サンプルコードあり】

3 min

データ分析はデータの特徴を捉えるところから始めます

Pandas では少しの工夫で特徴を捉えるためのデータを出力することが出来ます

しかし、テキストデータだけではどうもイメージがし辛いと思います。

本記事では、Pandas の DataFrame をインプット情報として plotly で中央値の時系列の推移を比較する方法を紹介します。

広告_零号機

中央値の推移の比較のサンプルコード(Colab で利用可能)

サンプルデータセット

社会科学のためのデータ分析」で用いられているオープンデータセットでの使用例を紹介します。

データの特徴の確認方法については下記をご参考ください。

出力イメージ

DataFrame の中央値の時系列の推移を出力することが出来ます。

出力イメージ

散布図で可視化することで下記のことが読み取れます

この図から、2大政党制のイデオロギーの中心は時間とともに離れていっていることが明白である。近年、民主党はよりリベラルになり、共和党はますます保守化している。多くの研究者がこの現象を政治的分極化(political polarization)と呼んでいる

「社会科学のためのデータ分析入門(上)」3測定 3.6 「2変量関係の要約」

コード

下記コードを Google Colaboratory のセルにコピペして実行することで直ぐに使えます。

import pandas as pd
from plotly.subplots import make_subplots
import plotly.graph_objects as go

def congress_go_scatter_median_lines(_df, _party, _x, _y, _name):
  # pivot_table を使用して、_x に指定したカラム(質的データ)の設定値毎に、 _y に指定したカラム(量的データ)の値の中央値を算出
  # plotly で可視化するために転置(行と列の入れ替え)を実施
  df_temp = pd.pivot_table(_df[_df["party"]==_party], columns=_x, values=_y, aggfunc="median").T
  # plotly で可視化するためにインデックスの値をカラムに設定
  df_temp[_x]=df_temp.index
  # 違いをわかりやすくするために、mode には "lines" を指定して線を表示
  return go.Scatter(
      x=df_temp[_x],
      y=df_temp[_y],
      mode='lines',
      name=_name
    )

df_congress = pd.read_csv('https://raw.githubusercontent.com/kosukeimai/qss/master/MEASUREMENT/congress.csv')

fig = go.Figure(data=congress_go_scatter_median_lines(df_congress, "Democrat", 'congress','dwnom1', "民主党"))
fig.add_trace(congress_go_scatter_median_lines(df_congress,"Republican", 'congress','dwnom1', "共和党"))
fig.update_xaxes(title_text="議会会期", range=[80, 115])
fig.update_yaxes(title_text="経済的リベラル/保守", range=[-1, 1])
fig.show()

まとめ

本記事では、Pandas の DataFrame をインプット情報として plotly で中央値の時系列の推移を比較するメソッドを紹介しました。

データ分析に関して、一つ一つ丁寧に確認したい方は下記記事をご覧ください。

合わせて下記もご参考ください。

ご参考になりましたら twitter をフォローして SNS でシェアして頂ければ幸いです。

広告_零号機-エリア2
kewton

kewton

大学院卒業後、某大手SIerで10年以上SEとして従事。
社会人3年目までに基本情報・応用情報技術者、データベーススペシャリスト、簿記3級・2級を取得。
基幹系システム・IoTシステム開発のプロジェクト経験多数。AI活用システムの企画・プロト開発経験あり。
強みは、プロマネだけでなく自身で開発も実施してきたこと。
【扱える言語】
C#、java、python、javascript、Excel VBA
【扱えるDB】
oracle、sql server、postgreSQL、mongoDB

FOLLOW

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA