Noktaları kullanarak bir panda veri çerçevesinin iki sütunu nasıl çizilir?


97

Pandalar veri çerçevem ​​var ve bir sütundaki değerlerle başka bir sütundaki değerlerin grafiğini çizmek istiyorum. Neyse ki, plotihtiyacım olan şeyi yapıyor gibi görünen veri çerçeveleriyle ilişkili bir yöntem var :

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

Ne yazık ki, çizim stilleri arasında ( buradakind parametreden sonra listelenmiştir ) puan yok gibi görünüyor . Çizgileri, çubukları veya hatta yoğunluğu kullanabilirim ama noktaları kullanamıyorum. Bu sorunu çözmeye yardımcı olabilecek bir çalışma var mı?

Yanıtlar:


116

Arama stylesırasında çizilen hattın belirtebilirsiniz df.plot:

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

styleArgüman da olabilir dictya da list, örneğin:

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

Kabul edilen tüm stil formatları belgelerinde listelenmiştir matplotlib.pyplot.plot.

Çıktı


79

Bunun için (ve çoğu komplo için) Pandaların sarmalayıcılarına matplotlib'e güvenmem. Bunun yerine doğrudan matplotlib'i kullanın:

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.

ve df.col_name_1.valuesörneğin ile sütun değerlerinin NumPy dizisine erişebileceğinizi unutmayın .

Milisaniye hassasiyetli bir Zaman Damgası değerleri sütunu durumunda Pandas varsayılan çizimiyle bunu kullanırken sorunla karşılaştım. Nesneleri datetime64türe dönüştürmeye çalışırken , kötü bir sorun da keşfettim: < Pandalar, Zaman Damgası sütun değerlerinin attr astype olup olmadığını sorarken yanlış sonuç veriyor >.


5

Pandasmatplotlibtemel grafikler için bir kitaplık olarak kullanır . Sizin durumunuzda en kolay yol aşağıdakileri kullanacaktır:

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

görüntü açıklamasını buraya girin

Bununla birlikte, seaborntemel seviyeye geçmeden daha özelleştirilmiş arazilere sahip olmak istiyorsanız alternatif bir çözüm olarak kullanmanızı tavsiye ederim.Bu matplotlib.durumda çözüm aşağıdaki olacaktır:

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)

görüntü açıklamasını buraya girin


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.