我有一个这样的Excel工作表:
A B C D
3 1 2 8
4 2 2 8
5 3 2 9
2 9
6 4 2 7
现在,我试图在“ C”上绘制“ B”,并用“ A”的条目标记数据点。它应该显示带有相应标签的点1 / 2、2 / 2、3 / 2和4/2。
import matplotlib.pyplot as plt
import pandas as pd
import os
df = pd.read_excel(os.path.join(os.path.dirname(__file__), "./Datenbank/Test.xlsx"))
fig, ax = plt.subplots()
df.plot('B', 'C', kind='scatter', ax=ax)
df[['B','C','A']].apply(lambda x: ax.text(*x),axis=1);
plt.show()
不幸的是,我得到了:
出现错误:
ValueError: posx and posy should be finite values
如您所见,它没有标记最后一个数据点。我知道这是因为工作表中的空单元格,但我无法避免它们。在此位置仅没有测量数据。 我已经在这里搜索解决方案: Annotate data points while plotting from Pandas DataFrame 但这并不能解决我的问题。
那么,有没有办法标记最后一个数据点?
P.S.:Excel工作表只是一个例子。因此请记住,现实中在不同位置有许多空单元格。
答案 0 :(得分:0)
您可以在绘制无效数据行之前先将它们从df中删除
df = df[df['B'].notnull()]