1

次のようなデータがある場合:

Code, data_1, data_2, data_3, [....], data204700

a,1,1,0, ... , 1
b,1,0,0, ... , 1
a,1,1,0, ... , 1
c,0,1,0, ... , 1
b,1,0,0, ... , 1
etc. same code different value (0, 1, ?(not known))

大きなマトリックスを作成する必要があり、分析したいと考えています。

  1. ディクショナリにデータをインポートするにはどうすればよいですか?

列に辞書を使用したい (204.700+1)

  1. パターンに戻る組み込み関数 (またはパッケージ) はありますか?

    (私はパーセントパターンを期待しています)。列 1 の 1 の 90%、列 2 の 80% を意味します。

4

1 に答える 1

0

わかりましたので、保存目的でこれを辞書に入れたいと仮定しますが、この種のデータではそれを望まないことをお伝えします。パンダを使う DataFrame

これは、コードをデータフレームに入れる方法です。

import pandas as pd
my_file = 'file_name'
df = pd.read_csv(my_file)

探しているパターンを返すためのパッケージは必要ありません。それを返すための単純なアルゴリズムを書くだけです!

def one_percentage(data):
    #get total number of rows for calculating percentages
    size = len(data)
    #get type so only grabbing the correct rows
    x = data.columns[1]
    x = data[x].dtype
    #list of touples to hold amount of 1s and the column names
    ones = [(i,sum(data[i])) for i in data if data[i].dtype == x]
    my_dict = {}
    #create dictionary with column names and percent
    for x in ones:
        percent = x[1]/float(size)
        my_dict[x[0]] = percent
    return my_dict

任意の列の 1 の割合を取得する場合は、次のようにします。

percentages = one_percentage(df)
column_name = 'any_column_name'
print percentages[column_name]

すべての列を実行したい場合は、すべての列名を取得してループすることができます。

columns = [name for name in percentages]
for name in columns:
    print str(percentages[name]) + "% of 1 in column " + name 

他に何か必要な場合はお知らせください。

于 2013-05-21T18:17:28.153 に答える