gpt4 book ai didi

python - 如何使用具有大量行的 DataFrame 使线图可读

转载 作者:行者123 更新时间:2023-12-01 01:07:56 25 4
gpt4 key购买 nike

我有一个 1,000,000 x 2 DataFrame 对象,其中包含我试图直观理解的数据。它基本上是对 1,000,000 个事件的模拟,其中沿着网络传输的数据包根据缓冲区的大小进行排队或丢弃。因此,两列值是“队列中的数据包”和“已丢弃的数据包”。

我正在尝试使用 Python、Matplotlib 和 Jupyter Notebooks 绘制线图,该线图的 x 轴上有事件的 ID,y 轴上的特定 ID 点处的队列中的数据包数量。应该有两行,第一行代表队列中的数据包数量,第二行代表丢弃的数据包数量。然而,考虑到有超过 1,000,000 次模拟,该图并不容易理解。这些值(value)观太挤在一起了。是否可以用 1,000,000 个事件实例制作一个可读的图表,或者我是否需要大幅削减事件数量?

最佳答案

拥有一百万个数据点,需要付出很大的努力并放大才能看到它们的细节。 Plotly有一些不错的工具,可以放大和缩小绘图以及沿 x 轴滑动数据窗口。

如果您可以进行一些平均,您可以绘制移动平均线并获得接近十万个点。您可以将两个子图堆叠在一起,以合理详细地查看两列数据。当然,您可以对它们进行更多平均,但您会失去查看细节的能力。

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

def moving_avg(x, N=30):
return np.convolve(x, np.ones((N,))/N, mode='valid')

plt.figure(figsize = (16,12))

plt.subplot(3,1,1)
x = np.random.random(1000)
plt.plot(x, linewidth = 1, alpha = 0.5, label = 'linewidth = 1')
plt.plot(moving_avg(x, 10), 'C0', label = 'moving average, N = 10')
plt.xlim(0,len(x))
plt.legend(loc=2)

plt.subplot(3,1,2)
x = np.random.random(10000)
plt.plot(x, linewidth = 0.2, alpha = 0.5, label = 'linewidth = 0.2')
plt.plot(moving_avg(x, 100), 'C0', label = 'moving average, N = 100')
plt.xlim(0,len(x))
plt.legend(loc=2)

plt.subplot(3,1,3)
x = np.random.random(100000)
plt.plot(x, linewidth = 0.05, alpha = 0.5, label = 'linewidth = 0.05')
plt.plot(moving_avg(x, 500), 'C0', label = 'moving average, N = 500')
plt.xlim(0,len(x))
plt.legend(loc=2)

plt.tight_layout()

enter image description here

关于python - 如何使用具有大量行的 DataFrame 使线图可读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55152251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com