Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自动生成各种excel文件的直方图_Python_Excel_Pandas_Dataframe - Fatal编程技术网

Python 自动生成各种excel文件的直方图

Python 自动生成各种excel文件的直方图,python,excel,pandas,dataframe,Python,Excel,Pandas,Dataframe,我在写一些代码,我需要一些帮助。我写的代码(发布在下面)需要做几件事,首先,它应该能够从它读取的文件中创建一个柱状图(它是这样做的),并相应地将其装箱。因此,这里我需要一些帮助,1)我需要找到一种方法,将箱子宽度更改为我需要的任意宽度(deltaT),而无需每次硬编码;2)我需要一些帮助,以便能够运行导入python的不同excel文件的代码,并将其导出为不同的excel文件。我相信,我不是很确定我对编码很陌生,我要处理的是一个数据帧。代码: import pandas as pd import

我在写一些代码,我需要一些帮助。我写的代码(发布在下面)需要做几件事,首先,它应该能够从它读取的文件中创建一个柱状图(它是这样做的),并相应地将其装箱。因此,这里我需要一些帮助,1)我需要找到一种方法,将箱子宽度更改为我需要的任意宽度(deltaT),而无需每次硬编码;2)我需要一些帮助,以便能够运行导入python的不同excel文件的代码,并将其导出为不同的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()

再次感谢您的帮助。提前感谢。

只导出一个文件,因为循环中命名的output.xlsx Excel文件从未更改,因此每次迭代都会覆盖它。考虑下面的内容,在原始Excel文件中添加一个yBin后缀。

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()

所以我对你的问题的解释是,你希望将直方图保存为excel文件中的图像。这是正确的吗?不是真的,我需要做的是将excel文件分为5个文件箱(这是我需要帮助更改的一件事),然后将它们与应用的文件箱一起导出到excel文件(确实如此,但只针对一个文件)。例如,它看起来很像一个列表,它计算一个数字之间的次数[0,5)有2个数字,其余数据的计数增加2,依此类推。它读取目录中的多个excel文件,应用代码,但只输出1个excel文件,而不是所有导入的excel文件。绘图只是为了显示。谢谢你,兄弟,工作顺利!你救了我的命