當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python SciPy contingency.crosstab用法及代碼示例

本文簡要介紹 python 語言中 scipy.stats.contingency.crosstab 的用法。

用法:

scipy.stats.contingency.crosstab(*args, levels=None, sparse=False)#

返回 *args 中每個可能的唯一組合的計數表。

什麽時候len(args) > 1,這個函數計算的數組通常被稱為列聯表 [1].

參數必須是具有相同長度的序列。第二個返回值,數數, 是一個整數數組len(args)方麵。如果水平是無,形狀數數(n0, n1, ...),其中nk是唯一元素的數量args[k].

參數

*args 序列

要計算其唯一對齊元素的序列序列。 args 中的序列必須全部具有相同的長度。

levels 順序,可選

如果水平給定,它必須是一個長度相同的序列參數.中的每個元素水平是序列或無。如果是序列,則給出對應序列中的值參數要計算的。如果序列中的任何值參數不會出現在相應的序列中水平,該值被忽略且不計入返回的數組數數.默認值為水平為了args[i]np.unique(args[i])

sparse 布爾型,可選

如果為 True,則返回一個稀疏矩陣。矩陣將是scipy.sparse.coo_matrix類。因為 SciPy 的稀疏矩陣必須是二維的,所以當是真的。默認為假。

返回

res CrosstabResult

包含以下屬性的對象:

元素 numpy.ndarrays 的元組。

長度元組len(args)包含計算在內的元素數組數數.這些可以解釋為對應維度的標簽數數.如果水平被給定了,那麽如果levels[i]不是無,elements[i]將保持給出的值levels[i].

數數 numpy.ndarray 或 scipy.sparse.coo_matrix

中唯一元素的計數zip(*args),存儲在一個數組中。也被稱為列聯表len(args) > 1.

注意

參考

例子

>>> from scipy.stats.contingency import crosstab

給定列表 a 和 x,創建一個列聯表,計算相應對的頻率。

>>> a = ['A', 'B', 'A', 'A', 'B', 'B', 'A', 'A', 'B', 'B']
>>> x = ['X', 'X', 'X', 'Y', 'Z', 'Z', 'Y', 'Y', 'Z', 'Z']
>>> res = crosstab(a, x)
>>> avals, xvals = res.elements
>>> avals
array(['A', 'B'], dtype='<U1')
>>> xvals
array(['X', 'Y', 'Z'], dtype='<U1')
>>> res.count
array([[2, 3, 0],
       [1, 0, 4]])

所以 (‘A’, ‘X’) 出現兩次,(‘A’, ‘Y’) 出現 3 次,以此類推。

可以創建更高維的列聯表。

>>> p = [0, 0, 0, 0, 1, 1, 1, 0, 0, 1]
>>> res = crosstab(a, x, p)
>>> res.count
array([[[2, 0],
        [2, 1],
        [0, 0]],
       [[1, 0],
        [0, 0],
        [1, 3]]])
>>> res.count.shape
(2, 3, 2)

要計數的值可以通過使用級別參數來設置。它允許顯式給出每個輸入序列中感興趣的元素,而不是找到序列的唯一元素。

例如,假設其中一個參數是一個包含調查問題答案的數組,整數值為 1 到 4。即使值 1 沒有出現在數據中,我們也希望在表中為其輸入一個條目。

>>> q1 = [2, 3, 3, 2, 4, 4, 2, 3, 4, 4, 4, 3, 3, 3, 4]  # 1 does not occur.
>>> q2 = [4, 4, 2, 2, 2, 4, 1, 1, 2, 2, 4, 2, 2, 2, 4]  # 3 does not occur.
>>> options = [1, 2, 3, 4]
>>> res = crosstab(q1, q2, levels=(options, options))
>>> res.count
array([[0, 0, 0, 0],
       [1, 1, 0, 1],
       [1, 4, 0, 1],
       [0, 3, 0, 3]])

如果給定了levels,但levels的一個元素是None,則使用相應參數的唯一值。例如,

>>> res = crosstab(q1, q2, levels=(None, options))
>>> res.elements
[array([2, 3, 4]), [1, 2, 3, 4]]
>>> res.count
array([[1, 1, 0, 1],
       [1, 4, 0, 1],
       [0, 3, 0, 3]])

如果我們想忽略出現 4 的對q2,我們可以隻給出值 [1, 2] 到水平,並且 4 將被忽略:

>>> res = crosstab(q1, q2, levels=(None, [1, 2]))
>>> res.elements
[array([2, 3, 4]), [1, 2]]
>>> res.count
array([[1, 1],
       [1, 4],
       [0, 3]])

最後,讓我們重複第一個示例,但返回一個稀疏矩陣:

>>> res = crosstab(a, x, sparse=True)
>>> res.count
<2x3 sparse matrix of type '<class 'numpy.int64'>'
        with 4 stored elements in COOrdinate format>
>>> res.count.A
array([[2, 3, 0],
       [1, 0, 4]])

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.stats.contingency.crosstab。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。