【问题标题】:Bar chart or histogram for frequency of features in one week bins in PandasPandas 一周箱中特征频率的条形图或直方图
【发布时间】:2018-09-11 03:47:07
【问题描述】:

我有一个如下所示的数据框(此处显示了三列):

Week/Year  feature
40/2017    2          147
           3           32
           4           21
           5           21
           7            8
           8            1
           9           10
           10          10
           11           8
           12          23
           14           3
           15          10
           16           3
           17           4
           18          15
           19          10
           21          19
           22          12
           23           3
           24           8
           26           3
           27          47
           28           8
           29           6
           30          11
           31          11
           34           7
           35           8
           36           9
           38          21
                     ... 
51/2017    40           7
           43           2
           44           1
           45           3
           46           1
           47           1
           51           2
           58           1
           62           3
           63           2
           64           1
           66           3
           67           1
           71           3
           72           3
           76           4
           77           5
           79           5
           81           1
           82           4
           85           3
           86           1
           87           1
           88           2
           89           1
           90           1
           93           4
           95           1
           96           3
           100          2

第三列显示了一周内每个功能的频率。我通过这段代码计算了第三列:

df['Week/Year'] = df['date'].apply(lambda x: "%d/%d" % (x.week, x.year))

我想绘制一个直方图或条形图,在一年中的每一周,用不同的颜色绘制每个特征的频率。我试过了,但没有用:

df.plot(x = 'Week/Year', y = df.groupby(['Week/Year', 'feature']).size(), kind ='bar')

谢谢。

【问题讨论】:

  • df.unstack().plot()
  • df.unstack.plot() 给我 TypeError: Empty 'DataFrame': no numeric data to plot

标签: python pandas dataframe matplotlib


【解决方案1】:

我想你得到 "TypeError: Empty 'DataFrame': no numeric data to plot" 因为你的 lambda 函数的返回是一个字符串。您有两种选择,仅出于绘图原因转换列或重写 lambda 函数以返回数值(float 或 int)。

【讨论】:

  • 但是,我的 x 是分类的,我得到了 y 的大小
  • 哦,对不起,我的错误。您介意尝试以下代码吗: df.groupby(['Week/Year', 'feature']).size().plot(x='Week/Year', kind ='bar')
  • 我想你忘记了 unstack() 它应该是: df.groupby(['Week/Year', 'feature']).size()..unstack().plot(x= '周/年',种类 ='bar')。在我包含 unstack() 之后,它就变了。谢谢
  • 如果我想将每个尺寸除以一周内所有计数的总和,我该怎么做?
猜你喜欢
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
  • 2021-10-29
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
  • 2014-10-22
相关资源
最近更新 更多