2016-05-05 7 views
1

xyの両方の値を持つデータセットの二変量ccdfをプロットしようとしています。二変量CDF/CCDF分布Python

単変量私は非常にうまくプロットすることができますが、下は入力、コードは一意のデータセットです。

入力:これはデータポイントの最初の20行です。入力には1000sの行があり、ユーザーとキーワードの頻度関係があるので、col[1]col[3]をプロットする必要があります。

tweetcricscore 34 #afgvssco 51 
tweetcricscore 23 #afgvszim 46 
tweetcricscore 24 #banvsire 12 
tweetcricscore 456 #banvsned 46 
tweetcricscore 653 #canvsnk 1 
tweetcricscore 789 #cricket 178 
tweetcricscore 625 #engvswi 46 
tweetcricscore 86 #hkvssco 23 
tweetcricscore 3 #indvsban 1 
tweetcricscore 87 #sausvsvic 8 
tweetcricscore 98 #wt20  56 

コード:univeriateデータセット

import numpy as np 
import matplotlib.pyplot as plt 
from pylab import* 
import math 
from matplotlib.ticker import LogLocator 

data = np.genfromtxt('keyword.csv', delimiter=',', comments=None) 

d0=data[:,1] 
X0 = np.sort(d0) 
cdf0 = np.arange(len(X0))/float(len(X0)) 
ccdf0 = 1 - cdf0 
plt.plot(X0,ccdf0, color='b', marker='.', label='Keywords') 

plt.legend(loc='upper right') 
plt.xlabel('Freq (x)') 
plt.ylabel('ccdf(x)') 
plt.gca().set_xscale("log") 
#plt.gca().set_yscale("log") 
plt.show() 

私は二変量データポイントのためのいくつかのオプションを探しています。私はSeaborn Bivariate Distributionを参照しましたが、私はそれを適切な文脈で私のデータセットに入れることができません。

python、matplotlib、seaborn内の代替提案は、歓迎します.. ありがとうございます。

+0

この例では、列の1つに別個の値しかないので、二変量密度推定のポイントがわかりません。 –

+0

私はそれが最初の20行だけであることを言いました..データはすでにソートされています..両方の列は異なる値を持っています –

+0

次に、より代表的な例を更新する必要があります。ランダムなデータで十分です。 –

答えて

2

二変量分布あなたが説明しようとしている方法は、家の大きさ(input、x)や価格(output、y)など、しばしば連続的です。 )をキーワードの数に置き換えてください。これはおそらくキーワードrightに割り当てられたIDなのでしょうか?

カテゴリ(キーワード)があるように私の場合は、それはように見えます。各カテゴリは、2つの数字、tweetcricscoreおよびkeywordの数を有するように見える。 \ここ

あなたのコード:

cdf0 = np.arange(len(X0))/float(len(X0)) 

私にはあなたのxの範囲は、ちょうどそのラベルではなく意味のある値であることを示唆しています。

カテゴリプロットのより良いソースはhereです。

それはあなたが以下の上からあなたのデータを使用した例として、あなたのデータを使用しないだろう、ということ読んだ欲しいものはまだだと仮定すると、二変量分布を作成するには:

非常に無意味を生成
import numpy as np 
import seaborn as sns 

col_1 = np.array([34, 23, 24, 456, 653, 789, 625, 86, 3, 87, 98]) 
col_3 = np.array([51, 46, 12, 46, 1, 178, 46, 23, 1, 8, 56]) 

sns.jointplot(x=col_3, y=col_1) 

ここで図:

enter image description here

手動で、xとyのラベルを追加する必要があります。これは、pandasDataframesの代わりにnumpyarrayを渡しているからです。dictionariesと考えることができます。ここで、辞書の各キーは列のタイトルであり、値はnumpyの配列です。

乱数を使用して、よりランダムで連続的な関連データセットの表示方法を示します。

これはドキュメントの例です。これを与え

import numpy as np 
import seaborn as sns 
import pandas as pd 

mean, cov = [0, 1], [(1, .5), (.5, 1)] 
data = np.random.multivariate_normal(mean, cov, 200) 
df = pd.DataFrame(data, columns=["x", "y"]) 
sns.jointplot(x="x", y="y", data=df); 

enter image description here

彼らはただの分布を説明するためのチャートの上に棒グラフをとしてユニ変量チャート(あなたはおそらく生産持っているもの)と考えることができます1つまたは他の変数(x、y、col_3、col_1)

+0

ansありがとうございます。ユーザーとキーワードの関係についてはい、入力が表示されたら、それは直接表示されません。私の目的は、ユーザーの活動freq 'col [1]'と同じユーザーが使用しているキーワード 'col [3] 'の頻度との関係を示すことです。例のユーザtweetcricscoreは彼の総活動頻度が '#cricket'キーワード' 178 '回を使用した '789'です。だから私はこの関係の性質を示したいと思う。もし私が間違った質問を提起しているかもしれないなら、plsは私を訂正しますが、これは私が探しているものであり、関連性のあるものを見つけることができませんでした。 –

+0

だから私が正しく理解すれば、多くのTwitterユーザー(例えばtweetcricscore)と多くのハッシュタグがあります。彼の「総活動頻度」は何を表していますか? – mburke05

+0

はいtwitterのユーザーとキーワード..そして、活動の頻度は、ユーザーが投稿、リツイート、または他の人に返信する回数です。何度もユーザーが出演します.. –