【问题标题】:Variable Bin Width in PythonPython中的可变bin宽度
【发布时间】:2017-07-05 18:45:46
【问题描述】:

所以我需要一点帮助来完成我需要做的事情。所以我写了一些代码,它从一个目录中导入 excel 文件,并将文件放入 5、[0,5)、[5,10) 等的 bin 中。尽管如此,每次 bin 中有一个数字时,计数都会增加。一切都很好,它完成了我需要它做的事情,但我想知道是否有某种方法可以让我随心所欲地改变这个 bin 宽度,但我这样做有点困难。代码是:

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 成为一个命令行参数,我可以使用它来使用特定的参数值独立运行代码,或者其他一些代码可以根据其结果使用一些值调用它。什么是最好的解决方法,请任何帮助将不胜感激。

【问题讨论】:

    标签: python excel command-line-arguments


    【解决方案1】:

    范围函数采用 step 参数 (see doc.)。然后步长将对应于 bin 宽度。

    注意:如果您不想绘图,而只是计算直方图,您也可以使用numpy.histogramm。

    或者,您可以使用参数 bins(整数而不是序列,n)和 range(元组表示边界,x_min、x_max)。

    bin witdth = (x_max - x_min) / n

    如果您想固定 bin 宽度,您可以使用一些代数并根据输入数据的间隔和宽度计算 bin 的数量。 (注意整数四舍五入引起的变化)

    【讨论】:

    • 谢谢你的回答真的很有帮助,但我实际上需要一个命令行参数来完成这个,。我实际上在一开始就考虑过你的方式,但不幸的是,如果代码中存在或不存在参数,我需要一些能够运行代码的东西。非常感谢
    • 在您的脚本中,您可以使用sys.argv 访问命令行参数:stackoverflow.com/a/4118133/7306999
    猜你喜欢
    • 2020-11-04
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    • 1970-01-01
    • 2014-05-09
    • 2012-06-01
    相关资源
    最近更新 更多