3

Pythonで双方向テーブルを作成するにはどうすればよいですか? データセットに 2 つのカテゴリ変数があり、2 元表を作成して 2 つの変数間の関係を調べたいと考えています。ありがとうございました。

4

6 に答える 6

5

Bidict パッケージがあります:

>>> from bidict import bidict
>>> husbands2wives = bidict({'john': 'jackie'})
>>> husbands2wives['john']  # the forward mapping is just like with dict
'jackie'
>>> husbands2wives[:'jackie']  # use slice for the inverse mapping
'john'

pip install bidictを使用してインストールできます。


編集:あなたの実際の問題について-私があなたを正しく理解していれば-私は使用しますpandas

# data.csv
Gender Height GPA HS GPA Seat WtFeel Cheat 
Female 64 2.60 2.63 M AboutRt No 1 
Male 69 2.70 3.72 M AboutRt No 2 
Female 66 3.00 3.44 F AboutRt No 3 
Female 63 3.11 2.73 F AboutRt No 4 
Male 72 3.40 2.35 B OverWt No 0

In [1]: import pandas as pd

In [2]: df = pd.read_csv('data.csv', sep = '\s')

In [3]: grouped = df.groupby(['Gender', 'Seat'])

In [4]: grouped.size()
Out[4]: 
Gender  Seat   
Female  AboutRt    3
Male    AboutRt    1
        OverWt     1
dtype: int64
于 2013-06-19T21:34:12.437 に答える
1

Python Cookbookのレシピ 578224DoubleDict示されているように、を使用できる場合があります。

于 2013-06-19T21:40:08.230 に答える
0

補間を行う必要がないと仮定すると、辞書を使用できます。タプルをキーとして使用(x, y)し、値は何でも値として使用します。たとえば、次のような単純な 2x2 テーブルです。

   ___0___1___
0 |   0   0.5
1 |   0.5 1

コードでは次のようになります。

two_way_lookup = {
                  (0, 0) : 0,
                  (0, 1) : 0.5,
                  (1, 0) : 0.5,
                  (1, 1) : 1
                 }
print(two_way_lookup.get((0, 1))) # prints 0.5
于 2013-06-19T21:22:04.760 に答える
0

データが適度に大きい場合、おそらく標準ライブラリでの最善の解決策は、sqliteメモリ内データベースである を使用することです: http://docs.python.org/2/library/sqlite3.html

于 2013-06-19T21:30:21.147 に答える
0

2 レベルの dict (つまり、同じデータを逆の順序でマップする 2 つの dict を含む dict) のようなものを作成できます。

>>> mappings=[(0, 6), (1, 7), (2, 8), (3, 9), (4, 10)]
>>> view = dict(view1=dict(mappings), view2=dict(reversed(k) for k in mappings))
>>> view
{'view2': {8: 2, 9: 3, 10: 4, 6: 0, 7: 1},
'view1': {0: 6, 1: 7, 2: 8, 3: 9, 4: 10}}
于 2013-06-19T21:34:33.030 に答える