在两个Numpy数组之间创建Pandas Dataframe,然后绘制散点图

时间:2015-04-29 16:43:29

标签: python numpy pandas scatter

我是一个比较新的numpy和pandas(我是一名实验性物理学家,所以我多年来一直在使用ROOT ......)。 ROOT中的常见图是2D散点图,其中给定x值和y值的列表,得到"热图"一个变量与另一个变量的类型散点图。

如何用numpy和Pandas最好地完成这项工作?我尝试使用Dataframe.plot()功能,但我甚至都在努力创建数据帧。

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

首先,这个数据框有形状(1,2),但我希望它有形状(5,2)。 如果我能够使数据帧具有正确的形状,我确信我可以找出DataFrame.plot()函数来绘制我想要的内容。

2 个答案:

答案 0 :(得分:3)

为了做你想做的事,我不会使用DataFrame绘图方法。我也是以前的实验物理学家,根据ROOT的经验,我认为你想要的Python模拟最好用matplotlib完成。在matplotlib.pyplot中有一个方法hist2d(),它将为您提供您正在寻找的那种热图。

至于创建数据框,一个简单的方法是:

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

答案 1 :(得分:3)

作为补充,您可以使用 pandas 系列 ,但必须已创建 DataFrame

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')

这是另一种可能有帮助的方式

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'])

而且,我发现karlijn (DatacCamp)中的示例非常有用

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)