【Python】基本統計量と相関係数を出力する

Python

処理概要

手元にあるエクセルのデータなどから基本統計量と相関係数を出力するためのサンプルコード。 手軽にデータの概要や傾向を見たい時に利用する。


入力データ

input.tsv

  • エクセルなどからコピーして作ったTSVファイルを使用することを想定したサンプルデータ
  • 列名の先頭に「★」をつけた列はダミー変数化処理の対象となる
    • テキストデータをそのまま処理することができないため、事前処理対象の目印としている
★店舗名 売り上げ 経費
新宿 1000 500
渋谷 1500 700
虎ノ門 780 200

出力データ

下記の3ファイルが出力される

  • 基本統計量.xlsx
  • 相関係数.xlsx
  • 相関係数.png

コード

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib
import seaborn as sns

print('>>> 処理開始')

# TSVファイルを読み込む
df = pd.read_csv('input.tsv', sep='\t')

# ★から始まる列をダミー変数化する
columns = df.columns

for col in df.columns:
    if col.startswith('★'):
        df = pd.get_dummies(df, columns=[col])

print('>>> データ出力中・・・')

# 基本統計量をエクセルに出力する
df.describe().to_excel('基本統計量.xlsx')

# 相関係数を変数に格納する
cor = df.corr()

# 相関係数をエクセルに出力する
cor.to_excel('相関係数.xlsx')

# 相関係数のヒートマップを変数に格納する
heatmap = sns.heatmap(cor, cmap=sns.color_palette('Blues', 20), annot=True, fmt='.2f', vmin=-1, vmax=1)

# ヒートマップを出力する
plt.savefig('相関係数.png', bbox_inches='tight')

print('>>> 処理終了')

実行結果

基本統計量.xlsx

相関係数.xlsx

相関係数.png

Python

Posted by junichi