大量数据的散点图

时间:2017-07-13 22:55:48

标签: python pandas matplotlib seaborn

假设我有一个大型数据集(8500000X50)。我想分散情节X(日期)和Y(在某一天拍摄的测量值)。

我只能得到这个: enter image description here

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()

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

1 个答案:

答案 0 :(得分:5)

首先,回答你的问题:

您应该使用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()

regplot我因为日期时间的类型而在我的X数据中执行转换,请注意这肯定应该,具体取决于您的数据。

所以,而不是像这样:

你会得到这样的东西:

现在,建议:

使用 docs 中具有kind参数的sns.jointplot

  

kind:{“scatter”| “reg”| “resid”| “kde”| “hex”},可选

     

绘制的情节。

我们在这里创建的是类似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()

这会生成此图像,这也有助于查看所需轴上的分布: