2013-07-23 20 views
40

Mam ramkę danych pandy i chciałbym wykreślić wartości z jednej kolumny w porównaniu do wartości z innej kolumny. Na szczęście jest plot sposób powiązany z danymi ramek, które wydaje się zrobić to, czego potrzebuję:Jak narysować dwie kolumny ramki danych pandy przy użyciu punktów?

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

Niestety, wygląda na to między stylami wydruku (wymienionych here po parametrze kind) nie ma punktów. Mogę używać linii lub prętów, a nawet gęstości, ale nie punktów. Czy jest praca, która może pomóc w rozwiązaniu tego problemu.

Odpowiedz

48

Można określić style na wykreślonej linii Dzwoniąc df.plot:

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

style argument może być również dict lub list, np:

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

Wszystkie Akceptowane formaty stylu są wymienione w dokumentacji matplotlib.pyplot.plot.

Output

39

Do tego (i najbardziej kreślenia) nie będę polegać na owijarki Pandy do matplotlib. Zamiast tego, po prostu użyć matplotlib bezpośrednio:

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. 

i pamiętać, że można uzyskać dostęp do tablicy numpy wartości w kolumnie z df.col_name_1.values na przykład.

Wpadłem w kłopoty używając tej opcji z domyślnym wykreślaniem Pandy w przypadku kolumny wartości datownika z dokładnością do milisekund. Próbując przekonwertować obiekty na typ datetime64, odkryłem również nieprzyjemny problem: < Pandas gives incorrect result when asking if Timestamp column values have attr astype>.

+1

To było bardzo pomocne dla mnie. Dzięki!! – ChandanJha

Powiązane problemy