我是一个比较新的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()
函数来绘制我想要的内容。
答案 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)