大量数据的散点图
Scatter plot on large amount of data
假设我有一个大型数据集 (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()
根据我在 Whosebug 上发现的某种 'same' 问题,我可以洗牌我的数据或取例如 1000 个随机值并绘制它们。
但是如何以每个 X(进行特定测量的日期)对应于实际(Y 测量)的方式实现它。
首先回答你的问题:
你应该使用pandas.DataFrame.sample
to get a sample from your dateframe, and then use 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 数据中执行了转换,请注意根据您的数据,这绝对 不是 是必需的。
所以,而不是像这样:
你会得到这样的东西:
现在,一个建议:
使用 sns.jointplot
,它有一个 kind
参数,来自 docs:
kind : { “scatter” | “reg” | “resid” | “kde” | “hex” }, optional
Kind of plot to draw.
我们在这里创建的与 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()
这会产生这张图片,这也有助于查看沿所需轴的分布:
假设我有一个大型数据集 (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()
根据我在 Whosebug 上发现的某种 'same' 问题,我可以洗牌我的数据或取例如 1000 个随机值并绘制它们。 但是如何以每个 X(进行特定测量的日期)对应于实际(Y 测量)的方式实现它。
首先回答你的问题:
你应该使用pandas.DataFrame.sample
to get a sample from your dateframe, and then use 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 数据中执行了转换,请注意根据您的数据,这绝对 不是 是必需的。
所以,而不是像这样:
你会得到这样的东西:
现在,一个建议:
使用 sns.jointplot
,它有一个 kind
参数,来自 docs:
kind : { “scatter” | “reg” | “resid” | “kde” | “hex” }, optional
Kind of plot to draw.
我们在这里创建的与 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()
这会产生这张图片,这也有助于查看沿所需轴的分布: