¿Cómo trazar dos columnas de un dataframe pandas usando puntos?

Tengo un dataframe de pandas y me gustaría trazar los valores de una columna en comparación con los valores de otra columna. Afortunadamente, hay un método de plot asociado con los marcos de datos que parece hacer lo que necesito:

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

Desafortunadamente, parece que entre los estilos de trazado (enumerados aquí después del parámetro kind ) no hay puntos. Puedo usar líneas o barras o incluso densidad pero no puntos. ¿Hay alguna solución que pueda ayudar a resolver este problema?

Puede especificar el style de la línea trazada al llamar a df.plot :

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

El argumento de style también puede ser un dict o una list , por ejemplo:

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

Todos los formatos de estilo aceptados se enumeran en la documentación de matplotlib.pyplot.plot .

Salida

Para esto (y la mayoría de las ttwigs) no confiaría en los envoltorios de Pandas para matplotlib. En su lugar, simplemente use matplotlib directamente:

 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. 

y recuerde que puede acceder a una matriz NumPy de los valores de la columna con df.col_name_1.values por ejemplo.

Me encontré con problemas al usar esto con el trazado predeterminado de Pandas en el caso de una columna de valores de marca de tiempo con una precisión de milisegundos. Al tratar de convertir los objetos al tipo datetime64 , también descubrí un problema desagradable: < Pandas da un resultado incorrecto cuando se pregunta si los valores de la columna de marca de tiempo tienen un attr astype >.