本ページには広告・プロモーションが含まれています。
クロス集計とは 複数の項目(変数)を掛けあわせて集計する 手法です。分割表とも言います。
ナンバーズでは例えば、単純な 度数分布表 では抽せん数字の当せん回数を数え上げるだけだったが、 クロス集計では「抽せん数字の曜日別の当せん回数」、「抽せん数字の日付別の当せん回数」といった具合に 項目を掛けあわせた分析に使います。
クロス集計表の特徴そのままで、複数の項目の関係を分析するために利用します。
100の位と10の位について、数字が同時に出現した回数を求めます。
「100の位に 0 が出現したとき、10の位で 9 が出現した回数は?」というのを分析します。
第1回から第4170回の抽せん数字で集計してみた結果が下記になります。
python のプログラムは 前準備 で用意したデータフレームを使っています。
crosstab2 = pd.crosstab(df.place100, df.place10)
crosstab2
# crosstab2 の内容
place10 0 1 2 3 4 5 6 7 8 9
place100
0 35 37 32 40 49 35 42 37 39 43
1 37 37 34 36 34 40 53 43 44 62
2 38 38 53 58 32 41 41 48 35 39
3 54 45 28 46 35 44 42 41 39 36
4 50 38 51 41 43 41 42 32 32 42
5 34 33 37 48 33 46 35 38 48 38
6 39 60 39 45 45 33 38 54 33 43
7 42 39 48 37 40 38 34 33 45 46
8 50 50 49 46 37 49 38 39 44 44
9 41 44 55 41 53 48 36 52 32 47
place10 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
place100 | ||||||||||
0 | 35 | 37 | 32 | 40 | 49 | 35 | 42 | 37 | 39 | 43 |
1 | 37 | 37 | 34 | 36 | 34 | 40 | 53 | 43 | 44 | 62 |
2 | 38 | 38 | 53 | 58 | 32 | 41 | 41 | 48 | 35 | 39 |
3 | 54 | 45 | 28 | 46 | 35 | 44 | 42 | 41 | 39 | 36 |
4 | 50 | 38 | 51 | 41 | 43 | 41 | 42 | 32 | 32 | 42 |
5 | 34 | 33 | 37 | 48 | 33 | 46 | 35 | 38 | 48 | 38 |
6 | 39 | 60 | 39 | 45 | 45 | 33 | 38 | 54 | 33 | 43 |
7 | 42 | 39 | 48 | 37 | 40 | 38 | 34 | 33 | 45 | 46 |
8 | 50 | 50 | 49 | 46 | 37 | 49 | 38 | 39 | 44 | 44 |
9 | 41 | 44 | 55 | 41 | 53 | 48 | 36 | 52 | 32 | 47 |
上の表は「100の位に 6 が出現したとき、10の位で 1 が出現したのは 60回」と読み取ります。
数字の羅列では大小の関係を把握しにくいので棒グラフを作成してみます。
# 横棒グラフ
crosstab2_graph = crosstab2.plot(kind='barh', figsize=(10, 10), rot=1, fontsize=8, title='100の位と10の位クロス集計 数字別出現回数 (第1回から第4170回)')
crosstab2_graph.invert_yaxis() # Y軸を反転
crosstab2_graph.tick_params(labelsize='large')
crosstab2_graph.set_xlabel('place10 の度数')
グラフを描くことで
といったことが視覚的に把握できます。
3つの変数のクロス集計もやってみます。
月と曜日の組み合わせから、100の位の数字について出現回数を求めます。
「2月の金曜日に、100の位で最も当せんしている数字は何か?」というのを分析できるようになります。
第1回から第4163回の抽せん数字で集計してみた結果が下記になります。
df['month'] = df['date'].apply(lambda x: pd.to_datetime(x).month) # 月のデータを追加
crosstab3 = pd.crosstab([df.month, df.dayofweek], df.place100)
crosstab3.head(10)
# crosstab3 の内容 (データ量が多いので先頭の10行だけ表示してます)
place100 0 1 2 3 4 5 6 7 8 9
month dayofweek
1 月 12 7 6 5 5 5 3 9 10 10
木 2 2 6 4 6 4 4 6 6 4
水 7 8 11 5 7 10 5 6 5 9
火 4 3 4 4 7 11 7 6 8 2
金 11 4 12 6 8 10 6 10 5 11
2 月 9 5 6 5 13 5 8 9 4 8
木 5 2 4 8 2 5 4 7 4 3
水 6 10 11 8 2 8 2 10 9 7
火 7 7 5 8 6 4 6 3 5 5
金 14 10 7 3 11 8 8 6 7 11
クロス集計結果の分割表は下表のようになります。 (曜日がカレンダーのように月から金に並んでいないことに注意。)
「2月の金曜日に、100の位で最も当せんしている数字は」「14回出現している 0 」であることがわかります。
place100 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|---|
month | dayofweek | ||||||||||
1 | 月 | 12 | 7 | 6 | 5 | 5 | 5 | 3 | 9 | 10 | 10 |
木 | 2 | 2 | 6 | 4 | 6 | 4 | 4 | 6 | 6 | 4 | |
水 | 7 | 8 | 11 | 5 | 7 | 10 | 5 | 6 | 5 | 9 | |
火 | 4 | 3 | 4 | 4 | 7 | 11 | 7 | 6 | 8 | 2 | |
金 | 11 | 4 | 12 | 6 | 8 | 10 | 6 | 10 | 5 | 11 | |
2 | 月 | 9 | 5 | 6 | 5 | 13 | 5 | 8 | 9 | 4 | 8 |
木 | 5 | 2 | 4 | 8 | 2 | 5 | 4 | 7 | 4 | 3 | |
水 | 6 | 10 | 11 | 8 | 2 | 8 | 2 | 10 | 9 | 7 | |
火 | 7 | 7 | 5 | 8 | 6 | 4 | 6 | 3 | 5 | 5 | |
金 | 14 | 10 | 7 | 3 | 11 | 8 | 8 | 6 | 7 | 11 | |
3 | 月 | 10 | 10 | 9 | 5 | 7 | 5 | 11 | 10 | 7 | 7 |
木 | 4 | 3 | 4 | 6 | 3 | 8 | 5 | 5 | 4 | 7 | |
水 | 8 | 5 | 8 | 5 | 7 | 13 | 9 | 9 | 5 | 10 | |
火 | 7 | 5 | 4 | 5 | 11 | 2 | 8 | 6 | 8 | 5 | |
金 | 7 | 10 | 10 | 9 | 9 | 6 | 10 | 9 | 12 | 11 | |
4 | 月 | 7 | 10 | 7 | 2 | 10 | 10 | 11 | 10 | 3 | 7 |
木 | 4 | 5 | 5 | 6 | 4 | 5 | 2 | 2 | 8 | 6 | |
水 | 6 | 10 | 7 | 8 | 11 | 7 | 8 | 7 | 6 | 8 | |
火 | 5 | 8 | 9 | 8 | 7 | 6 | 5 | 7 | 1 | 5 | |
金 | 7 | 13 | 9 | 12 | 7 | 6 | 11 | 4 | 9 | 11 | |
5 | 月 | 6 | 3 | 5 | 9 | 8 | 5 | 12 | 7 | 13 | 11 |
木 | 3 | 6 | 4 | 7 | 3 | 6 | 2 | 3 | 6 | 9 | |
水 | 11 | 7 | 8 | 8 | 10 | 6 | 9 | 3 | 8 | 9 | |
火 | 3 | 6 | 7 | 4 | 7 | 2 | 5 | 8 | 12 | 8 | |
金 | 8 | 9 | 12 | 10 | 8 | 9 | 4 | 15 | 7 | 12 | |
6 | 月 | 9 | 4 | 9 | 7 | 11 | 4 | 10 | 9 | 7 | 6 |
木 | 4 | 7 | 3 | 7 | 6 | 4 | 2 | 6 | 6 | 1 | |
水 | 8 | 4 | 10 | 8 | 11 | 6 | 6 | 9 | 4 | 10 | |
火 | 6 | 7 | 3 | 5 | 3 | 9 | 8 | 3 | 8 | 5 | |
金 | 10 | 5 | 14 | 7 | 8 | 10 | 10 | 10 | 8 | 7 | |
7 | 月 | 7 | 7 | 8 | 6 | 8 | 7 | 6 | 6 | 10 | 10 |
木 | 7 | 5 | 3 | 3 | 2 | 6 | 7 | 6 | 6 | 4 | |
水 | 5 | 5 | 6 | 13 | 6 | 5 | 5 | 12 | 9 | 9 | |
火 | 3 | 8 | 8 | 7 | 3 | 7 | 4 | 4 | 11 | 8 | |
金 | 4 | 7 | 7 | 11 | 13 | 13 | 11 | 6 | 11 | 4 | |
8 | 月 | 10 | 7 | 11 | 7 | 8 | 7 | 7 | 6 | 6 | 6 |
木 | 1 | 4 | 5 | 6 | 5 | 5 | 6 | 1 | 8 | 7 | |
水 | 10 | 8 | 3 | 4 | 3 | 4 | 12 | 8 | 10 | 13 | |
火 | 5 | 4 | 8 | 6 | 11 | 6 | 6 | 6 | 3 | 7 | |
金 | 9 | 14 | 7 | 12 | 1 | 9 | 8 | 6 | 10 | 14 | |
9 | 月 | 3 | 13 | 5 | 10 | 7 | 9 | 3 | 8 | 4 | 11 |
木 | 2 | 6 | 3 | 1 | 9 | 9 | 6 | 3 | 6 | 3 | |
水 | 6 | 8 | 8 | 4 | 8 | 8 | 7 | 5 | 9 | 10 | |
火 | 5 | 11 | 9 | 7 | 4 | 0 | 6 | 9 | 7 | 2 | |
金 | 10 | 7 | 7 | 5 | 7 | 4 | 15 | 7 | 13 | 10 | |
10 | 月 | 4 | 6 | 6 | 12 | 13 | 10 | 11 | 4 | 8 | 5 |
木 | 4 | 9 | 1 | 4 | 4 | 4 | 6 | 5 | 7 | 4 | |
水 | 8 | 5 | 16 | 9 | 8 | 2 | 4 | 5 | 12 | 11 | |
火 | 4 | 9 | 7 | 5 | 6 | 4 | 4 | 5 | 7 | 7 | |
金 | 1 | 13 | 12 | 6 | 11 | 4 | 11 | 11 | 13 | 11 | |
11 | 月 | 10 | 6 | 7 | 6 | 4 | 7 | 14 | 9 | 5 | 9 |
木 | 5 | 1 | 4 | 4 | 4 | 4 | 9 | 3 | 4 | 9 | |
水 | 10 | 13 | 9 | 10 | 5 | 6 | 5 | 7 | 9 | 2 | |
火 | 4 | 9 | 1 | 6 | 2 | 3 | 9 | 9 | 8 | 5 | |
金 | 9 | 3 | 7 | 11 | 10 | 10 | 12 | 10 | 8 | 10 | |
12 | 月 | 8 | 8 | 3 | 8 | 12 | 11 | 8 | 5 | 7 | 8 |
木 | 6 | 7 | 2 | 7 | 3 | 4 | 6 | 3 | 5 | 5 | |
水 | 8 | 7 | 9 | 11 | 5 | 8 | 9 | 5 | 8 | 7 | |
火 | 4 | 5 | 4 | 5 | 5 | 6 | 7 | 8 | 7 | 4 | |
金 | 7 | 10 | 18 | 10 | 7 | 9 | 4 | 6 | 10 | 9 |
最終更新日: 2020年01月08日(水)