クロス集計とは

クロス集計とは 複数の項目(変数)を掛けあわせて集計する 手法。分割表とも言う。

ナンバーズでは例えば、曜日と抽せん数字、日付と抽せん数字を掛けあわせるような分析に使える。

ナンバーズの予想に使うには

クロス集計表の特徴そのままで、複数の項目の関係を分析するために利用する。

クロス集計の例 (2つの変数を掛けあわせる)

100の位と10の位について数字が同時に出現した回数を求める。

「100の位に 0 が出現したとき、10の位で 9 が出現した回数は?」というのを分析する。

第1回から第4163回の抽せん数字で集計してみた。

crosstab2 = df.loc[1:4163].pivot_table(index='place100', columns='place10', values='winning', aggfunc=np.size)
crosstab2['max'] = crosstab2.max(axis=1)
crosstab2
# crosstab2 の内容
place10    0   1   2   3   4   5   6   7   8   9  max
place100
0         35  37  32  40  49  35  42  37  39  43   49
1         37  37  34  36  34  40  53  43  44  62   62
2         38  38  53  58  32  40  41  48  35  39   58
3         54  44  28  46  35  44  42  41  39  36   54
4         49  38  51  41  43  40  42  32  32  42   51
5         34  33  37  48  32  46  35  38  47  38   48
6         39  60  39  45  45  33  38  54  33  42   60
7         42  39  48  37  40  38  34  33  45  46   48
8         50  50  49  46  37  49  38  39  44  44   50
9         41  44  55  41  53  48  36  52  32  47   55

掛けあわせた集計の結果がわかりやすいように行ごとに max (最大値) を列に足している。


第1回から第4163回: 100の位と10の位の抽せん数字 クロス集計
10の位 抽せん数字 0 1 2 3 4 5 6 7 8 9 (最大値)
100の位 抽せん数字
0 35 37 32 40 49 35 42 37 39 43 49
1 37 37 34 36 34 40 53 43 44 62 62
2 38 38 53 58 32 40 41 48 35 39 58
3 54 44 28 46 35 44 42 41 39 36 54
4 49 38 51 41 43 40 42 32 32 42 51
5 34 33 37 48 32 46 35 38 47 38 48
6 39 60 39 45 45 33 38 54 33 42 60
7 42 39 48 37 40 38 34 33 45 46 48
8 50 50 49 46 37 49 38 39 44 44 50
9 41 44 55 41 53 48 36 52 32 47 55

上の表は「100の位に 6 が出現したとき、10の位で 1 が出現したのは 60回」と読み取る。

エクセルでは ピボットテーブル という機能を使うと簡単にクロス集計表を作成することができる。

数字の羅列では大小の関係を把握しにくいので棒グラフを作成。

del crosstab2['max'] # 最大値の列を消しておく

# 横棒グラフ
ax = crosstab2.plot(kind='barh', fontsize=8, title=u'100の位と10の位クロス集計 数字別出現回数 (第1回から第4163回)')
# 軸を反転する
ax.invert_yaxis()
# 表示
plt.show()
100の位と10の位のクロス集計棒グラフ


グラフを描くことで

  • 100の位が 1 のときは 10の位で 9 がよく出ている
  • 100の位が 3 のときは 10の位で 2 が出現する回数は少ない

といったことが視覚的に把握できる。

クロス集計の例 (3つの変数を掛けあわせる)

3つの変数のクロス集計もやってみる。

月と曜日の組み合わせから、100の位の数字について出現回数を求める。

「2月の金曜日に、100の位で最も当せんしている数字は何か?」というのを分析できる。

第1回から第4163回の抽せん数字で集計してみた。

df = df.loc[1:4163]
df['month'] = df['date'].apply(lambda x: pd.to_datetime(x).month)
crosstab3 = df.pivot_table(index=['month', 'dayofweek'], columns='place100', values='winning', aggfunc=np.size)
# pd.crosstab を使う方法
# crosstab3 = pd.crosstab([df.month, df.dayofweek], df.place100, aggfunc=np.size)
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 」であることがわかる。

第1回から第4163回: 月、曜日、100の位のクロス集計
100の位の数字 0 1 2 3 4 5 6 7 8 9
曜日
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 9 9 7 6
4 7 3 6 5 4 2 6 6 1
8 4 10 8 10 6 6 9 4 10
6 7 3 5 3 8 8 3 8 5
10 5 13 7 8 9 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

最終更新日: 2016年08月20日(土)


Back to top