【问题标题】:Histogram of a pandas dataframe熊猫数据框的直方图
【发布时间】:2015-03-03 01:45:08
【问题描述】:

我在网站上的任何地方都找不到类似的问题。

我有一个相当大的文件,超过 100000 行,我使用 pandas 读取它:

df = pd.read_excel("somefile.xls",index_col='Offense Type')

最终得到一个数据框,其中包含第一列(索引列)和另一列,分别为“Offense_type”和“Hour”。

“进攻类型”由一系列“分类”组成,例如 cat1、cat2、cat3 等... “小时”由一系列介于 1 和 24 之间的整数组成。

我想做的是获取数据框中每个数字出现次数的直方图(没有那么多分类,最多有 10 个)

这是我想要得到的 ASCII 表示”

(x 代表直方图中的条形,它们的值肯定会比 1,2 或 3 高得多)

   x        x         # And so on
 x x  x     x x  x    #
 x x  x  x  x x  x    #
 1 2 11 20  5 8 18    #
   Cat1      Cat2     #

但我使用以下方法为 df 中的每一行获取一个条形图:

df.plot(kind='bar')

这基本上是不可读的:

我也尝试过使用 hist() 和 Histogram() 函数,但没有成功。

以下是一些示例数据:

【问题讨论】:

  • 您需要研究 pandas group by 功能才能将数据转换为您想要的形式。
  • 如果你发布一些示例数据,我会更容易解决这个问题;比如说,来自两个或三个类别的几行。试试`df.to_dict{
  • ...但不是整个文件!例如,另请参见 df.head(n=20)。
  • @cphlewis haha​​ 当然不是整个文件,让我更新问题的正文。
  • 看看我的第一条评论——它是 DataFrame 变量df,它知道如何写出可以从网页重新读取的字符串。将对以后的帖子有用。

标签: pandas histogram dataframe


【解决方案1】:

经过漫长的一夜之后,我得到了答案,因为每个事件只有在我在文件中添加一个额外的列号为 1 的列后才会发生,然后按以下方式索引数据框:

df = pd.read_excel("somefile.xls",index_col='Numberone')

然后简单地尝试一下:

df.hist(by=df['Offense Type'])

终于如愿以偿

【讨论】:

    猜你喜欢
    • 2015-01-25
    • 1970-01-01
    • 2021-10-16
    • 2014-08-26
    • 1970-01-01
    • 2023-04-10
    • 2015-07-08
    • 2018-07-05
    • 2013-08-16
    相关资源
    最近更新 更多