提问人:Saradindu Samanta 提问时间:8/8/2023 最后编辑:Jan_BSaradindu Samanta 更新时间:8/8/2023 访问量:60
绘制包含时间戳和常量值.log文件
Plotting .log file containing timestamp and constant value
问:
我有一个文本文件,其中包含两列的时间戳和值。 数据如下所示:
00:00:08 3.78E-7
00:02:10 3.78E-7
00:05:00 3.78E-7
00:06:00 3.78E-7
...
由于值没有变化,我想绘制时间。图表应该是一条直线。
我尝试了以下方法:
import pandas as pd
from collections import defaultdict
import matplotlib.pyplot as plt
from matplotlib import interactive
def main():
with open(r'C:\Users\sarad\leybold\230623.log','r') as line:
table = defaultdict(dict)
for line in line:
if line:
entry = line.strip()
if ':' in entry:
t = entry
for item in t:
t1,t2=t.split(" ")
table[t].update({t1:float(t2)})
df=pd.DataFrame(table).T
print(df)
df.plot()
plt.show()
main()
当我打印我的 DataFrame 时,它看起来像这样:
15:19:37 15:20:07 15:20:37 ... 23:58:58 23:59:28 23:59:58
15:19:37 7.8E-7 7.800000e-07 NaN NaN ... NaN NaN NaN
15:20:07 7.8E-7 NaN 7.800000e-07 NaN ... NaN NaN NaN
15:20:37 7.8E-7 NaN NaN 7.800000e-07 ... NaN NaN NaN
15:21:07 7.8E-7 NaN NaN NaN ... NaN NaN NaN
15:21:37 7.8E-7 NaN NaN NaN ... NaN NaN NaN
... ... ... ... ... ... ... ...
23:57:58 9.4E-7 NaN NaN NaN ... NaN NaN NaN
23:58:28 9.4E-7 NaN NaN NaN ... NaN NaN NaN
23:58:58 9.4E-7 NaN NaN NaN ... 9.400000e-07 NaN NaN
23:59:28 9.4E-7 NaN NaN NaN ... NaN 9.400000e-07 NaN
这不可能策划!
如何导入.log文件并编辑 DataFrame 以便绘制数据?
答:
1赞
Jan_B
8/8/2023
#1
由于您的数据似乎是 csv 格式,因此您可以使用 pandas 的功能,其中 是时间戳和值之间的任何字符序列(在这种情况下,它似乎是四个空格)。由于分隔符不是单个字符(如 for tab),因此您还需要设置 以避免在控制台中出现警告。pd.read_csv(myfile, sep=delimiter)
delimiter
\t
engine='python'
因此,请尝试:
import pandas as pd
def plot_log():
# import .log file directly into a pandas dataframe and name columns
df = pd.read_csv(r'C:\Users\sarad\leybold\230623.log', sep=' ', engine='python', names=['time', 'value'], header=None)
df.time = pd.to_datetime(df.time, format='%H:%M:%S',).dt.time # cast column of timestamps as datetime object
df.value = df.value.astype(float) # cast column of values as float
# set the timestamp as the index and therefore as the x-axis and display datapoints on line
df.set_index('time').plot(style='o-')
plt.show() # display the plot
if __name__ == '__main__':
plot_log()
评论
0赞
Jan_B
8/8/2023
@SaradinduSamanta 您能否注意我帖子的最后一句话,并澄清您要加载的数据是否存在于制表符分隔的 csv 中(即具有多行文本的文本文件,其中列由制表符分隔)。如果是这样,您可以通过研究熊猫的read_csv功能来省去很多麻烦。
0赞
Saradindu Samanta
8/8/2023
谢谢。以下错误即将到来。TypeError:没有要绘制的数值数据
0赞
Saradindu Samanta
8/8/2023
我正在提供一部分数据......也许会更清楚.我无法在第一篇文章中正确提供数据。
0赞
Saradindu Samanta
8/8/2023
15:19:37 7.8E-7 15:20:07 7.8E-7 15:20:37 7.8E-7 15:21:07 7.8E-7 15:21:37 7.8E-7 15:22:07 7.8E-7 15:22:37 7.8E-7 15:23:07 7.8E-7 15:23:38 7.8E-7 15:24:08 7.8E-7 15:24:38 7.8E-7 15:25:08 7.8E-7
0赞
Saradindu Samanta
8/8/2023
它就像 X 轴和 Y 轴.....I xaxis 有时间(带 delimeter 的数据)然后是一个空间,然后是压力......
评论