迷走ブログ

ファウスト的衝動を抱き、迷走している、凡人による気まぐれブログです。

【python】石油小売価格の変動を可視化してみた

はじめに

今回は日本における石油小売価格について、1990年から現在(2021年)までの政府が発表している資料をもとに可視化してみました。

結論

リーマンショック前の価格高騰とリーマンショック後の価格低下が著しい。
コロナショック後の価格低下はあるが、リーマンショック後ほどの著しい低下をもたらしているとまでは言えない?
f:id:yktmmrmtoosa03:20210929132054j:plain
f:id:yktmmrmtoosa03:20210929132102j:plain

使用したデータについて

今回使用したデータは、経済産業省エネルギー庁が集計している「石油製品価格調査」の「給油所小売価格調査(ガソリン、軽油、灯油)」に関する統計データを使用しています。
調査の結果|石油製品価格調査|資源エネルギー庁

コード

# 必要になりそうなものを呼び出す
import pandas as pd
import plotly.express as px

まずは必要となりそうなモジュールを呼び出しています。pandas はデータの加工のために使用します。plotlyは可視化するために使用する予定です。

matplotlibを使用していない理由は、iPad上にてjupyter notebookを動かしているのですが、使用しているアプリがjapanize-matplotlibに対応していないためです。

そのため、日本語の文字化け回避方法として、直接日本語に対応しているフォントを指定して呼び出さないといけないのですが、そのフォントがiPad上にインストールされている(ここではjunoのアプリに対応している)ものとして、どれなのかわからないので、諦めました。

ググると、font_managerを呼び出して、日本語に対応しているものを表示できるようでそれを試したのですが、僕のiPadはなぜか以下のものしかフォントが表示されず、困惑しています。訳がわからんのです。。。
f:id:yktmmrmtoosa03:20210928232503j:plain

ハイオクの価格について

df = pd.read_excel('s.xls',encoding="utf-8")
df.head(5)

f:id:yktmmrmtoosa03:20210928233132j:plain
とりあえず、ダウンロードした統計データを呼び出しています。「utf-8」の形式で呼び出しているのですが、これを記載しなくても問題ない?ようですが、一応指定しています。

読み込んだデータを見ると、「〇〇局」と「全国」平均値と「調査日」という項目は要素が埋まっている可能性が高そうです。

df[['全         国','関  東  局','近  畿  局']].describe().round(1)

f:id:yktmmrmtoosa03:20210929165020j:plain
本来であれば、欠損値が含まれているかどうかをチェックし、場合によっては値を穴埋めする必要があるのですが、今回は調べたい列である「全国」平均値と「関東局」と「近畿局」に関しては問題なさそうです。

基本統計量を確認してみると、まず、1990年から現在(2021)までの1リットルあたりのハイオクの平均金額は、139円ほどであるようですね。
正直、車に乗らないので感覚がわからないです。
そもそも今回調べるまで、ハイオクとレギュラーの違いも知らなかったです。

全国の中央値は140.4のようです。
最高価格は196円のようです。

fig = px.line(df,x='調査日',y=['全         国','関  東  局','近  畿  局'],title='ハイオク価格の変動')
fig.show()

f:id:yktmmrmtoosa03:20210929001451j:plain

レギュラーの価格について

df2 = pd.read_excel('s.xls',sheet_name='レギュラー',encoding="utf-8")
df2.head()

f:id:yktmmrmtoosa03:20210929002034j:plain
ハイオクの時のコードとほぼ同じです。
異なるのは、シート名を指定していることくらいです。

df2[['全         国','関  東  局','近  畿  局']].describe().round(1)

f:id:yktmmrmtoosa03:20210929002319j:plain
レギュラーの全国平均は、126円前後らしいです。
また、最高価格は、185円前後のようです。

fig2 = px.line(df2,x='調査日',y=['全         国','関  東  局','近  畿  局'],title='レギュラー価格の変動')
fig2.show()

f:id:yktmmrmtoosa03:20210929002649j:plain
・・・・・・はい。

おわりに

pythonの勉強を頑張るしかない!
俺の戦いはこれからだっ!!!