Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

データの可視化

チャートの選び方

よく言われる注意点

  • 円グラフは極力使わず、比率は帯グラフで表す(円は各カテゴリの大小がわかりにくい)

A friendly guide to choosing a chart type | Datawrapper Blog

pandasのTIPS

import pandas as pd
import numpy as np

# サンプルデータ
np.random.seed(0)
df = pd.DataFrame({"A": np.random.poisson(lam=10, size=5), "B": np.random.randn(5)})

小数点の丸め込み

df.style.format(precision=3, thousands=",", decimal=".")
Loading...
# 列ごとに指定したい場合
df.style.format({"A": "{:.1f}", "B": "{:.1%}"})
Loading...
info - Unknown Directive
style.formatは追加のパッケージが必要になる。  
pandasのみで使えるのは .apply() と 標準の文字整形メソッド `str.format` を使うもの
df["B"].apply("{:.1%}".format)
0 14.4% 1 145.4% 2 76.1% 3 12.2% 4 44.4% Name: B, dtype: object
# dictに指定しなかった列は含まれないので注意
df.apply({"A": "{:.1f}".format, "B": "{:.1%}".format})
Loading...

値の大きさに応じた色を塗る

import seaborn as sns
cm = sns.light_palette("green", as_cmap=True)

df.style.background_gradient(cmap=cm)

棒グラフを作る

df.style.bar(subset=["A", "B"], color='#d65f5f')
Loading...

great_tablesパッケージできれいな表を作る

Examples – great_tables

論文のような簡潔な表や、アイコンや色を使ったカジュアルな表などいろいろ作れる

Source
from great_tables import GT, html
from great_tables.data import airquality

airquality_m = airquality.head(5).assign(Year=1973)

gt_airquality = (
    GT(airquality_m)
    .tab_header(
        title="New York Air Quality Measurements",
        subtitle="Daily measurements in New York City (May 1-10, 1973)",
    )
    .tab_spanner(label="Time", columns=["Year", "Month", "Day"])
    .tab_spanner(label="Measurement", columns=["Ozone", "Solar_R", "Wind", "Temp"])
    .cols_move_to_start(columns=["Year", "Month", "Day"])
    .cols_label(
        Ozone=html("Ozone,<br>ppbV"),
        Solar_R=html("Solar R.,<br>cal/m<sup>2</sup>"),
        Wind=html("Wind,<br>mph"),
        Temp=html("Temp,<br>&deg;F"),
    )
)

gt_airquality
Loading...

matplotlibのTIPS

autofmt_xdate():日付ラベルを整える

日付ラベルが重なりそうなら傾きをつけてくれる

matplotlib.figure.Figure.autofmt_xdate — Matplotlib 3.9.2 documentation

import matplotlib.pyplot as plt
import pandas as pd

dates = pd.date_range('2023-10-01', periods=10, freq='D')
values = [5, 3, 4, 6, 7, 2, 8, 5, 6, 7]

fig, ax = plt.subplots()
ax.plot(dates, values)
fig.autofmt_xdate(rotation=45, ha='right')
plt.show()
<Figure size 640x480 with 1 Axes>