パンダのデータフレームがあり、ある列の値と別の列の値をプロットしたいと思います。幸いなことに、データフレームに関連付けられたplot
メソッドがあり、必要なことを実行しているようです。
df.plot(x='col_name_1', y='col_name_2')
残念ながら、プロットスタイル(kind
パラメーターの後に here がリストされている)の中にはポイントがないように見えます。線や棒、さらには密度を使用できますが、ポイントは使用できません。この問題の解決に役立つ回避策はありますか。
df.plot
を呼び出すときに、プロットされた行のstyle
を指定できます。
df.plot(x='col_name_1', y='col_name_2', style='o')
style
引数は、dict
またはlist
にすることもできます。例:
import numpy as np
import pandas as pd
d = {'one' : np.random.Rand(10),
'two' : np.random.Rand(10)}
df = pd.DataFrame(d)
df.plot(style=['o','rx'])
受け入れられるすべてのスタイル形式は、 matplotlib.pyplot.plot
のドキュメントにリストされています。
このため(およびほとんどのプロット)、matplotlibのPandasラッパーに依存しません。代わりに、matplotlibを直接使用します。
import matplotlib.pyplot as plt
plt.scatter(df['col_name_1'], df['col_name_2'])
plt.show() # Depending on whether you use IPython or interactive mode, etc.
また、たとえばdf.col_name_1.values
を使用して、列の値のNumPy配列にアクセスできることを忘れないでください。
ミリ秒精度のタイムスタンプ値の列の場合、Pandasのデフォルトプロットでこれを使用すると問題が発生しました。オブジェクトをdatetime64
型に変換しようとして、厄介な問題も発見しました:< Timestamp列の値にattr astype があるかどうかを尋ねると、Pandasが間違った結果を出します> 。
Pandas
は、matplotlib
を基本プロットのライブラリとして使用します。あなたの場合の最も簡単な方法は次を使用します:
import pandas as pd
import numpy as np
#creating sample data
sample_data={'col_name_1':np.random.Rand(20),
'col_name_2': np.random.Rand(20)}
df= pd.DataFrame(sample_data)
df.plot(x='col_name_1', y='col_name_2', style='o')
ただし、matplotlib.
の基本レベルに入らずに、よりカスタマイズされたプロットが必要な場合は、代替ソリューションとしてseaborn
を使用することをお勧めします。この場合、ソリューションは次のようになります。
import pandas as pd
import seaborn as sns
import numpy as np
#creating sample data
sample_data={'col_name_1':np.random.Rand(20),
'col_name_2': np.random.Rand(20)}
df= pd.DataFrame(sample_data)
sns.scatterplot(x="col_name_1", y="col_name_2", data=df)