2015-04-29 9 views
13

Ben saymak ve pandalar ile nispeten yeni (Ben deneysel bir fizikçi olduğum için ROOT yıllardır kullanıyorum ...). KÖK'teki ortak bir grafik, x ve y değerlerinin bir listesi verildiğinde, bir değişkenin diğerine göre "ısı haritası" tipi dağılım grafiği oluşturduğu bir 2D dağılım grafiğidür.İki Numpy dizisi arasında Pandas Dataframe oluşturma, daha sonra scatter arsa çizmek

Bu en iyi nasıl numpy ve Panda'lar ile gerçekleştirilir? Dataframe.plot() işlevini kullanmaya çalışıyorum, ancak Dataframe'i bile oluşturmaya çalışıyorum.

import numpy as np 
import pandas as pd 
x = np.random.randn(1,5) 
y = np.sin(x) 
df = pd.DataFrame(d) 

Önce kapalı, bu dataframe (1,2) şekline sahiptir, ama şekli (5,2) sahip olmak istiyoruz. Veri karesini doğru şekle getirebilirsem, istediğimi çizmek için DataFrame.plot() işlevini anlayabileceğime eminim.

+0

, " lütfen "vb. Ayrıca, sorunuza" çözülmüş "eklemeniz gerekmiyor. "Cevap kabul et" budur. –

cevap

27

DataFrames oluşturmanın birçok yolu vardır. 1 boyutlu sütun vektörler göz önüne alındığında, bunu kimin tuşları sütun isimleri ve değerleri 1 boyutlu sütun vektörleri bir dicti geçirerek bir DataFrame oluşturabilirsiniz:

sen, İstemem istediğini yapabilmek için
import numpy as np 
import pandas as pd 
x = np.random.randn(5) 
y = np.sin(x) 
df = pd.DataFrame({'x':x, 'y':y}) 
df.plot('x', 'y', kind='scatter') 
3

DataFrame çizim yöntemlerini kullanmayın. Ben de eski bir deneysel fizikçiyim ve ROOT ile deneyime dayanarak istediğim Python analogunun matplotlib kullanarak en iyi şekilde elde edildiğini düşünüyorum. Matplotlib.pyplot'te, aradığınız ısı haritası türünü verecek olan hist2d() yöntemi vardır.

df=pd.DataFrame({'x':x, 'y':y}) 
2

tamamlayıcı, sen pandalarSerisi kullanabilirsiniz, ancak DataFrame oluşturulmuş olması gerekir: dataframe, bunu yapmak için kolay bir yol oluşturarak gelince

olduğunu.

import numpy as np 
import pandas as pd 

x = np.linspace(0,2*np.pi) 
y = np.sin(x) 

#df = pd.DataFrame() 
#df['X'] = pd.Series(x) 
#df['Y'] = pd.Series(y) 

# You can MIX 
df = pd.DataFrame({'X':x}) 
df['Y'] = pd.Series(y) 

df.plot('X', 'Y', kind='scatter') 

Bu

import numpy as np 
import pandas as pd 

x = np.linspace(0,2*np.pi) 
y = np.sin(x) 

df = pd.DataFrame(data=np.column_stack((x,y)),columns=['X','Y']) 

yardımcı Ayrıca, ben çok yararlı karlijn (DatacCamp) örnekler bulabileceğiniz başka bir yoludur

"teşekkür" gibi Resmiyetle gerek yoktur
import numpy as np 
import pandas as pd 

TAB = np.array([[''  ,'Col1','Col2'], 
       ['Row1' , 1 , 2 ], 
       ['Row2' , 3 , 4 ], 
       ['Row3' , 5 , 6 ]]) 

dados = TAB[1:,1:] 
linhas = TAB[1:,0] 
colunas = TAB[0,1:] 

DF = pd.DataFrame(
    data=dados, 
    index=linhas, 
    columns=colunas 
) 

print('\nDataFrame:', DF)