titanite.analysis#
Module Contents#
Classes#
データとグラフ |
Functions#
内訳を集計 |
|
Parse comment data. |
|
アンケートの回答状況 |
|
データフレームをグループ化 |
|
groupbyで集計したデータをヒストグラムにする |
|
Create grouped histogram for a single (x, color) pair. |
|
Create grouped histograms for all (x, color) pairs in headers. |
|
Compute cross-tabulation and chi-square test, then build a heatmap. |
|
クロス集計とカイ二乗検定 |
|
クロス集計のヒートマップを作成 |
|
クロス集計のループ |
Data#
Columns & Titles |
API#
- titanite.analysis.TITLES#
None
Columns & Titles
- 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: strX軸に設定するカラム名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)と、 検定の結果(statistic、pvalue、dof、expected)を返します。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