我想输入几个csv文件,每个文件看起来像这样:
column1 column2 column3
18/05/16 11:19 143501 148686 40644
18/05/16 11:34 144070 144710 79585
18/05/16 11:49 134070 144713 79588
18/05/16 12:03 144070 144716 80591
18/05/16 12:13 144070 144733 79608
18/05/16 12:23 154790 144733 79608
18/05/16 12:19 144070 125753 79628
18/05/16 12:34 144070 144757 79632
我想获取每个csv文件中每个列的最大值和最小值(不包括日期/时间列),并将数据放入类似以下的结构中:
{
'csvfile1' :[{
"column1": [{
"max": "154790"
"min": "134070"
}],
"column2": [{
"max": "148686"
"min": "125753"
}],
"column3": [{
"max": "80591"
"min": "40644"
}]
}],
'csvfile2' :[{
<same type of information here>
}],
'csvfile3' :[{
<same type of information here>
}]
}
到目前为止,这是我的脚本:
max_min_data={}
for name in csvfile_names:
f = open(name+'.csv', "r")
#Only want to check columns 1 to 3 not the date/time
for number in range(1,3):
f.seek(0)
column_names = next(f) next(f) # Skip header
max_value = max(int(row[number]) for row in csv.reader(f))
min_value = min(int(row[number]) for row in csv.reader(f))
max_min_data[name]=[column_names[number]]
max_min_data[name][column_names[number]]=['max','min']
max_min_data[name][column_names[number]]['max']=max_value
max_min_data[name][column_names[number]]['min']=min_value
print "MAX:"
print '\t\t'+str(max_value)
print "MIN:"
print '\t\t'+str(min_value)
如果pandas
允许使用,这非常简单。您需要将csv加载到数据帧中,使用该describe
方法,仅选择'min'和'max'行,然后从该数据帧中创建JSON对象。这里重要的是,熊猫已经提供了所有这些功能。
使用将CSV文件作为数据框加载pandas.read_csv
。假设您将其作为这样的数据框df
:
column1 column2 column3
18/05/16 11:19 143501 148686 40644
11:34 144070 144710 79585
11:49 134070 144713 79588
12:03 144070 144716 80591
12:13 144070 144733 79608
12:23 154790 144733 79608
12:19 144070 125753 79628
12:34 144070 144757 79632
然后,您可以使用desc = df.describe()
生成如下数据框desc
:
column1 column2 column3
count 8.000000 8.000000 8.000000
mean 144088.875000 142850.125000 74860.500000
std 5545.130565 7045.836226 13829.840615
min 134070.000000 125753.000000 40644.000000
25% 143927.750000 144712.250000 79587.250000
50% 144070.000000 144724.500000 79608.000000
75% 144070.000000 144739.000000 79629.000000
max 154790.000000 148686.000000 80591.000000
如果使用来对上面的数据框的行进行子集化desc.loc[['min','max']]
,则会得到:
column1 column2 column3
min 134070 125753 40644
max 154790 148686 80591
然后,您可以通过调用来将其作为JSON对象获取to_json
,例如desc.loc[['min','max']].to_json()
可以直接保存到文件或生成字符串(请参阅docs)。
从那里开始,组成多个这样的过程并写入文件应该很简单。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句