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

现在,如果您想获得任何列中的百分比,这就是您要做的:

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 回答