n3u*_*ino 27 python numpy scatter pandas
我对numpy和pandas相对较新(我是一名实验性物理学家,所以我多年来一直使用ROOT ......).ROOT中的常见图是2D散点图,其中给定x和y值的列表,得到一个变量与另一个变量的"热图"型散点图.
如何用numpy和Pandas最好地完成这项工作?我正在尝试使用该Dataframe.plot()
功能,但我甚至都在努力创建Dataframe.
import numpy as np
import pandas as pd
x = np.random.randn(1,5)
y = np.sin(x)
df = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)
首先,这个数据框有形状(1,2),但我希望它有形状(5,2).如果我能够使数据帧具有正确的形状,我相信我可以找出DataFrame.plot()
绘制我想要的功能.
unu*_*tbu 54
有许多方法可以创建DataFrame.给定1维列向量,您可以通过向其传递一个dict来创建DataFrame,该dict的键是列名,其值是1维列向量:
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')
Run Code Online (Sandbox Code Playgroud)
为了做你想做的事,我不会使用 DataFrame 绘图方法。我也是一名前实验物理学家,根据 ROOT 的经验,我认为你想要的 Python 模拟最好使用 matplotlib 来完成。在 matplotlib.pyplot 中,有一个方法 hist2d(),它将为您提供您正在寻找的热图类型。
至于创建数据框,一个简单的方法是:
df=pd.DataFrame({'x':x, 'y':y})
Run Code Online (Sandbox Code Playgroud)
作为补充,您可以使用pandas Series,但必须已创建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')
Run Code Online (Sandbox Code Playgroud)
这是另一种可能有帮助的方法
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'])
Run Code Online (Sandbox Code Playgroud)
而且,我发现来自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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
51789 次 |
最近记录: |