import os
from matplotlib import pyplot as pyplot
from collections import defaultdict
import csv
import numpy as np
path = r'C:\Users\AK6PRAKT\Desktop\6daten'
dirs = os.listdir(path)
s = []
x = []
y = []
names = []
fig = pyplot.figure()
for i in dirs:
if os.path.splitext(i)[1] == ".csv":
f = open(path+"/"+i)
iter_f = iter(f);
str = ""
for line in iter_f:
str = str + line
s.append(str)
with open(path+"/"+i,'r') as r:
lines=r.readlines()
with open(path+"/"+i,'w') as w:
for row in lines:
if 'Date' not in row:
w.write(row)
columns = defaultdict(list)
with open(path+"/"+i) as f:
reader = csv.reader(f)
for row in reader:
for (i,v) in enumerate(row):
columns[i].append(v)
list_temp1 = columns[0]
list_temp1 = np.array(list_temp1)
list_temp2 = columns[2]
list_temp2 = np.array(list_temp2)
print(list_temp1,list_temp2)
y.append(float(list_temp2))
names.append(list_temp1)
x = range(len(names))
pyplot.ylim((0, 40))
my_y_ticks = np.arange(0, 40, 10)
pyplot.plot(x,y, linewidth=2)
pyplot.xticks(x,names,rotation = 90)
fig = pyplot.figure(figsize=(10,10))
pyplot.show()
如果只有几个csv文件,这段代码的效果非常好。但是我想把这段代码应用到实践中,我需要分析超过200000个csv文件并制作一个图形,这样我就可以清楚地看到这些数据的波动,但是当我想导入这些华丽的文件时,出现了以下错误:
File "C:/Users/AK6PRAKT/headerremover.py", line 44, in <module>
y.append(float(list_temp2))
TypeError: only size-1 arrays can be converted to Python scalars
我真的不知道该怎么解决这个问题,如果有人能帮我,谢谢!!!!!!你知道吗
此错误代码是由于试图将长度大于1的numpy数组强制转换为float而导致的:
示例:
但是:
所以这个错误发生在你的行中(44,引用错误消息)
在
list_temp2
的情况下,有多个条目。所以它应该与你处理多少文件无关。你知道吗但是:
就像Georgy已经提到的那样-假设您的代码比任务要求的要复杂一点。
这是我的一些想法。。。你知道吗
csv
文件的列表,那么python的glob
模块有没有帮助?它也可以搜索子目录。。。你知道吗fig = pyplot.figure(figsize=(10,10))
之前plt.show()
?这将导致一个未使用的空数字。你知道吗headerremover.py
与循环和if 'Date' not in row
结合起来看,如果文件中有许多头行,也在中间,那么这是真的吗?因为如果在每个文件的顶部有一个包含n行的头段,那么还有更简单的方法来跳过这些行。。。你知道吗相关问题 更多 >
编程相关推荐