我正在编写一些代码,我需要一些帮助。我编写的代码(在下面发布)必须做一些事情,首先它应该能够从它读取的文件创建一个直方图(它所做的)并相应地对其进行bin。所以这里是我需要帮助的地方,1)我需要找到一种方法将bin宽度更改为我需要的任意宽度(deltaT),而不必每次都进行硬编码,2)我需要一些帮助能够为导入到python中的不同excel文件运行代码,并将它们导出为不同的excel文件。我相信,我不太确定我对编码很陌生,我所处理的是Dataframe。代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import openpyxl
from pandas import ExcelWriter
data = pd.read_excel('/Users/user/Desktop/Data/Book1.xlsx')
counts, bins, patches = plt.hist(data.values, bins=range(0,
int(max(data.values)+5), 5))
df = pd.DataFrame({'bin_leftedge': bins[:-1], 'count': counts})
plt.title('Data')
plt.xlabel('Neuron')
plt.ylabel('# of Spikes')
plt.show()
writer = pd.ExcelWriter('/Users/user/Desktop/Data/output.xlsx')
df.to_excel(writer,'Sheet2')
writer.save()
我尝试将另一个excel文件读取为:
data2 = pd.read_excel('/Users/user/Desktop/Data/Book2.xlsx')
然后将其放入代码并让它运行,但它只给出第一个excel文件的结果(将其输出到另一个excel文件中)。我究竟做错了什么?非常感谢任何帮助。
更新:所以我能够让它读取多个文件并在其上运行代码,现在我唯一能解决的是如何让它们作为不同的excel文件导出(使用应用于它们的代码加上bin宽度变化。我把代码改为:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import openpyxl
from pandas import ExcelWriter
import os
for file in os.listdir('/Users/user/Desktop/Data'):
data = pd.read_excel('/Users/user/Desktop/Data/{0}'.format(file))
counts, bins, patches = plt.hist(data.values, bins=range(0,
int(max(data.values)+5), 5))
df = pd.DataFrame({'bin_leftedge': bins[:-1], 'count': counts})
plt.title('Data')
plt.xlabel('Neuron')
plt.ylabel('# of Spikes')
plt.show()
writer = pd.ExcelWriter('/Users/user/Desktop/Data/ouput.xlsx')
df.to_excel(writer)
writer.save()
再次感谢任何帮助。提前谢谢。
答案 0 :(得分:1)
只导出一个文件,因为循环中的命名 output.xlsx Excel文件永远不会更改,因此它会在每次迭代时覆盖。请在下面考虑将 _bins 后缀添加到原始Excel文件中。
datadir = '/Users/user/Desktop/Data/'
for file in os.listdir(datadir):
if file.endswith('.xlsx'):
data = pd.read_excel(os.path.join(datadir, file))
#...data processing and graph output...
outfile = os.path.join(datadir, file.replace('.xlsx', '_bins.xlsx'))
writer = pd.ExcelWriter(outfile)
df.to_excel(writer)
writer.save()