我正在尝试分散绘制以下数据帧:
mydf = pd.DataFrame({'x':[1,2,3,4,5,6,7,8,9],
'y':[9,8,7,6,5,4,3,2,1],
'z':np.random.randint(0,9, 9)},
index=["12:00", "1:00", "2:00", "3:00", "4:00",
"5:00", "6:00", "7:00", "8:00"])
x y z
12:00 1 9 1
1:00 2 8 1
2:00 3 7 7
3:00 4 6 7
4:00 5 5 4
5:00 6 4 2
6:00 7 3 2
7:00 8 2 8
8:00 9 1 8
我想把时报“12:00,1:00,…”看作x轴和y轴上的x,y,z
列。
当我试图通过mydf.plot(kind="scatter")
与pandas进行绘图时,会得到错误ValueError: scatter requires and x and y column
。是否必须将数据帧分解为适当的参数?我真正想做的是把这个散布图和西伯恩一起画出来。
实际上,Seaborn是围绕
pandas.DataFrame
s构建的。但是,您的data frame needs to be "tidy":既然你想把x,y和z绘制在同一个图上,看起来它们实际上是不同的观测值。因此,实际上有三个变量:时间、值和使用的字母。
这是"tidy" standard comes from Hadly Wickham, who implemented it in the tidyr package。
首先,我将索引转换为日期时间:
然后我们进行数据整理转换:
并重命名列
现在,我们的数据是这样的:
不幸的是,seaborn没有那么好地处理DateTimes,所以您可以将小时提取为整数:
使用这种形式的数据帧,seaborn可以轻松地接收数据:
输出:
只是跑步
对我来说很好:
相关问题 更多 >
编程相关推荐