web-dev-qa-db-ja.com

Pandas 2つのNumpy配列間のデータフレームを作成し、散布図を描画します

Numpyとpandas(私は実験物理学者なので、何年もROOTを使用してきました...)は比較的新しいです。ROOTの一般的なプロットは2D散布図です。 、x値とy値のリストを指定すると、1つの変数と他の変数の「ヒートマップ」タイプの散布図が作成されます。

これはどのように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)
_

まず、このデータフレームには形状(1,2)がありますが、形状(5,2)が必要です。データフレームを正しい形状にできたら、DataFrame.plot()関数を見つけて必要なものを描画できると確信しています。

25
n3utrino

DataFrameを作成する方法はいくつかあります。 1次元の列ベクトルを指定すると、キーが列名で値が1次元の列ベクトルである辞書を渡すことで、DataFrameを作成できます。

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

補足として、pandasSeries、ただし、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)
3
famaral42

あなたが望むことをするために、私はDataFrameのプロットメソッドを使用しません。私は元実験物理学者でもあり、ROOTでの経験に基づいて、Pythonアナログはmatplotlibを使用して最適に達成されると思います。matplotlib.pyplotにはhist2d()というメソッドがあります。 、探しているヒートマップのようなものを提供します。

データフレームを作成するための簡単な方法は次のとおりです。

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