Saltar al contenido

Indice / Herramientas / 0.2

Positron: el IDE pensado para datos

VS Code esta hecho para escribir programas. Trabajar con datos es otra cosa: se escribe poco y se mira mucho. Positron es el mismo editor con los paneles que faltan para eso, y es el que te recomiendo para toda la parte de pandas.

Antes: 0.1 Depurar en VS Code: breakpoints y la consola Despues: cierra su rama

Para que sirve

Fijate el bucle real de la leccion anterior: leer el archivo, mirar los tipos, mirar los valores raros, contar cuantos hay, mirar de nuevo. De cinco pasos, cuatro son mirar. Y en un editor de programas, mirar cuesta caro: hay que escribir un print, elegir de antemano que se quiere ver, y leer el resultado como texto plano en una terminal.

Un IDE de datos da vuelta la proporcion. La tabla esta siempre a la vista, las variables cargadas se listan solas y el resumen de una columna esta a un click. No es comodidad: es que ves cosas que no estabas buscando, que es justo donde se esconden los errores de datos. Al final de esta leccion vas a encontrar una nota imposible que nadie fue a buscar.

ELI5Explicado facil

Es la diferencia entre revisar una caja de fotos con los ojos cerrados, sacando una y pidiendo que te la describan, o desparramarlas todas sobre la mesa.

Con los ojos cerrados encontras lo que preguntas. Sobre la mesa ves ademas la foto que esta al reves, la que esta rota y la que no es de este album. Ninguna de esas tres se te hubiera ocurrido pedir.

Que es

Positron es el IDE de ciencia de datos de Posit - los mismos que hacen RStudio -, para Python y R. Esta construido sobre Code OSS, que es el nucleo abierto de Visual Studio Code.

Ese ultimo dato es el que importa para vos: la interfaz, los atajos, la paleta de comandos, la forma de abrir carpetas y el editor de texto son los mismos. No estas aprendiendo un programa nuevo, estas agregandole cuatro paneles al que ya sabes usar.

Los paneles, que son toda la diferencia

Lo que Positron pone a la vista
PanelQue da
ConsolaUna sesion de Python viva. Se ejecuta linea a linea o por celdas, y el estado queda cargado entre corridas
VariablesTodo lo que hay en memoria, con su tipo y su forma. Un DataFrame se ve sin escribir print
Data ExplorerLa vista de planilla: ordenar, filtrar y el resumen de cada columna. Aguanta millones de filas
PlotsLos graficos quedan en un panel con historial, en vez de abrirse en ventanas sueltas
HelpLa documentacion de la funcion, adentro del IDE

Desde la version 2026.03, ademas, la salida de una celda que devuelve un DataFrame de pandas (o de polars) se dibuja directamente como una grilla interactiva - se scrollea, se ordena, se seleccionan y copian celdas - con un boton Open in Data Explorer al lado.

Lo mismo, paso a paso

Seis pasos sobre el mismo archivo de la leccion 0.1. Prestale atencion al paso 3: es donde el panel contesta de una sola vez las tres preguntas que alla nos costaron cinco expresiones en la consola.

Paso a pasoEl Data Explorer: ordenar, filtrar y leer el resumen sin escribir codigo
  1. ConsolaEl archivo se lee en la consola, como siempre. La diferencia empieza despues: notas aparece sola en el panel de Variables, con su forma, y al lado un icono para abrirla.
    notas = pd.read_csv("estudiantes_notas.csv")
  2. Click en el encabezado nota_3Un click en el encabezado ordena por esa columna. Como nota_3 es texto, el orden es alfabetico, y el guion suelto queda arriba de todo: las dos filas rotas suben solas sin que nadie las buscara.
    notas.sort_values("nota_3")
  3. Resumen de la columnaEl panel de resumen contesta de una sola vez las tres preguntas de la leccion anterior: de que tipo es la columna, cuantos ausentes tiene y cuantos valores distintos. Que diga texto donde esperabas numero es el diagnostico completo.
    notas["nota_3"].describe()
  4. FiltroLa barra de filtros deja escribir una condicion sin tocar el codigo. Filtrando por el guion quedan las dos filas culpables, con su legajo y su nombre. Es el mismo resultado que en la leccion 0.1, sin escribir una sola expresion.
    notas[notas["nota_3"] == "-"]
  5. Click en el encabezado nota_2Sacado el filtro, el mismo panel sobre una columna numerica muestra minimo, maximo, media y mediana. Y ahi salta otra cosa que nadie estaba buscando: la nota maxima es 99 en una escala de 0 a 10.
    notas["nota_2"].describe()
  6. Leer el resumenCompara la media con la mediana: 8.17 contra 5.45. Un solo valor imposible corrio el promedio del curso casi tres puntos para arriba. Ese hallazgo no costo ni una linea de codigo, y es exactamente el tipo de cosa que un print nunca te muestra, porque no se te ocurre pedirla.
    notas["nota_2"].agg(["mean", "median"])
El hallazgo del ultimo paso no lo fue a buscar nadie

La nota maxima de nota_2 es 99 en una escala de 0 a 10, y la media del curso quedo en 8.17 cuando la mediana es 5.45. Nadie estaba investigando eso: aparecio solo, por mirar el resumen de una columna mientras se buscaba otra cosa. Un print nunca te lo muestra, porque un print solo contesta lo que preguntaste.

El panel no es magia: es codigo que no escribiste

Conviene saber que hay atras de cada panel, por dos razones: para no depender del IDE, y porque lo que se entrega es codigo, no una vista.

El panel de Variables

EjemploLo que el panel de Variables resume, escrito como codigo
import pandas as pd

notas = pd.read_csv("estudiantes_notas.csv")

# Esto es exactamente lo que el panel muestra al lado del nombre de la variable.
print("forma:", notas.shape)
print()
print(notas.dtypes)
forma: (40, 5)

legajo            str
estudiante        str
nota_1        float64
nota_2        float64
nota_3            str
dtype: object

El resumen de una columna

EjemploEl resumen por columna, y el hallazgo que regala
import pandas as pd

notas = pd.read_csv("estudiantes_notas.csv")

# Sobre una columna de texto, describe cuenta y cuenta distintos.
print("nota_3 (texto):")
print(notas["nota_3"].describe().to_string())

# Sobre una numerica, da los extremos. Ahi salta lo imposible.
print()
print("nota_2 (numero):")
print(notas["nota_2"].describe().round(2).to_string())

print()
print("media  :", round(notas["nota_2"].mean(), 2))
print("mediana:", round(notas["nota_2"].median(), 2))
print("Un solo 99 en una escala de 0 a 10 corre la media casi tres puntos.")
print("La mediana casi no se mueve: por eso conviene mirar las dos.")
nota_3 (texto):
count      37
unique     29
top       7.8
freq        3

nota_2 (numero):
count    40.00
mean      8.17
std      14.85
min       3.00
25%       4.65
50%       5.45
75%       7.43
max      99.00

media  : 8.17
mediana: 5.45
Un solo 99 en una escala de 0 a 10 corre la media casi tres puntos.
La mediana casi no se mueve: por eso conviene mirar las dos.

Ordenar y filtrar

EjemploOrdenar y filtrar como en el explorador, pero dejandolo escrito
import pandas as pd

notas = pd.read_csv("estudiantes_notas.csv")

# Ordenar por una columna de texto es orden alfabetico: el guion queda primero.
print(notas.sort_values("nota_3")[["legajo", "nota_3"]].head(4).to_string(index=False))

print()
# Filtrar. El explorador hace esto mismo con un formulario, sin tocar el objeto.
print(notas[notas["nota_3"] == "-"][["legajo", "estudiante"]].to_string(index=False))

print()
print("Ojo: ni ordenar ni filtrar en el panel cambian el DataFrame.")
print("Son una lupa, no una edicion. Lo que se guarda es el codigo, no la vista.")
legajo nota_3
 L2621      -
 L2629      -
 L2618   -1.0
 L2633    3.2

legajo      estudiante
 L2621 Zacarías Juárez
 L2629  Zacarías Gómez

Ojo: ni ordenar ni filtrar en el panel cambian el DataFrame.
Son una lupa, no una edicion. Lo que se guarda es el codigo, no la vista.
El explorador es una lupa, no una edicion

Ordenar o filtrar en el panel no modifica el DataFrame: cambia como lo estas mirando. Si el filtro tiene que quedar, hay que escribirlo en el codigo. Es la misma regla de siempre - lo que no esta en el archivo .py no paso -, y es la primera confusion de todo el que viene de Excel.

Lo que aprendiste en 0.1 se usa igual

Positron trae el Python Debugger (debugpy) como extension precargada, que es la misma infraestructura de depuracion que VS Code. El breakpoint se pone igual, clickeando la canaleta a la izquierda del numero de linea hasta que aparece el punto rojo, y la depuracion se maneja con los mismos controles.

Dicho de otra forma: la leccion anterior no se vence si te cambias. Es el mismo Python, el mismo depurador y otro tablero.

Dos cosas que hay que saber antes de instalarlo

Las extensiones no vienen del Marketplace de Microsoft

Microsoft no permite usar su Marketplace fuera de sus propias compilaciones de VS Code. Positron toma las extensiones del Posit Public Package Manager (P3M), que sirve el mismo catalogo que Open VSX.

La consecuencia concreta: las extensiones Python y Pylance oficiales de Microsoft no estan. No es un problema a resolver, es como funciona: Positron trae en su lugar un fork propio de la extension de Python, integrado con su consola y su panel de ayuda, mas pyrefly - un servidor de lenguaje que da resaltado, tipos y autocompletado - y el linter Ruff, los dos precargados.

La licencia

Positron se publica bajo la Elastic License 2.0, una licencia source-available: es gratis para uso personal, academico y comercial. La restriccion importante es una sola - no ofrecerlo como servicio alojado a terceros sin acuerdo con Posit - y hay una clausula especifica que permite a las instituciones educativas alojarlo para sus estudiantes con fines de aprendizaje. Algunas piezas, como el kernel y el formateador de R, van bajo MIT.

Para esta materia: se puede bajar, usar y recomendar sin ninguna letra chica.

Donde se rompe

(sin error) no aparece la extension de Python de Microsoft

Causa: no esta, y no va a estar: el catalogo es el de P3M / Open VSX, no el Marketplace de Microsoft.

Arreglo: ninguno, porque no falta nada. El soporte de Python ya viene puesto con el fork propio de Posit, pyrefly y Ruff.

(sin error) ordene en el explorador y el CSV salio igual

Causa: el explorador cambia la vista, no el objeto. El to_csv escribe el DataFrame, que nunca se ordeno.

Arreglo: lo que tenga que quedar va escrito: notas = notas.sort_values("nota_3"). La vista sirve para decidir, el codigo para que pase.

(sin error) el Data Explorer no encuentra mi DataFrame

Causa: el explorador muestra objetos que existen en memoria, y correr el archivo entero con F5 abre un proceso aparte que termina y se lleva todo.

Arreglo: ejecuta el codigo en la consola - por celdas o seleccionando y mandando a ejecutar -, o parate en un breakpoint. El panel muestra lo que hay vivo en la sesion.

(sin error) mi companero corre lo mismo y le da otra cosa

Causa: una consola con estado acumulado. Una variable que definiste hace media hora y despues borraste del archivo sigue en memoria, y el codigo parece andar cuando ya no anda.

Arreglo: antes de dar algo por terminado, reinicia la sesion y corre el archivo de arriba abajo. Es el precio de tener una consola viva, y lo paga cualquier entorno interactivo, cuadernos de Jupyter incluidos.

Aca hay que elegir

¿VS Code o Positron?

No hay que abandonar nada: se instalan al lado y los dos leen los mismos archivos .py. La pregunta util no es cual es mejor sino que estas haciendo hoy:

  • Positron - cuando el trabajo es explorar: abrir un archivo que no conoces, buscar de que se enferman los datos, probar transformaciones de a una y mirar el resultado. Es toda la unidad 5 de esta materia.
  • VS Code - cuando el trabajo es construir: un proyecto con varios modulos, tests, git, extensiones que solo estan en el Marketplace de Microsoft.
  • Los dos - que es lo que hace mucha gente: explorar en Positron, y escribir el programa final donde ya tenes todo configurado.

Para esta materia la recomendacion es Positron, con una condicion: que sepas hacer a mano lo que el panel te muestra. Por eso los ejemplos de arriba estan escritos en codigo. Un IDE que te ahorra pensar es una trampa; uno que te ahorra tipear es una herramienta.

Recetario

Positron de un vistazo
CosaComo es
Quien lo hacePosit, los de RStudio
LenguajesPython y R, los dos de primera
BaseCode OSS: mismos atajos y mismo editor que VS Code
LicenciaElastic License 2.0. Gratis para uso personal, academico y comercial
ExtensionesP3M / Open VSX. No hay Python ni Pylance de Microsoft
Python incluidoFork propio de la extension, pyrefly y Ruff
Depuraciondebugpy precargado: igual que en la leccion 0.1
Ver una tablaData Explorer: ordenar, filtrar, resumen por columna
Celda con un DataFrameGrilla interactiva con boton Open in Data Explorer (desde 2026.03)
Lo que se entregaSiempre el codigo. La vista del panel no se guarda
De donde salio todo esto

Los datos de esta leccion se comprobaron contra la documentacion oficial: la presentacion, la licencia, las extensiones, la guia de Python y las notas de la version 2026.03. Es una herramienta que se mueve rapido: si algo de aca no coincide con lo que ves, la documentacion manda.

Ponete a prueba

1. ¿Sobre que esta construido Positron, y que implica para vos?Nivel 1 · Recordar
2. ¿Cuanto cuesta usar Positron para cursar esta materia?Nivel 1 · Recordar
3. Instalaste Positron y buscas la extension Pylance de Microsoft. No aparece. ¿Que pasa?Nivel 2 · Predecir la salida
4. Ordenaste la tabla por nota_3 en el Data Explorer y despues guardaste con to_csv. El archivo salio sin ordenar. ¿Por que?Nivel 2 · Predecir la salida
5. Aprendiste a poner breakpoints en VS Code y te cambias a Positron. ¿Que pasa con eso?Nivel 3 · Elegir entre dos casi correctas
6. Corriste el archivo entero con F5 y el Data Explorer no encuentra tu DataFrame. ¿Por que?Nivel 3 · Elegir entre dos casi correctas
7. Abris estudiantes_notas.csv en el Data Explorer y mirando el resumen de nota_2 ves esto. ¿Que conclusion se saca?
Minimo    3.00
Maximo   99.00
Media     8.17
Mediana   5.45
Nivel 4 · Encontrar el defecto