【问题标题】:Wrong ylabels in plot from loaded file [duplicate]加载文件中的绘图标签错误[重复]
【发布时间】:2019-09-25 23:53:22
【问题描述】:

This 是我的.dat 文件。我想使用以下脚本绘制TIMESTAMPGHI

import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

path = r'C:\Users\...'
file = '\\File.DAT'

df = pd.read_csv(path+file, sep=',', header=0, skiprows=0)
df = df[['TIMESTAMP', 'GHI']]
df.drop([0,1], inplace=True)

df['TIMESTAMP'] = pd.to_datetime(df['TIMESTAMP'], dayfirst=True)
df.set_index('TIMESTAMP', inplace=True)

fig, ax = plt.subplots(figsize=(9,4))
ax.plot(df.index, df['GHI'])
plt.show()

但是,情节错误(下图)。

如果将数据框 df 保存到 .csv 文件,然后重新加载为 df,同样的绘图脚本,它会给出正确结果(下图)。

我想知道为什么从读取 .dat 文件的df 绘图会给出错误的结果,而从读取 .csv 文件的df 绘图会给出正确的结果?

对解决方案有什么建议吗?

【问题讨论】:

  • .dat 文件是什么样的?您是否检查了分隔符/数据条目?第一个情节中的所有黑色东西是什么?
  • - alexandra,在第一段,给出了文件的链接。它使用逗号分隔符 (,)。 y轴上的黑色东西是第二个图中整齐呈现的数据值。
  • 您的脚本显示您使用数据框进行绘图。您还可以展示如何从 dat 文件中“直接”绘图吗?
  • 最后一段中的问题现在被重新选择
  • 看起来df['GHI'] 在.dat 文件中保存/读取时可能是字符串?

标签: python pandas dataframe matplotlib


【解决方案1】:

当您读取 dat 文件时,信息被解析为字符串。您可以通过将以下命令放入终端 type(df.GHI.iloc[0]) 来查看这一点。

如果您将GHI 列转换为浮点数,您的绘图应该会成功。

ax.plot(df.index, df['GHI'].astype(float))

【讨论】:

  • 是的,问题是因为数据类型应该是浮点数。谢谢
【解决方案2】:

您的数据的问题在于前两行,其中包含一些元数据作为字符串。 因此,其余数据也作为字符串加载。

"TIMESTAMP","GHI"
"TS","W/m2"
"","","Avg"
"2014-10-22 00:00:00",-0.4049856
...

删除这两行元数据后,您需要正确转换列GHI 的值的格式。幸运与否,时间戳作为字符串被接受,可能会让您感到困惑。

df.GHI=df.GHI.astype(float)

注意:

在第一个(错误的)图中,您只会看到来自 GHI 的未排序字符串列表作为 ylabels,有时会出现相同的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    相关资源
    最近更新 更多