pandas在巨大的csv文件中找到常量变量

时间:2015-03-27 12:12:08

标签: csv pandas bigdata

我有一个无法加载到内存中的大型csv文件。我需要找到哪些变量是常量。我怎样才能做到这一点? 我正在阅读csv

d = pd.read_csv(load_path, header=None, chunksize=10)

有没有一种优雅的方法来解决问题?

数据包含字符串和数字变量

2 个答案:

答案 0 :(得分:0)

这是我目前使用pandas的慢速解决方案

    constant_variables = [True for i in range(number_of_columns)]
    with open(load_path) as f:
        line0 = next(f).split(',')
        for num, line in enumerate(f):
            line = line.split(',')
            for i in range(n_col):
                if line[i] != line0[i]:
                    constant_variables[i] = False
            if num % 10000 == 0:
                print(num)

答案 1 :(得分:0)

我有两种方法可以考虑迭代每一列并检查唯一性:

col_list = pd.read_csv(path, nrows=1).columns
for col in range(len(col_list)):
    df = pd.read_csv(path, usecols=col)
    if len(df.drop_duplicates()) == len(df):
        print("all values are constant for: ", df.column[0])

或以块的形式迭代csv并再次检查长度:

for df in pd.read_csv(path, chunksize=1000):
    t = dict(zip(df, [len(df[col].value_counts()) for col in df]))
    print(t)

后者将以块的形式读取并告诉您每列数据的独特性,这只是粗略的代码,您可以根据需要进行修改