来自大型日志的多个采样数据点的大数据可视化

时间:2015-06-21 11:39:53

标签: python pandas plot statistics scikit-learn

我有一个日志文件,我需要在python中绘制不同的数据点作为多线图,每个独特点都有一条线,问题是在某些样本中会丢失一些点并添加新点另一方面,如图所示,每条线表示n个点的样本,其中n是可变的:

2015-06-20 16:42:48,135目前的统计数据= [(' keypasssed',13),('玩具',2),('球&# 39;,2),('鼠标',1)...] 2015-06-21 16:42:48,135当前统计= [(' keypasssed',20,(' toy',5),(' ball',7 ),(' cod',1),(' fish',1)...]

在上面的第1个样品中,小鼠'存在但在第二行中不存在,每个样本中添加了新的数据点,如“鳕鱼”,“鱼”等

那么如何以最快,最干净的方式在python中完成呢?是否有任何现有的python实用程序可以帮助绘制这个定时日志文件?作为日志文件,样本数量为数千,因此可视化应该能够正确显示它。

有兴趣为这个和不同颜色六角形应用多变量hexagonal binning用于每个独特的列"球,鼠标......等等#34;。 scikit提供hexagoanal binning,但无法根据唯一数据点弄清楚如何为每个六边形渲染不同的颜色。任何其他可视化技术也会对此有所帮助。

1 个答案:

答案 0 :(得分:1)

将数据导入pandas:

import pandas as pd
df = pd.DataFrame(columns = ['timestamp','name','value'])
with open(logfilepath) as f:
   for line in f.readlines():
      timestamp = line.split(',')[0]
      #the data part of each line can be evaluated directly as a Python list
      data = eval(line.split('=')[1])
      #convert the input data from wide format to long format
      for name, value in data:
         df = df.append({'timestamp':timestamp, 'name':name, 'value':value}, 
                             ignore_index = True)

#convert from long format back to wide format, and fill null values with 0
df2 = df.pivot_table(index = 'timestamp', columns = 'name')
df2 = df2.fillna(0)
df2
Out[142]: 
                    value                             
name                 ball cod fish keypassed mouse toy
timestamp                                             
2015-06-20 16:42:48     2   0    0        13     1   2
2015-06-21 16:42:48     7   1    1        20     0   5

绘制数据:

import matplotlib.pylab as plt
df2.value.plot()
plt.show()

enter image description here