Advanced-Value-Counts es un paquete de pitón que contiene la clase AdvancedValueCounts que hace uso de los pandas ' .value_counts() , .groupby() y Seaborn para obtener fácilmente mucha información sobre los recuentos de una columna (categórica) en un marco de datos de Pandas. El potencial de este paquete está en su punto máximo cuando desea información de los recuentos de una columna después de una agrupación: df.groupby(groupby_col)[column].value_counts() . Vea el uso sobre cómo usar AdvancedValueCounts . Lea este artículo medio o consulte este cuaderno para obtener una explicación sobre el valor agregado de este paquete.
Tabla de contenido :
pip install advanced-value-counts
Si la superficie de los errores, actualice PIP y SetupTools
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade setuptools
git clone https://github.com/sTomerG/advanced-value-counts.git
cd advanced-value-counts
pip install -e .
# optional but potentially crucial
pip install -r requirements/requirements.txt
Para probar si la instalación fue ejecutada en el directorio de conteos de valor avanzado (se esperan depreciones de entrega )
pytest
El siguiente ejemplo utiliza una versión modificada del conjunto de datos Titanic de Kaggle, que se puede encontrar en este gitropo aquí.
El código de este cuaderno se puede encontrar aquí.
from advanced_value_counts . avc import AdvancedValueCounts
import pandas as pd
# read in the data file
df = pd . read_csv ( '../tests/data/titanic.csv' , usecols = [ 'CabinArea' , 'Title' ])
df . head ()| CabinAea | Título | |
|---|---|---|
| 0 | Yaya | Señor. |
| 1 | do | Señora. |
| 2 | Yaya | Extrañar. |
| 3 | do | Señora. |
| 4 | Yaya | Señor. |
# create an instance of AdvancedValueCounts
avc = AdvancedValueCounts ( df = df , column = 'Title' )
# print the AdvancedValueCounts DataFrame
avc . avc_df| relación | contar | |
|---|---|---|
| Título | ||
| Señor. | 0.580247 | 517 |
| Extrañar. | 0.204265 | 182 |
| Señora. | 0.140292 | 125 |
| Maestro. | 0.044893 | 40 |
| _n / A | 0.007856 | 7 |
| Rdo. | 0.006734 | 6 |
| Importante. | 0.002245 | 2 |
| Columna. | 0.002245 | 2 |
| Mlle. | 0.002245 | 2 |
| Condesa. | 0.001122 | 1 |
| Capitán | 0.001122 | 1 |
| EM. | 0.001122 | 1 |
| Señor. | 0.001122 | 1 |
| Dama. | 0.001122 | 1 |
| Mme. | 0.001122 | 1 |
| Don. | 0.001122 | 1 |
| Jonkheer. | 0.001122 | 1 |
Establezca min_group_count en 5 para agrupar grupos pequeños en el grupo '_other'
avc . min_group_count = 5
avc . avc_df| relación | contar | |
|---|---|---|
| Título | ||
| Señor. | 0.580247 | 517 |
| Extrañar. | 0.204265 | 182 |
| Señora. | 0.140292 | 125 |
| Maestro. | 0.044893 | 40 |
| _otro | 0.015713 | 14 |
| _n / A | 0.007856 | 7 |
| Rdo. | 0.006734 | 6 |
Parámetros de la clase AdvancedValueCounts para ajustar para grupos pequeños para una sola columna:
dropna : bool = False
min_group_count : int = 1 # does not effect NA or the '_other' group
min_group_ratio : float = 0 # does not effect NA or the '_other' group También es posible usar column en combinación con parámetro groupy_col: str = None para imitar el comportamiento de df.groupby(groupby_col)[column].value_counts()
avc_grouped = AdvancedValueCounts ( df = df , column = 'Title' , groupby_col = 'CabinArea' )
avc_grouped . avc_df| contar | subgrupo_ratio | subgr_r_diff_subgr_all | r_vs_total | ||
|---|---|---|---|---|---|
| CabinAea | Título | ||||
| A | Columna. | 1 | 0.066667 | 0.064422 | 0.001122 |
| Dama. | 1 | 0.066667 | 0.065544 | 0.001122 | |
| Maestro. | 1 | 0.066667 | 0.021773 | 0.001122 | |
| Señor. | 11 | 0.733333 | 0.153086 | 0.012346 | |
| Señor. | 1 | 0.066667 | 0.065544 | 0.001122 | |
| ... | ... | ... | ... | ... | ... |
| _n / A | Señora. | 81 | 0.117904 | -0.022388 | 0.090909 |
| EM. | 1 | 0.001456 | 0.000333 | 0.001122 | |
| Rdo. | 6 | 0.008734 | 0.002000 | 0.006734 | |
| _n / A | 4 | 0.005822 | -0.002034 | 0.004489 | |
| _total | 687 | 1.000000 | 0.000000 | 0.771044 |
74 filas × 4 columnas
Para obtener una mejor descripción general de los datos, establezca atributos para ajustar el tamaño del grupo y redondear las relaciones
avc_grouped . min_group_ratio = 0.05
avc_grouped . min_subgroup_count = 5
avc_grouped . round_ratio = 3
avc_grouped . avc_df| contar | subgrupo_ratio | subgr_r_diff_subgr_all | r_vs_total | ||
|---|---|---|---|---|---|
| CabinAea | Título | ||||
| B | Extrañar. | 14 | 0.298 | 0.094 | 0.016 |
| Señor. | 16 | 0.340 | -0.240 | 0.018 | |
| Señora. | 10 | 0.213 | 0.073 | 0.011 | |
| _n / A | 1 | 0.021 | 0.013 | 0.001 | |
| _otro | 6 | 0.127 | 0.111 | 0.007 | |
| _total | 47 | 1.000 | 0.000 | 0.053 | |
| do | Extrañar. | 12 | 0.203 | -0.001 | 0.013 |
| Señor. | 29 | 0.492 | -0.088 | 0.033 | |
| Señora. | 14 | 0.237 | 0.097 | 0.016 | |
| _n / A | 1 | 0.017 | 0.009 | 0.001 | |
| _otro | 3 | 0.051 | 0.035 | 0.003 | |
| _total | 59 | 1.000 | 0.000 | 0.066 | |
| _todo | Maestro. | 40 | 0.045 | Yaya | 0.045 |
| Extrañar. | 182 | 0.204 | Yaya | 0.204 | |
| Señor. | 517 | 0.580 | Yaya | 0.580 | |
| Señora. | 125 | 0.140 | Yaya | 0.140 | |
| Rdo. | 6 | 0.007 | Yaya | 0.007 | |
| _n / A | 7 | 0.008 | Yaya | 0.008 | |
| _otro | 14 | 0.016 | Yaya | 0.016 | |
| _total | 891 | 1.000 | Yaya | 1.000 | |
| _n / A | Maestro. | 33 | 0.048 | 0.003 | 0.037 |
| Extrañar. | 135 | 0.197 | -0.007 | 0.152 | |
| Señor. | 424 | 0.617 | 0.037 | 0.476 | |
| Señora. | 81 | 0.118 | -0.022 | 0.091 | |
| Rdo. | 6 | 0.009 | 0.002 | 0.007 | |
| _n / A | 4 | 0.006 | -0.002 | 0.004 | |
| _otro | 4 | 0.006 | -0.010 | 0.004 | |
| _total | 687 | 1.000 | 0.000 | 0.771 | |
| _otro | Maestro. | 5 | 0.051 | 0.006 | 0.006 |
| Extrañar. | 21 | 0.214 | 0.010 | 0.024 | |
| Señor. | 48 | 0.490 | -0.090 | 0.054 | |
| Señora. | 20 | 0.204 | 0.064 | 0.022 | |
| _n / A | 1 | 0.010 | 0.002 | 0.001 | |
| _otro | 3 | 0.031 | 0.015 | 0.003 | |
| _total | 98 | 1.000 | 0.000 | 0.110 |
Parámetros de la clase AdvancedValueCounts para ajustar para grupos en un grupo AdvancedValueCounts agrupado
# for groupby_col:
dropna : bool = False
max_groups : int = None # does not effect NA or the '_other' group
min_group_count : int = 1 # does not effect NA or the '_other' group
min_group_ratio : float = 0 # does not effect NA or the '_other' group
# for column:
dropna : bool = False
max_subgroups : int = None # does not effect NA or the '_other' group
min_subgroup_count : int = 1 # does not effect NA or the '_other' group
min_subgroup_ratio : float = 0 # does not effect NA or the '_other' group
min_subgroup_ratio_vs_total : float = 0 # does not effect NA or the '_other' group Para obtener una parcela de AdvancedValueCounts.avc_df :
avc_grouped . get_plot ( normalize = True ) # normalize = True is default value 
Para obtener un marco de datos sin las estadísticas sumarias como '_all' y '_total' :
avc_grouped . unsummerized_df| contar | subgrupo_ratio | subgr_r_diff_subgr_all | r_vs_total | ||
|---|---|---|---|---|---|
| CabinAea | Título | ||||
| B | Extrañar. | 14 | 0.298 | 0.094 | 0.016 |
| Señor. | 16 | 0.340 | -0.240 | 0.018 | |
| Señora. | 10 | 0.213 | 0.073 | 0.011 | |
| _n / A | 1 | 0.021 | 0.013 | 0.001 | |
| _otro | 6 | 0.127 | 0.111 | 0.007 | |
| do | Extrañar. | 12 | 0.203 | -0.001 | 0.013 |
| Señor. | 29 | 0.492 | -0.088 | 0.033 | |
| Señora. | 14 | 0.237 | 0.097 | 0.016 | |
| _n / A | 1 | 0.017 | 0.009 | 0.001 | |
| _otro | 3 | 0.051 | 0.035 | 0.003 | |
| _n / A | Maestro. | 33 | 0.048 | 0.003 | 0.037 |
| Extrañar. | 135 | 0.197 | -0.007 | 0.152 | |
| Señor. | 424 | 0.617 | 0.037 | 0.476 | |
| Señora. | 81 | 0.118 | -0.022 | 0.091 | |
| Rdo. | 6 | 0.009 | 0.002 | 0.007 | |
| _n / A | 4 | 0.006 | -0.002 | 0.004 | |
| _otro | 4 | 0.006 | -0.010 | 0.004 | |
| _otro | Maestro. | 5 | 0.051 | 0.006 | 0.006 |
| Extrañar. | 21 | 0.214 | 0.010 | 0.024 | |
| Señor. | 48 | 0.490 | -0.090 | 0.054 | |
| Señora. | 20 | 0.204 | 0.064 | 0.022 | |
| _n / A | 1 | 0.010 | 0.002 | 0.001 | |
| _otro | 3 | 0.031 | 0.015 | 0.003 |
git clone https://github.com/sTomerG/advanced-value-counts.git
cd advanced-value-counts
python3 -m venv .venv
Activar el entorno virtual
Windows:
..venvScriptsactivate
Linux / macOS:
source .venv/bin/activate
Requisitos de instalación
python -m pip install --upgrade pip
pip install -r requirements/requirements.txt
Prueba si todo funciona correctamente
(Se esperan depreciones de los controles )
Con tox
tox
Sin tox
pip install -e .
pytest