gpt4 book ai didi

python - 将字符串的 Pandas DataFrame 转换为直方图

转载 作者:太空狗 更新时间:2023-10-29 17:02:00 25 4
gpt4 key购买 nike

假设我有一个这样创建的 DataFrame:

import pandas as pd
s1 = pd.Series(['a', 'b', 'a', 'c', 'a', 'b'])
s2 = pd.Series(['a', 'f', 'a', 'd', 'a', 'f', 'f'])
d = pd.DataFrame({'s1': s1, 's2', s2})

真实数据中的字符串存在相当多的稀疏性。我想创建字符串出现的直方图,看起来像 d.hist() 为 s1 和 s2(每个子图一个)生成的字符串(例如,带有子图)。

只是做 d.hist() 给出了这个错误:

/Library/Python/2.7/site-packages/pandas/tools/plotting.pyc in hist_frame(data, column, by, grid, xlabelsize, xrot, ylabelsize, yrot, ax, sharex, sharey, **kwds)
1725 ax.xaxis.set_visible(True)
1726 ax.yaxis.set_visible(True)
-> 1727 ax.hist(data[col].dropna().values, **kwds)
1728 ax.set_title(col)
1729 ax.grid(grid)

/Library/Python/2.7/site-packages/matplotlib/axes.pyc in hist(self, x, bins, range, normed, weights, cumulative, bottom, histtype, align, orientation, rwidth, log, color, label, stacked, **kwargs)
8099 # this will automatically overwrite bins,
8100 # so that each histogram uses the same bins
-> 8101 m, bins = np.histogram(x[i], bins, weights=w[i], **hist_kwargs)
8102 if mlast is None:
8103 mlast = np.zeros(len(bins)-1, m.dtype)

/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/lib/function_base.pyc in histogram(a, bins, range, normed, weights, density)
167 else:
168 range = (a.min(), a.max())
--> 169 mn, mx = [mi+0.0 for mi in range]
170 if mn == mx:
171 mn -= 0.5

TypeError: cannot concatenate 'str' and 'float' objects

我想我可以手动浏览每个系列,执行 value_counts(),然后将其绘制为条形图,并手动创建子图。我想看看有没有更简单的方法。

最佳答案

重新创建数据框:

import pandas as pd
s1 = pd.Series(['a', 'b', 'a', 'c', 'a', 'b'])
s2 = pd.Series(['a', 'f', 'a', 'd', 'a', 'f', 'f'])
d = pd.DataFrame({'s1': s1, 's2': s2})

根据需要获取带有子图的直方图:

d.apply(pd.value_counts).plot(kind='bar', subplots=True)

enter image description here

OP 在问题中提到了 pd.value_counts。我认为缺少的部分只是没有理由“手动”创建所需的条形图。

d.apply(pd.value_counts) 的输出是一个 pandas 数据框。我们可以像绘制任何其他数据框一样绘制值,选择选项 subplots=True 可以得到我们想要的结果。

关于python - 将字符串的 Pandas DataFrame 转换为直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992644/

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