titanite.analysis#

Module Contents#

Classes#

ResultManager

データとグラフ

Functions#

breakdowns

内訳を集計

comment_data

Parse comment data.

response

アンケートの回答状況

group_data

データフレームをグループ化

group_hbar

groupbyで集計したデータをヒストグラムにする

hbar

Create grouped histogram for a single (x, color) pair.

hbar_loop

Create grouped histograms for all (x, color) pairs in headers.

crosstab

Compute cross-tabulation and chi-square test, then build a heatmap.

crosstab_data

クロス集計とカイ二乗検定

crosstab_heatmap

クロス集計のヒートマップを作成

crosstab_loop

クロス集計のループ

Data#

TITLES

Columns & Titles

API#

titanite.analysis.TITLES#

None

Columns & Titles

class titanite.analysis.ResultManager#

データとグラフ

data: pandas.DataFrame#

None

graph: Any#

None

titanite.analysis.breakdowns(data: pandas.DataFrame, names: list[str], sort: bool = False, width: int = 1000, height: int = 600) titanite.analysis.ResultManager#

内訳を集計

Args:
  • data (pd.DataFrame): 全体のデータフレーム

  • names (list[str]): 内訳集計するカラム名

  • sort (bool, optional): 集計結果をソート(合計が大きい順). Defaults to False.

Returns: - ResultManager: データとグラフ

titanite.analysis.comment_data(data: pandas.DataFrame) dict[str, pandas.DataFrame]#

Parse comment data.

Extracts free-text responses from q15, q16, q18, q20, q21, and q22, dropping rows with no answer. Each question’s comments are returned as a separate DataFrame that includes demographic cluster columns and the corresponding sentiment and translation columns.

Parameters

data : pd.DataFrame preprocessed survey DataFrame containing free-text and sentiment columns

Returns

dict[str, pd.DataFrame] mapping from question name (e.g. “q15”) to DataFrame of non-null responses

titanite.analysis.response(data: pandas.DataFrame) altair.LayerChart#

アンケートの回答状況

アンケートの回答日時を使って、日時と時刻のヒートマップを作成します。 関係するメールを送った反応があったかどうかを調べることができます。 (回答日時は日本時間(UTC+0900)で保存されているようです)

Parameters

data : pd.DataFrame 前処理したデータフレーム

Returns

alt.LayerChart 回答状況のヒートマップ

titanite.analysis.group_data(data: pandas.DataFrame, x: str, color: str) pandas.DataFrame#

データフレームをグループ化

Parameters

  • data : pd.DataFrame 前処理済みのデータフレーム

  • x: str X軸に設定するカラム名

  • color: str 色のグループ化に設定するカラム名

Returns

  • pd.DataFrame グループ化したデータフレーム

titanite.analysis.group_hbar(data: pandas.DataFrame, x: str, color: str, title: str, y: str = 'response')#

groupbyで集計したデータをヒストグラムにする

ヒストグラムは、積み上げ棒グラフと、割合グラフの2種類作成します。 割合グラフには、回答数をテキストでオーバーレイ表示します。 Jupyter Notebookで開く場合、受け取ったLayeredChartをinteractiveすることで、 tooltipをホバー表示できます。

Parameters

data : pd.DataFrame grouped DataFrame produced by group_data(), with columns for x, color, and y x : str X軸に設定するカラム名 color : str 色のグループ化に設定するカラム名 title : str プロットのタイトル y : str, optional Y軸に設定するカラム名, by default “response” or “count()”

Returns

tuple[alt.Chart, alt.LayerChart] a tuple of (mark, stack + text) where mark is a stacked bar chart and stack + text is a normalized bar chart with count annotations overlaid

titanite.analysis.hbar(data: pandas.DataFrame, x: str, color: str, title: str)#

Create grouped histogram for a single (x, color) pair.

Parameters

data : pd.DataFrame preprocessed survey DataFrame x : str column name to use as the x-axis color : str column name to use for color grouping title : str chart title

