Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从熊猫系列中绘制实时图形?以及断断续续地读取文件_Python_Matplotlib_Graph_Real Time_Series - Fatal编程技术网

Python 如何从熊猫系列中绘制实时图形?以及断断续续地读取文件

Python 如何从熊猫系列中绘制实时图形?以及断断续续地读取文件,python,matplotlib,graph,real-time,series,Python,Matplotlib,Graph,Real Time,Series,我有一个文件,作为熊猫系列载入。但是,文件太大,无法在单节点计算机上加载,我希望在更新图形上的这些值时,一次读取几行文件 文件数据示例如下所示: ip,date,time,zone,cik,accession,extention,code,size,idx,norefer,noagent,find,crawler,browser 101.81.76.dii,2016-03-31,00:00:00,0.0,1283497.0,0001209191-16-111028,-index.htm,200.

我有一个文件,作为熊猫系列载入。但是,文件太大,无法在单节点计算机上加载,我希望在更新图形上的这些值时,一次读取几行文件

文件数据示例如下所示:

ip,date,time,zone,cik,accession,extention,code,size,idx,norefer,noagent,find,crawler,browser
101.81.76.dii,2016-03-31,00:00:00,0.0,1283497.0,0001209191-16-111028,-index.htm,200.0,14926.0,1.0,0.0,0.0,10.0,0.0,
104.40.128.jig,2016-03-31,00:00:00,0.0,1094392.0,0001407682-16-000270,.txt,200.0,5161.0,0.0,0.0,0.0,10.0,0.0,
data = pd.read_csv('filepath')
data2 = data[['ip','time','date','size']]
data2['size/MB']= data2['size']/1024
data3 = data2[['ip','time','date','size/MB']]
gr = data3.groupby(['date','time']).sum()
GB = gr['size/GB']= gr['size/MB']/1024

columns = ["size/MB"]
df=GB[0:0]
"""plt.ion()"""
plt.figure()
i=10
while i<len(GB):
    df = df.append(GB[0:i])
    ax = df.plot(secondary_y=['prex'])
    plt.show()
    tm.sleep(0.5)
    i+=10
我的代码示例如下所示:

ip,date,time,zone,cik,accession,extention,code,size,idx,norefer,noagent,find,crawler,browser
101.81.76.dii,2016-03-31,00:00:00,0.0,1283497.0,0001209191-16-111028,-index.htm,200.0,14926.0,1.0,0.0,0.0,10.0,0.0,
104.40.128.jig,2016-03-31,00:00:00,0.0,1094392.0,0001407682-16-000270,.txt,200.0,5161.0,0.0,0.0,0.0,10.0,0.0,
data = pd.read_csv('filepath')
data2 = data[['ip','time','date','size']]
data2['size/MB']= data2['size']/1024
data3 = data2[['ip','time','date','size/MB']]
gr = data3.groupby(['date','time']).sum()
GB = gr['size/GB']= gr['size/MB']/1024

columns = ["size/MB"]
df=GB[0:0]
"""plt.ion()"""
plt.figure()
i=10
while i<len(GB):
    df = df.append(GB[0:i])
    ax = df.plot(secondary_y=['prex'])
    plt.show()
    tm.sleep(0.5)
    i+=10
data=pd.read\u csv('filepath'))
数据2=数据[['ip'、'time'、'date'、'size']]
data2['size/MB']=data2['size']/1024
data3=data2[['ip'、'time'、'date'、'size/MB']]
gr=data3.groupby(['date','time']).sum()
GB=gr['size/GB']=gr['size/MB']/1024
列=[“大小/MB”]
df=GB[0:0]
“”“plt.ion()”“”
plt.图()
i=10
虽然i(1)如果要打印到相同的轴,而不是新图形,则需要为数据框的打印方法提供现有matplotlib轴
ax
对象

DataFrame.plot(..., ax=ax)
(2)调用
plt.show()
打开一个窗口,接管事件循环。在关闭此窗口之前,其余脚本将停止。因此,需要避免在循环内调用它
plt.draw()
适用于在交互模式下在循环内绘制。因此,必须在循环之前调用
plt.ion()

(3)使用
time.sleep()
处理诸如matplotlib plotting窗口之类的GUI元素时是个坏主意。它实际上让应用程序休眠,导致窗口无响应。改用
plt.pause()

(4)您需要指定在数据框的绘图方法中绘图的数据。此外,还需要清除轴,否则旧绘图将保留在绘图中

现在,这里是一个工作脚本,它为数据帧设置动画

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

x = np.arange(100)
y = np.random.rand(100)
df = pd.DataFrame({"x":x, "y":y})
df2 = df[0:0]

plt.ion()
fig, ax = plt.subplots()
i=0
while i < len(df):
    df2 = df2.append(df[i:i+1])
    ax.clear()
    df2.plot(x="x", y="y", ax=ax)
    plt.draw()
    plt.pause(0.2)
    i+=1
plt.show()
导入matplotlib.pyplot作为plt
将numpy作为np导入
作为pd进口熊猫
x=np.arange(100)
y=np.rand.rand(100)
df=pd.DataFrame({“x”:x,“y”:y})
df2=df[0:0]
plt.ion()
图,ax=plt.子批次()
i=0
而i

这不是设置matplotlib图形动画的最有效方法,但它与您的代码非常接近

感谢您的评论和修改。代码运行得非常完美,接近初始代码。