Усовершенствованная стоимость-это Python-Package, содержащий класс AdvancedValueCounts , который использует Pandas ' .value_counts() , .groupby() и Seaborn, чтобы легко получить много информации о количестве (категориальной) колонки в пандас-фрейме. Потенциал этого пакета находится на своем пике при желании информации о количестве столбца после группировки: df.groupby(groupby_col)[column].value_counts() . Посмотрите на использование того, как использовать AdvancedValueCounts . Прочитайте эту среду статью или проконсультируйтесь с этим ноутбуком для объяснения дополнительной стоимости этого пакета.
Оглавление :
pip install advanced-value-counts
Если ошибки поверхности, пожалуйста, обновите Pip и 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
Чтобы проверить, была ли установка успешно пробежать в каталоге повышенной стоимости ( ожидается тепление , ожидается)
pytest
В приведенном ниже примере используется модифицированная версия набора данных Titanic от Kaggle, которую можно найти в этом Gitrepo здесь.
Код этого ноутбука можно найти здесь.
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 ()| Кабанка | Заголовок | |
|---|---|---|
| 0 | Нэн | Мистер. |
| 1 | В | Миссис. |
| 2 | Нэн | Скучать. |
| 3 | В | Миссис. |
| 4 | Нэн | Мистер. |
# create an instance of AdvancedValueCounts
avc = AdvancedValueCounts ( df = df , column = 'Title' )
# print the AdvancedValueCounts DataFrame
avc . avc_df| соотношение | считать | |
|---|---|---|
| Заголовок | ||
| Мистер. | 0,580247 | 517 |
| Скучать. | 0,204265 | 182 |
| Миссис. | 0,140292 | 125 |
| Владелец. | 0,044893 | 40 |
| _na | 0,007856 | 7 |
| Преподобный | 0,006734 | 6 |
| Главный. | 0,002245 | 2 |
| Полковник | 0,002245 | 2 |
| Mlle. | 0,002245 | 2 |
| Графиня. | 0,001122 | 1 |
| Капитан | 0,001122 | 1 |
| РС. | 0,001122 | 1 |
| Сэр. | 0,001122 | 1 |
| Леди. | 0,001122 | 1 |
| Май. | 0,001122 | 1 |
| Дон. | 0,001122 | 1 |
| Джонхир. | 0,001122 | 1 |
Установите min_group_count на 5, чтобы группировать небольшие группы в группу '_other'
avc . min_group_count = 5
avc . avc_df| соотношение | считать | |
|---|---|---|
| Заголовок | ||
| Мистер. | 0,580247 | 517 |
| Скучать. | 0,204265 | 182 |
| Миссис. | 0,140292 | 125 |
| Владелец. | 0,044893 | 40 |
| _другой | 0,015713 | 14 |
| _na | 0,007856 | 7 |
| Преподобный | 0,006734 | 6 |
Параметры класса AdvancedValueCounts для корректировки для небольших групп для одного столбца:
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 Также можно использовать column в сочетании с параметрами groupy_col: str = None , чтобы имитировать поведение df.groupby(groupby_col)[column].value_counts()
avc_grouped = AdvancedValueCounts ( df = df , column = 'Title' , groupby_col = 'CabinArea' )
avc_grouped . avc_df| считать | subgroup_ratio | subgr_r_diff_subgr_all | r_vs_total | ||
|---|---|---|---|---|---|
| Кабанка | Заголовок | ||||
| А | Полковник | 1 | 0,066667 | 0,064422 | 0,001122 |
| Леди. | 1 | 0,066667 | 0,065544 | 0,001122 | |
| Владелец. | 1 | 0,066667 | 0,021773 | 0,001122 | |
| Мистер. | 11 | 0,733333 | 0,153086 | 0,012346 | |
| Сэр. | 1 | 0,066667 | 0,065544 | 0,001122 | |
| ... | ... | ... | ... | ... | ... |
| _na | Миссис. | 81 | 0,117904 | -0.022388 | 0,090909 |
| РС. | 1 | 0,001456 | 0,000333 | 0,001122 | |
| Преподобный | 6 | 0,008734 | 0,002000 | 0,006734 | |
| _na | 4 | 0,005822 | -0.002034 | 0,004489 | |
| _общий | 687 | 1.000000 | 0,000000 | 0,771044 |
74 ряда × 4 столбца
Чтобы получить лучший обзор данных, установите атрибуты для регулировки размера группы и округления соотношений
avc_grouped . min_group_ratio = 0.05
avc_grouped . min_subgroup_count = 5
avc_grouped . round_ratio = 3
avc_grouped . avc_df| считать | subgroup_ratio | subgr_r_diff_subgr_all | r_vs_total | ||
|---|---|---|---|---|---|
| Кабанка | Заголовок | ||||
| Беременный | Скучать. | 14 | 0,298 | 0,094 | 0,016 |
| Мистер. | 16 | 0,340 | -0.240 | 0,018 | |
| Миссис. | 10 | 0,213 | 0,073 | 0,011 | |
| _na | 1 | 0,021 | 0,013 | 0,001 | |
| _другой | 6 | 0,127 | 0,111 | 0,007 | |
| _общий | 47 | 1.000 | 0,000 | 0,053 | |
| В | Скучать. | 12 | 0,203 | -0.001 | 0,013 |
| Мистер. | 29 | 0,492 | -0.088 | 0,033 | |
| Миссис. | 14 | 0,237 | 0,097 | 0,016 | |
| _na | 1 | 0,017 | 0,009 | 0,001 | |
| _другой | 3 | 0,051 | 0,035 | 0,003 | |
| _общий | 59 | 1.000 | 0,000 | 0,066 | |
| _все | Владелец. | 40 | 0,045 | Нэн | 0,045 |
| Скучать. | 182 | 0,204 | Нэн | 0,204 | |
| Мистер. | 517 | 0,580 | Нэн | 0,580 | |
| Миссис. | 125 | 0,140 | Нэн | 0,140 | |
| Преподобный | 6 | 0,007 | Нэн | 0,007 | |
| _na | 7 | 0,008 | Нэн | 0,008 | |
| _другой | 14 | 0,016 | Нэн | 0,016 | |
| _общий | 891 | 1.000 | Нэн | 1.000 | |
| _na | Владелец. | 33 | 0,048 | 0,003 | 0,037 |
| Скучать. | 135 | 0,197 | -0.007 | 0,152 | |
| Мистер. | 424 | 0,617 | 0,037 | 0,476 | |
| Миссис. | 81 | 0,118 | -0.022 | 0,091 | |
| Преподобный | 6 | 0,009 | 0,002 | 0,007 | |
| _na | 4 | 0,006 | -0.002 | 0,004 | |
| _другой | 4 | 0,006 | -0.010 | 0,004 | |
| _общий | 687 | 1.000 | 0,000 | 0,771 | |
| _другой | Владелец. | 5 | 0,051 | 0,006 | 0,006 |
| Скучать. | 21 | 0,214 | 0,010 | 0,024 | |
| Мистер. | 48 | 0,490 | -0.090 | 0,054 | |
| Миссис. | 20 | 0,204 | 0,064 | 0,022 | |
| _na | 1 | 0,010 | 0,002 | 0,001 | |
| _другой | 3 | 0,031 | 0,015 | 0,003 | |
| _общий | 98 | 1.000 | 0,000 | 0,110 |
Параметры класса AdvancedValueCounts для корректировки для группировки в сгруппированных AdvancedValueCounts
# 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 Чтобы получить сюжет AdvancedValueCounts.avc_df :
avc_grouped . get_plot ( normalize = True ) # normalize = True is default value 
Чтобы получить данные Data без Summary_statistics, такой как '_all' и '_total' :
avc_grouped . unsummerized_df| считать | subgroup_ratio | subgr_r_diff_subgr_all | r_vs_total | ||
|---|---|---|---|---|---|
| Кабанка | Заголовок | ||||
| Беременный | Скучать. | 14 | 0,298 | 0,094 | 0,016 |
| Мистер. | 16 | 0,340 | -0.240 | 0,018 | |
| Миссис. | 10 | 0,213 | 0,073 | 0,011 | |
| _na | 1 | 0,021 | 0,013 | 0,001 | |
| _другой | 6 | 0,127 | 0,111 | 0,007 | |
| В | Скучать. | 12 | 0,203 | -0.001 | 0,013 |
| Мистер. | 29 | 0,492 | -0.088 | 0,033 | |
| Миссис. | 14 | 0,237 | 0,097 | 0,016 | |
| _na | 1 | 0,017 | 0,009 | 0,001 | |
| _другой | 3 | 0,051 | 0,035 | 0,003 | |
| _na | Владелец. | 33 | 0,048 | 0,003 | 0,037 |
| Скучать. | 135 | 0,197 | -0.007 | 0,152 | |
| Мистер. | 424 | 0,617 | 0,037 | 0,476 | |
| Миссис. | 81 | 0,118 | -0.022 | 0,091 | |
| Преподобный | 6 | 0,009 | 0,002 | 0,007 | |
| _na | 4 | 0,006 | -0.002 | 0,004 | |
| _другой | 4 | 0,006 | -0.010 | 0,004 | |
| _другой | Владелец. | 5 | 0,051 | 0,006 | 0,006 |
| Скучать. | 21 | 0,214 | 0,010 | 0,024 | |
| Мистер. | 48 | 0,490 | -0.090 | 0,054 | |
| Миссис. | 20 | 0,204 | 0,064 | 0,022 | |
| _na | 1 | 0,010 | 0,002 | 0,001 | |
| _другой | 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
Активировать виртуальную среду
Windows:
..venvScriptsactivate
Linux / macOS:
source .venv/bin/activate
Установить требования
python -m pip install --upgrade pip
pip install -r requirements/requirements.txt
Проверьте, работает ли все правильно
(Ожидается, что жгут об испаке )
С токсом
tox
Без токса
pip install -e .
pytest