ポイントを使用してパンダデータフレームの2つの列をプロットする方法


96

パンダデータフレームがあり、ある列の値と別の列の値をプロットしたいと思います。幸い、plot私が必要としているように見えるデータフレームに関連付けられたメソッドがあります。

df.plot(x='col_name_1', y='col_name_2')

残念ながら、プロットスタイル(ここではkindパラメーターの後にリストさています)にはポイントがないようです。線や棒、密度まで使用できますが、点は使用できません。この問題の解決に役立つ回避策はありますか?

回答:


115

style呼び出すときに、プロットされたラインのを指定できますdf.plot

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

出力


78

これ(およびほとんどのプロット)では、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配列にアクセスできることを覚えておいてください。

ミリ秒の精度のTimestamp値の列の場合、これをPandasのデフォルトのプロットで使用すると問題が発生しました。オブジェクトをdatetime64タイプに変換しようとしたときに、厄介な問題も発見しました。


3

Pandasmatplotlib基本的なプロットのライブラリとして使用します。あなたのケースで最も簡単な方法は以下を使用します:

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

ここに画像の説明を入力してください

ただし、seaborn基本的なレベルに移行せずにさらにカスタマイズしたプロットが必要な場合は、代替ソリューションとして使用することをお勧めしますmatplotlib.。この場合、ソリューションは次のようになります。

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)

ここに画像の説明を入力してください


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.