"ValueError: could not convert string to float" with Python ggplot library when making scatter plot

"ValueError: could not convert string to float" with Python ggplot library when making scatter plot

下面是一个名为 'grouped' 的 pandas 数据框。我想用 X 上的 Dayn 和 Y 上的 ENTRIESn_hourly 制作散点图。我可以制作条形图没问题,但是当我尝试制作散点图时出现此错误:ValueError:无法转换要浮动的字符串:星期五。

  Dayn  rain  ENTRIESn_hourly
0   Fri     0      1336.012020
1   Fri     1      1327.224794
2   Mon     0      1195.493274
etc. 

代码

plot = ggplot(grouped, aes('Dayn','ENTRIESn_hourly')) + \
       geom_point() + \
       ggtitle("Entries per day") + \
       xlab("Day of week") + \
       ylab("Average entries (millions)")
return plot

散点图非常适合比较两个数字,但您正试图传递一个字符串 (Dayn) 和一个数字。在这种情况下,条形图或折线图可能是更好的选择

错误很明显:

aes('Dayn','ENTRIESn_hourly'))

Dayn是string类型,ENTRIESn_hourly是float类型。 ggplot 的散点图的实现期望散点图有 2 个浮点数(否则它不会显示此错误)。条形图不是这种情况。散点图用于比较两个值。

如前所述,散点图需要 xyfloat 数据。解决此问题但仍保持 "scatter" 样图的一种方法是使用 matplotlib.

中的 pyplot 将折线图格式化为看起来类似于散点图

例如这样的事情:

import matplotlib.pyplot as plt
plt.plot([1,2,3,4], [1,4,9,16], 'ro')
plt.axis([0, 6, 0, 20])
plt.show()

'ro' 描述了数据点的样式,在本例中是红点。所以你有一个折线图,在某种程度上类似于散点图。以上代码生成以下图表:

在您的情况下,您可能需要类似于:

plt.plot(your_dataframe['Dayn'], your_dataframe['ENTRIESn_hourly'], 'ro')