pandasでdbfを読み込む

pandasでdbfを読み込みを実装します.

# ファイル構成

diablos_gan
├── /data/miyagi_pop/
│   ├── h27ka04.dbf
│   └── (省略)
├── ipag.ttf
└── pandas_dbf.ipynb <- 実行用ノートブック

# ライブラリのインストール

下記のコードでライブラリをインストールします.

!pip install simpledbf

# データのダウンロード

下記のサイトから宮城県 国勢調査(shpファイル)をダウンロードします。

e-stat 宮城県 国勢調査 (opens new window)

# pandasでdbfを読み込む

# pandasでdbfを読み込む

import pandas as pd
from simpledbf import Dbf5

# dbfの読み込み
dbf_pop = Dbf5('./data/miyagi_pop/h27ka04.dbf', codec='SJIS')
df_pop = dbf_pop.to_dataframe()
display(df_pop.head())

# 人口の可視化

import matplotlib
import matplotlib.pyplot as plt
from matplotlib import font_manager
from matplotlib.ticker import ScalarFormatter

# 日本語のフォント設定
f = "ipag.ttf"
font_manager.fontManager.addfont(f) # フォントの追加
font_name = plt.matplotlib.font_manager.FontProperties(fname = f).get_name() # 追加フォント名
matplotlib.rc('font', family=font_name) # 追加フォントの設定

# GST_NAME別で集計
# GST_NAME:郡市・特別区・政令指定都市名
df_pop_sum = df_pop.groupby('GST_NAME').sum()
# JINKO(人口)でソートしプロット
ax = df_pop_sum.sort_values(by = 'JINKO', ascending = False).plot(kind='bar', y = 'JINKO', figsize = (25,10), fontsize = 20)

# 判例
plt.legend(loc='upper right', fontsize=20)
# x軸のラベル
plt.xlabel("市町村郡", fontsize=20)
# y軸のラベル
plt.ylabel("人口(百万人)", fontsize=20)
# y軸べき数
ax.yaxis.set_major_formatter(ScalarFormatter(useMathText=True))
ax.ticklabel_format(style="sci", axis="y", scilimits=(6, 6))
ax.yaxis.offsetText.set_fontsize(20)

# まとめ

pandasでdbfを読み込みを実装しました.

# 参考サイト

e-stat 宮城県 国勢調査 (opens new window)

foliumで特定座標の位置を把握する

foliumで特定座標の位置を把握する

foliumで特定座標の位置を把握します。

pandasのクロス集計を実行する

pandasのクロス集計を実行する

pandasのクロス集計を実行します。