Returns

tuple[pd.DataFrame, alt.LayerChart] a tuple of (grouped, histograms) where grouped is the aggregated DataFrame and histograms is a side-by-side Altair chart (stacked | normalized)

titanite.analysis.hbar_loop(data: pandas.DataFrame, headers: list)#

Create grouped histograms for all (x, color) pairs in headers.

Parameters

data : pd.DataFrame preprocessed survey DataFrame headers : list list of (x, color) tuples specifying column pairs to plot

Returns

tuple[dict[str, pd.DataFrame], dict[str, alt.LayerChart]] a tuple of (grouped_data, hbars_data) where each dict maps “x-color” pair names to the corresponding grouped DataFrame or chart

titanite.analysis.crosstab(data: pandas.DataFrame, x: str, y: str)#

Compute cross-tabulation and chi-square test, then build a heatmap.

Parameters

data : pd.DataFrame preprocessed survey DataFrame x : str column name for the x-axis (rows in cross-tabulation) y : str column name for the y-axis (columns in cross-tabulation)

Returns

tuple[pd.DataFrame, scipy.stats.Chi2ContingencyResult, alt.LayerChart] a tuple of (cross_tab, chi2_test, chart) where cross_tab is the contingency table, chi2_test is the scipy result object, and chart is an Altair heatmap with count annotations

titanite.analysis.crosstab_data(data: pandas.DataFrame, x: str, y: str)#

クロス集計とカイ二乗検定

カラムXとカラムYの2つの離散変数に対して、 pd.crosstab(index, columns)でクロス集計し、 scipy.stats.chi2_contingency(observed)で (ピアソンの)カイ二乗検定します。

カイ二乗検定はデフォルトでcorrection=Trueとなっていて、 自由度が1のとき、Yates’の連続補正がかかります。 これは集計数が少ないときにp値を大きくするための補正です。

クロス集計したデータフレーム(cross_tab)と、 検定の結果(statisticpvaluedofexpected)を返します。

Parameters

data : pd.DataFrame 前処理済のデータフレーム x : str 集計するカラム名(X軸) y : str 集計するカラム名(Y軸)

Returns

tuple[pd.DataFrame, scipy.stats.Chi2ContingencyResult] a tuple of (cross_tab, chi2_test) where cross_tab is the contingency table DataFrame and chi2_test contains statistic, pvalue, dof, and expected_freq attributes

titanite.analysis.crosstab_heatmap(data: pandas.DataFrame, x: str, y: str, z: str) altair.LayerChart#

クロス集計のヒートマップを作成

入力データは、クロス集計表をロングデータに変換したものを与えてください。 クロス集計表をヒートマップ(mark_rect)に描いた上に、 頻度をテキスト表示(mark_text)をしたaltair.LayerChartを返します。

プロットサイズはデフォルトで800x800にしていますが、 受け取ったあとに自由に変更してください。

Parameters

data : pd.DataFrame クロス集計したデータフレーム x : str 集計結果のカラム名(X軸) y : str 集計結果のカラム名(Y軸) z : str 集計結果のカラム名(Z軸・カラー)

Returns

alt.LayerChart 集計結果のヒートマップ

titanite.analysis.crosstab_loop(data: pandas.DataFrame, headers: list)#

クロス集計のループ

集計したい離散変数(カラムXとカラムYのペア)のリストを与えて、 一括してクロス集計とカイ二乗検定した結果を返します。

Parameters

data : pd.DataFrame 前処理済みのデータフレーム headers : list カラム名のペアのリスト

Returns

tuple[dict[str, pd.DataFrame], dict[str, alt.LayerChart], pd.DataFrame] a tuple of (cross_tabs, heatmaps, chi2_data) where cross_tabs maps pair names to contingency tables, heatmaps maps pair names to Altair heatmap charts, and chi2_data is a DataFrame of chi-square test statistics for all pairs