Ya sea que esté aprendiendo sobre un conjunto de datos o preparándose para publicar resultados de análisis relevantes, la visualización es una herramienta esencial. Pandas, la popular biblioteca de análisis de datos de Python, ofrece varias opciones diferentes para usar **.plot()** Incluso si se encuentra en las etapas iniciales de su viaje con Pandas, puede crear rápidamente diagramas básicos que brinden información valiosa sobre su opinión de datos.
Directorio de artículos
preparación de datos
Datos principales de la universidad utilizando la muestra de microdatos de uso público de la Encuesta sobre la comunidad estadounidense 2010-2012
import pandas as pd
df = pd.read_csv(
"数据科学必备 Pandas 数据可视化初学者指南/recent-grads.csv",
)
df.head()
Crear parcelas Pandas
El conjunto de datos contiene algunas columnas relacionadas con los ingresos de los graduados de cada carrera:
- "Mediana" es el ingreso medio de los trabajadores de tiempo completo durante todo el año.
- "P25th" es el percentil 25 de ingresos.
- "P75th" es el percentil 75 de ingresos.
- "Rango" es una clasificación profesional por ingresos medios.
.plot() devuelve un gráfico de líneas con datos para cada fila en el DataFrame. Los valores del eje x representan el rango de cada institución, y los valores 'P25th', 'Median' y 'P75th' se trazan en el eje y.
import matplotlib.pyplot as plt
df.plot(x="Rank", y=["P25th", "Median", "P75th"])
plt.show()
La información relevante se puede obtener de forma intuitiva.
- El ingreso medio cae a medida que desciende la clasificación. Eso es de esperar, ya que las clasificaciones están determinadas por el ingreso medio.
- Algunas carreras tienen una amplia brecha entre 25% y 75%. Aquellos con estos títulos pueden ganar mucho menos o mucho más que el ingreso medio.
- La brecha entre el 25% y el 75% para otras carreras es muy pequeña. Los salarios de quienes tienen estos títulos están muy cerca del ingreso medio.
.plot() tiene varios parámetros opcionales. El parámetro kind acepta 11 valores de cadena diferentes y determina qué tipo de trama creará:
- "área" se utiliza para gráficos de área .
- "barra" se utiliza para gráficos de barras verticales .
- "barh" se utiliza para gráficos de barras horizontales .
- "box" se usa para diagramas de caja .
- "hexbin" se usa para diagramas hexagonales .
- "hist" se utiliza para histogramas .
- "kde" se utiliza para gráficos de estimación de densidad del núcleo .
- "densidad" es un alias de "kde" .
- "línea" se utiliza para gráficos de líneas .
- "pastel" se utiliza para gráficos circulares .
- "dispersión" se utiliza para diagramas de dispersión .
Inmersión profunda en Matplotlib
Al llamar a **.plot()** en un objeto DataFrame, Matplotlib crea la trama entre bastidores.
Primero importe el módulo matplotlib.pyplot y cámbiele el nombre a plt. Luego llame a .plot() y pase la columna "Rank" del objeto DataFrame como primer parámetro y la columna "P75th" como segundo parámetro.
import matplotlib.pyplot as plt
plt.plot(df["Rank"], df["P75th"])
[<matplotlib.lines.Line2D at 0x7f859928fbb0>]
Dibuje un gráfico lineal, polilínea de relación de coordenadas bidimensional df["Rank"] y df["P75th"].
Un DataFrame puede crear exactamente el mismo gráfico utilizando el método .plot() del objeto.
df.plot(x="Rank", y="P75th")
<AxesSubplot:xlabel='Rank'>
Descripción e inspección de datos
Distribuciones e Histogramas
DataFrame no es la única clase en pandas con un método .plot(), los objetos Series brindan una funcionalidad similar. Puede tratar cada columna del DataFrame como un objeto Serie.
Un ejemplo de cómo crear un histograma utilizando la columna "Mediana" de un DataFrame creado a partir de datos de carreras universitarias.
median_column = df["Median"]
type(median_column)
pandas.core.series.Series
median_column.plot(kind="hist")
<AxesSubplot:ylabel='Frequency'>
El histograma muestra los datos divididos en 10 intervalos que van desde $20 000 a $120 000, cada uno con un ancho de $10 000. La forma del histograma es diferente de la distribución normal, que tiene una forma de campana simétrica con un pico en el medio.
Detección de valores atípicos
Los valores atípicos se refieren a puntos de muestra donde algunos valores de la muestra se desvían significativamente del resto, por lo que también se denominan valores atípicos. El análisis de valores atípicos es encontrar estos valores atípicos y luego analizarlos.
Pregunta: Si bien el ranking profesional no es muy alto, también puede obtener un salario correspondientemente mayor ¿Cómo se deben detectar estos datos?
Dichos valores atípicos se pueden detectar mediante un histograma.
Cree un nuevo DataFrame llamado top_5.
top_5 = df.sort_values(by="Median", ascending=False).head(5)
Crea un gráfico de barras para limitar los salarios de estas 5 carreras.
top_5.plot(x="Major", y="Median", kind="bar", rot=5, fontsize=4)
<AxesSubplot:xlabel='Major'>
Se encontró que el salario medio para las carreras de ingeniería petrolera era más de $ 20,000 más alto que el de otras carreras. Las ganancias de los mayores del segundo al cuarto lugar son relativamente cercanas.
Si un punto de datos tiene un valor mucho más alto o más bajo que los demás, es posible que se requiera una mayor investigación. Por ejemplo, puede ver columnas que contienen datos relacionados.
Una encuesta de todas las carreras con un salario promedio de más de $60,000 muestra tres columnas de ingresos.
top_medians = df[df["Median"] > 60000].sort_values("Median")
In [18]: top_medians.plot(x="Major", y=["P25th", "Median", "P75th"], kind="bar")
Out[18]: <AxesSubplot:xlabel='Major'>
Los percentiles 25 y 75 confirman lo que se ha visto anteriormente: las carreras de ingeniería petrolera son, con mucho, los recién graduados con mayores ingresos.
Comprobar dependencias
A menudo, desea ver si dos columnas de un conjunto de datos están relacionadas. Si elijo una especialidad con un ingreso medio más alto, ¿existe una menor probabilidad de desempleo?
Cree un diagrama de dispersión con "Mediana" y "Tasa_de_desempleo".
df.plot(x="Median", y="Unemployment_rate", kind="scatter")
No parece haber un patrón obvio y no existe una correlación significativa entre los ingresos y el desempleo.
Si bien un diagrama de dispersión es una excelente herramienta para obtener una primera impresión sobre las posibles correlaciones, ciertamente no es una evidencia clara de una conexión. Para comprender la correlación entre diferentes columnas, puede usar .corr() Si sospecha que hay una correlación entre dos valores, hay varias herramientas que puede usar para verificar su corazonada y medir qué tan fuerte es la correlación.
Para obtener más información, consulte los tres métodos de operación y los detalles de visualización del análisis de correlación de datos necesarios para la ciencia de datos.
Pero tenga en cuenta que aunque exista una correlación entre dos valores, no significa que un cambio en uno provoque un cambio en el otro. En otras palabras, correlación no implica causalidad.
Analizar datos categóricos
Para procesar grandes cantidades de información, el cerebro humano categoriza los datos, tanto consciente como inconscientemente. Esta técnica suele ser útil, pero está lejos de ser perfecta. A veces ponemos cosas en una categoría que, tras una inspección más detallada, no son tan similares. Por lo tanto, debe conocer algunas herramientas para verificar categorías y verificar si una clasificación determinada tiene sentido.
agrupamiento
El uso básico de las categorías es la agrupación y la agregación. La popularidad de cada categoría en el conjunto de datos de carreras universitarias se puede determinar usando .groupby() .
cat_totals = df.groupby("Major_category")["Total"].sum().sort_values()
cat_totals
Major_category
Interdisciplinary 12296.0
Agriculture & Natural Resources 75620.0
Law & Public Policy 179107.0
Physical Sciences 185479.0
Industrial Arts & Consumer Services 229792.0
Computers & Mathematics 299008.0
Arts 357130.0
Communications & Journalism 392601.0
Biology & Life Science 453862.0
Health 463230.0
Psychology & Social Work 481007.0
Social Science 529966.0
Engineering 537583.0
Education 559129.0
Humanities & Liberal Arts 713468.0
Business 1302376.0
Name: Total, dtype: float64
Trace un gráfico de barras horizontales que muestre los totales de todas las categorías en cat_totals.
cat_totals.plot(kind="barh", fontsize=4)
<AxesSubplot:ylabel='Major_category'>
relación
Para ver las diferencias entre categorías, los gráficos de barras verticales y horizontales suelen ser una buena opción. Si está interesado en las proporciones, un gráfico circular es una gran herramienta.
Combine todas las categorías con un total de menos de 100,000 en una categoría llamada "Otros" y cree un gráfico circular.
small_cat_totals = cat_totals[cat_totals < 100_000]
big_cat_totals = cat_totals[cat_totals > 100_000]
small_sums = pd.Series([small_cat_totals.sum()], index=["Other"])
big_cat_totals = big_cat_totals.append(small_sums)
big_cat_totals.plot(kind="pie", label="")
<AxesSubplot:>