gpt4 book ai didi

python - 将直方图从 Python 导出到 Excel

转载 作者:行者123 更新时间:2023-11-28 18:21:46 25 4
gpt4 key购买 nike

我是编码的新手,我需要一些关于导出数据或仅在 python shell 上打印数据的帮助。代码是:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import openpyxl

data = pd.read_excel('/Users/user/Desktop/Data/Book1.xlsx')
df = data.hist(bins=40)
plt.xlim([0,1000])
plt.title('Data')
plt.xlabel('Neuron')
plt.ylabel('# of Spikes')
plt.show()

所以代码在将数据分成 40 个 bin 后制作了一个直方图,范围在 0 到 1558.5 左右。我想做的是在装箱后导出数据,因为当我尝试编写时:

writer = pd.ExcelWriter('/Users/user/Desktop/Data/output.xlsx')
df1.to_excel(writer,'Sheet2')
writer.save()

它保存原始数据,而不是应用了直方图和应用了 bin 的数据。此外,如果我能在如何更改 0 到 5、5 到 10 等范围内的 bin 数量方面获得一些帮助,基本上它以 5 的间隔读取,一直到数据末尾,所以它最终会在最后一位数据处停止并将该数据粘贴到容器中。任何帮助表示赞赏,它不一定是专门的 Pandas 。谢谢。顺便说一句,我认为我制作的是来自导入数据的 Dataframe,同样只是初学者所以不太确定。

最佳答案

df = data.hist(bins=40) 行实际上并未创建装箱数据的 DataFrame。 df 最终持有一个包含 matplotlib.axes._subplots.AxesSubplot 对象的 numpy ndarray

保存分箱数据的一种方法是通过 matplotlib 的 hist() 创建直方图。在 read_excel 行之后直接添加以下行:

import matplotlib.pyplot as plt
counts, bins, bars = plt.hist(data.values, bins=40)
df = pd.DataFrame({'bin_leftedge': bins[:-1], 'count': counts})

然后,正如评论中指出的那样,一定要将 df1.to_excel(writer,'Sheet2') 更改为 df.to_excel(writer,'Sheet2').

bins 包含每个 bin 的边缘,因此 bins 数组将比 counts 数组多一个元素。请记住,上面的代码将每个计数与该计数的 bin 的边缘相关联,并且不会保存最右边的 bin 边缘。

可能有更好的或 pandas 惯用的方法来执行此操作,但希望以上内容能满足您的需求。


编辑:整数 bin 宽度

您可以将 bin 边缘的 list 作为 bins= 传递给 data.hist()plt.hist( )。要创建从 0 开始并包含数据最大值的宽度为 5 的容器,这应该可行:

counts, bins, patches = plt.hist(data.values, bins=range(0, max(data.values)+5, 5))

说明:Python 的内置 range(start, stop, step) 只接受整数,并返回一个列表,包括 左端点 (start) 但排除正确的端点 (stop)。 (在数学符号中,range(start, stop, step) 返回半开区间 [start, stop) 上均匀间隔的整数。)+5 在上面的行中确保最后一个 bin 的右边缘结束在最大数据值的右侧。

关于python - 将直方图从 Python 导出到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44709970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com