我有一个无法加载到内存中的大型csv文件。我需要找到哪些变量是常量。我怎样才能做到这一点? 我正在阅读csv
d = pd.read_csv(load_path, header=None, chunksize=10)
有没有一种优雅的方法来解决问题?
数据包含字符串和数字变量
答案 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)
后者将以块的形式读取并告诉您每列数据的独特性,这只是粗略的代码,您可以根据需要进行修改