2013-07-23 28 views
40

Ho una cornice dati panda e vorrei stampare valori da una colonna rispetto ai valori di un'altra colonna. Per fortuna, c'è plot metodo associato ai data-frame che sembra fare quello che mi serve:Come stampare due colonne di un frame di dati panda usando i punti?

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

Purtroppo, sembra che tra gli stili di stampa (elencati here dopo il parametro kind), non ci sono punti. Posso usare linee o barre o anche densità ma non punti. C'è un lavoro in giro che può aiutare a risolvere questo problema.

risposta

48

È possibile specificare il style della linea tracciata al momento della chiamata df.plot:

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

L'argomento style può anche essere un dict o list, ad esempio:

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

Tutti i formati di stile accettati sono elencato nella documentazione di matplotlib.pyplot.plot.

Output

39

Per questo (e la maggior parte plotting) non vorrei contare sui wrapper Pandas a matplotlib. Invece, basta usare matplotlib direttamente:

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. 

e ricorda che è possibile accedere a una serie NumPy dei valori della colonna con df.col_name_1.values per esempio.

Mi sono imbattuto in problemi utilizzando questo con il tracciamento predefinito di Pandas nel caso di una colonna di valori di Timestamp con precisione millisecondo. Nel tentativo di convertire gli oggetti nel tipo datetime64, ho anche scoperto un problema sgradevole: < Pandas gives incorrect result when asking if Timestamp column values have attr astype>.

+1

È stato molto utile per me. Grazie!! – ChandanJha

Problemi correlati