散点图上的大量数据

dod*_*545 5 python matplotlib pandas seaborn

假设我有一个大型数据集(8500000X50)。我想散布图X(日期)和Y(在某天进行的测量)。

我只能得到这个: 在此处输入图片说明

data_X = data['date_local']
data_Y = data['arithmetic_mean']
data_Y = data_Y.round(1)
data_Y = data_Y.astype(int)
data_X = data_X.astype(int)
sns.regplot(data_X, data_Y, data=data)
plt.show()
Run Code Online (Sandbox Code Playgroud)

根据我在Stackoverflow上发现的“相同”问题,我可以重新整理数据或采用1000个随机值进行绘制。但是如何以每个X(进行特定测量的日期)对应于实际(Y测量)的方式来实现它。

Vin*_*iar 7

首先,回答您的问题:

您应该使用pandas.DataFrame.sample从日期框架中获取样本,然后使用regplot,以下是使用随机数据的一个小示例:

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime
import numpy as np
import pandas as pd
import seaborn as sns

dates = pd.date_range('20080101', periods=10000, freq="D")
df = pd.DataFrame({"dates": dates, "data": np.random.randn(10000)})

dfSample = df.sample(1000) # This is the importante line
xdataSample, ydataSample = dfSample["dates"], dfSample["data"]

sns.regplot(x=mdates.date2num(xdataSample.astype(datetime)), y=ydataSample) 
plt.show()
Run Code Online (Sandbox Code Playgroud)

regplot我,因为日期时间的类型我的X数据执行皈依,注意到这个绝对应该依赖于你的数据是必要的。

因此,而不是像这样:

您将获得如下内容:


现在,一个建议:

使用docs中的sns.jointplot,其中有一个kind参数:

种类:{“分散” | “ reg” | “残渣” | “ kde” | “十六进制”},可选

要绘制的情节。

我们在此处创建的内容与matplotlib的hist2d相似,它使用整个数据集创建了类似热图的内容。使用随机数据的示例:

dates = pd.date_range('20080101', periods=10000, freq="D")
df = pd.DataFrame({"dates": dates, "data": np.random.randn(10000)})

xdata, ydata = df["dates"], df["data"]
sns.jointplot(x=mdates.date2num(xdata.astype(datetime)), y=ydata, kind="kde")

plt.show()
Run Code Online (Sandbox Code Playgroud)

这将产生此图像,这也有助于查看沿所需轴的分布: