2017-07-13 50 views
4

假設我有一個大數據集(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() 

據以某種方式「相同」的問題我在#1發現,我可以打亂我的數據或採取例如1000隨機值,並繪製出來。 但是,如何實現它,使得每個X(進行特定測量的日期)都將與實際(Y測量)相對應。

+0

雖然,你以爲你就可以爲了更好地理解圖形上繪製的8500000點而不是8500? – roganjosh

+1

我建議使用熱圖,所以你不需要擺脫數據,你可以有一個更好的可視化。 –

回答

4

首先回答你的問題:

您應該使用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() 

這導致這一形象,這也是很好的看到分佈沿所需軸: