2017-07-04 15 views
0

我正在编写一些代码,我需要一些帮助。我写的代码(在下面发布)必须做几件事情,首先它应该能够从一个文件中创建一个直方图(它会这样做),它会相应地读取和清理它。所以这里是我需要一些帮助的地方,1)我需要找到一种方法来将bin宽度更改为我需要的任意宽度(deltaT),而不必每次都进行硬编码,2)我需要一些帮助能够运行导入python的不同excel文件的代码,并将它们导出为不同的excel文件。我相信,我不太确定我对编码很陌生,我正在处理的是一个Dataframe。代码:自动化直方图以改变excel文件

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文件他们是(加上箱宽变化)与代码应用于他们。我改变了一下代码:

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

因此,我对你的问题的解释是,你正在寻找将直方图保存为excel文件中的图像。它是否正确? – Xukrao

+0

不是,我需要做的是将excel文件分为5个(这是我需要帮助更改的一件事),然后将它们与应用程序箱一起导出到excel文件中(这是它的作用,但仅用于一个文件)。它几乎看起来像一个列表,其数目是多少次之间有一个数字,例如[0,5)有2个数字,数字增加2,等等,其余数据。它读取目录中的多个excel文件应用代码BUT只输出1个excel文件,而不是所有导入的文件。情节只是为了表演。谢谢 –

回答

1

只导出一个文件,因为循环中的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() 
+0

非常感谢你的兄弟它的工作!你救了我的命 –