ITいろいろ

プログラミングやクラウド、データ解析など、ITにかかわることをいろいろと書いています。

Pandasを使ってExcelデータを取り込み&データベース化

データ分析をする時にもPythonは便利です。

Excelでできるようにフィルタ、ソートなどの整形、グラフ化だけでなく、機械学習などの応用もできますし、Excelで取り扱えない100万行以上のビッグデータの解析にも活用できます。

使用するデータ

総務省統計局が出している人口推計のデータを使用します。

2022年6月のデータは以下からダウンロードできます。

人口推計 各月1日現在人口 月次 2022年6月 | ファイル | 統計データを探す | 政府統計の総合窓口

ソースコード紹介

# パッケージのインストール(初回のみ)
!pip install pandas     # データの取り込み、整形などができるパッケージ
!pip install openpyxl   # Excelの取り込みに必要

# インポート
import pandas as pd

# ファイルの取り込み
# skiprows: 初めの行を指定された数だけ取り除く
# skipfooter: 最後の行を指定された数だけ取り除く
# header: 列名とする行番号。デフォルトが0なので省略可。列名がない場合はNoneにする
# usecols: 取り込む列A列からH列とI列を取り込む。デフォルトでは自動ですべての列を取得するため、こちらも省略可。
df = pd.read_excel("05k2-3.xlsx", skiprows=3, skipfooter=3, header=0, sheet_name="05k2-3", usecols="A:H,I")

# ファイルの書き出し
df.to_excel('result.xlsx')

# 結果の表示
df

結果

コンソール

result.xlsx

少し解説

read_excel()

この人口推計のデータ、少しクセがあります。

はじめ3行に表の説明が書かれています。

最後の3行も注意書きがあります。

こういったデータは分析するときに邪魔になります。

read_excel関数の引数をうまく使えば、たった1行で取り込む際にこういった余計なデータを削除して分析用のデータに整形することができます。

それぞれの引数はコードのコメントアウトに書いていますので、そちらを参照ください。

read_csv()

read_excelの代わりにread_csvを使うと、CSVデータの取り込みも可能です。

ただ、python usecols="A:H,I"のようにアルファベットの列番号を使うことができないため、python usecols=[0,1,2,3,4]のように数字の列番号を使用します。(範囲指定ができないのが少しネック)