首先回答你的問題:
您應該使用pandas.DataFrame.sample
從您dateframe得到一個樣本,然後用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
參數,從文檔:
類型:{「分散」 | 「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()
這導致這一形象,這也是很好的看到分佈沿所需軸:
雖然,你以爲你就可以爲了更好地理解圖形上繪製的8500000點而不是8500? – roganjosh
我建議使用熱圖,所以你不需要擺脫數據,你可以有一個更好的可視化。 –