所以我需要对我需要做的事情提供一些帮助。所以我编写了一些代码,将excel文件导入目录并将文件分成5,[0,5),[5,10)等的箱子。但是,每当箱内有一个数字时,计数就会增加。一切都很好,它完成了我需要做的事情,但我想知道是否有某种方式我可以随意改变这个箱宽,但我有一点困难这样做。代码是:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import openpyxl
from pandas import ExcelWriter
import os
datadir = '/Users/user/Desktop/Data/'
for file in os.listdir(datadir):
if file.endswith('.xlsx'):
data = pd.read_excel(os.path.join(datadir, 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()
outfile = os.path.join(datadir, file.replace('.xlsx', '_bins.xlsx'))
writer = pd.ExcelWriter(outfile)
df.to_excel(writer)
writer.save()
因此,这会在目录中的所有文件上创建一个循环并相应地对其进行分区,并将它们作为单独的excel文件导出并显示结果。我实际上对编码很新,并且肯定会感谢一些帮助,实际上非常感谢任何帮助。无论如何,我正在考虑使bin成为一个命令行参数,我可以使用它来独立运行具有特定参数值的代码,或者其他一些代码可以根据其结果调用一些值。什么是最好的方式,请任何帮助将不胜感激。
答案 0 :(得分:0)
范围函数采用步参数(see doc.)。然后步长将对应于箱宽。
注意:如果您不想绘图,只计算直方图,您也可以使用numpy.histogramm。
或者,您可以使用参数 bins (整数而不是序列, n )和范围(元组)定义bin宽度指示边界, x_min , x_max )。
bin witdth =(x_max - x_min)/ n
如果要固定bin宽度,可以使用一些代数并根据输入数据的间隔和宽度计算bin的数量。 (注意由整数舍入和整理引起的变化)