Create variables in time
Project description
create_vars
from create_vars.vars import *
import pandas as pd
import random
import numpy as np
Criando variáveis numéricas e categóricas
Install
pip install create_vars
How to use
Criando dataframe aleatório
Criando DataFrame com variáveis categóricas e numéricas
# Criando o DataFrame
data = {
'ID_cliente': [random.choice(list(range(1, 101)))for _ in range(100)],
'Safra': [random.choice([202207, 202209, 202212, 202301, 202207, 202302, 202305, 202306]) for _ in range(100)],
'Feat_cat': [random.choice(['A', 'B', 'C']) for _ in range(100)],
'Feat_num1': np.random.randint(0, 100, size=100),
'Feat_num2': np.random.randint(0, 100, size=100)
}
df = pd.DataFrame(data)
df.head()
| ID_cliente | Safra | Feat_cat | Feat_num1 | Feat_num2 | |
|---|---|---|---|---|---|
| 0 | 75 | 202207 | A | 72 | 66 |
| 1 | 30 | 202209 | B | 44 | 90 |
| 2 | 70 | 202301 | B | 82 | 33 |
| 3 | 76 | 202302 | A | 37 | 70 |
| 4 | 81 | 202305 | C | 76 | 17 |
O Dataframe criado tem o ID do cliente aleatório, que pode se repetir em datas diferentes.Por exemplo:
df.groupby('ID_cliente')['Safra'].value_counts().sort_values(ascending=False)
ID_cliente Safra
11 202207 2
70 202301 2
3 202305 1
73 202209 1
79 202207 1
..
35 202302 1
34 202305 1
202306 1
33 202306 1
99 202306 1
Name: count, Length: 98, dtype: int64
A safra corresponde a data que cada variável foi calculada. Ela precisa estar no formato YYYYMM ou YYYYMMDD. Para o nosso exemplo teremos a seguinte distribuição das datas:
df['Safra'].value_counts().sort_index()
Safra
202207 23
202209 12
202212 5
202301 13
202302 15
202305 15
202306 17
Name: count, dtype: int64
Safra de ref
Criando safra de referencia no formato YYYYMM:
df['safra_ref'] = '20230702'
Também podemos utilizar o formato YYYYMMDD.
Variáveis numéricas
A partir do ID_cliente do cliente e da Safra, agrupamos as entradas e calculamos variáveis do tipo ‘sum’, ‘mean’ e ‘count’ que são fornecidas em forma de lista em ‘operations’ para variáveis numéricas. As variáveis utilizadas são listadas em ‘value_var’ e calculadas nas janelas de tempo em ‘window’ para a data de referência em ‘ref_time_var’.
id_cols = ['ID_cliente','Safra']
trns_time = 'Safra'
ref_time = 'safra_ref'
value_var = ['Feat_num1','Feat_num2']
window = [-1,-2,-3,-6,-9,-12,-15]
operations = ['sum','mean','count']
df_vars_num = create_vars_in_time(df,id_cols,trns_time,ref_time,value_var,window,operations)
df_vars_num.head()
| ID_cliente | Safra | Feat_num1_sum_1M | Feat_num1_mean_1M | Feat_num1_count_1M | Feat_num1_sum_2M | Feat_num1_mean_2M | Feat_num1_count_2M | Feat_num1_sum_3M | Feat_num1_mean_3M | ... | Feat_num2_count_6M | Feat_num2_sum_9M | Feat_num2_mean_9M | Feat_num2_count_9M | Feat_num2_sum_12M | Feat_num2_mean_12M | Feat_num2_count_12M | Feat_num2_sum_15M | Feat_num2_mean_15M | Feat_num2_count_15M | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 75 | 202207 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 66 | 66.0 | 1 |
| 1 | 30 | 202209 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | NaN | NaN | NaN | 90.0 | 90.0 | 1.0 | 90 | 90.0 | 1 |
| 2 | 70 | 202301 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | NaN | 111.0 | 55.5 | 2.0 | 111.0 | 55.5 | 2.0 | 111 | 55.5 | 2 |
| 3 | 76 | 202302 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | ... | 1.0 | 70.0 | 70.0 | 1.0 | 70.0 | 70.0 | 1.0 | 70 | 70.0 | 1 |
| 4 | 81 | 202305 | NaN | NaN | NaN | NaN | NaN | NaN | 76.0 | 76.0 | ... | 1.0 | 17.0 | 17.0 | 1.0 | 17.0 | 17.0 | 1.0 | 17 | 17.0 | 1 |
5 rows × 44 columns
Variáveis categóricas
Para variáveis categóricas, as operações são ‘nunique’ e mode.
id_cols = ['ID_cliente','Safra']
trns_time = 'Safra'
ref_time = 'safra_ref'
value_var = ['Feat_cat']
window = [-1,-2,-3,-6,-9,-12,-15]
operations = ['nunique', mode]
df_vars_cat = create_vars_in_time(df,id_cols,trns_time,ref_time,value_var,window,operations)
df_vars_cat.head()
| ID_cliente | Safra | Feat_cat_nunique_1M | Feat_cat_mode_1M | Feat_cat_nunique_2M | Feat_cat_mode_2M | Feat_cat_nunique_3M | Feat_cat_mode_3M | Feat_cat_nunique_6M | Feat_cat_mode_6M | Feat_cat_nunique_9M | Feat_cat_mode_9M | Feat_cat_nunique_12M | Feat_cat_mode_12M | Feat_cat_nunique_15M | Feat_cat_mode_15M | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 75 | 202207 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1 | A |
| 1 | 30 | 202209 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | B | 1 | B |
| 2 | 70 | 202301 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 2.0 | A | 2.0 | A | 2 | A |
| 3 | 76 | 202302 | NaN | NaN | NaN | NaN | NaN | NaN | 1.0 | A | 1.0 | A | 1.0 | A | 1 | A |
| 4 | 81 | 202305 | NaN | NaN | NaN | NaN | 1.0 | C | 1.0 | C | 1.0 | C | 1.0 | C | 1 | C |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file create_vars-0.0.1.tar.gz.
File metadata
- Download URL: create_vars-0.0.1.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb783e85fde7ec1c10bdaa51f3bad240eb96b732eb0536057ebf77a16624ac0e
|
|
| MD5 |
9e45702f22c75fb52fef46f0692fcdc0
|
|
| BLAKE2b-256 |
d04d804a917751890b89fce8d5bfa1e0b32e72668f7016766a28e3cd67887b64
|
File details
Details for the file create_vars-0.0.1-py3-none-any.whl.
File metadata
- Download URL: create_vars-0.0.1-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bdaa1f870834b318e7e3a23b6efe5f2a0b0680cef31e236ebec0d85ca0b0327a
|
|
| MD5 |
fd1d0fa0121e60cf55ccf9af86f78f6a
|
|
| BLAKE2b-256 |
5b67b6479f8f0e277f8c56e7021241dca38d600085f6b937282041ab3a7bc192
|