Tenho dados sobre o período de construção de moradias em áreas de divulgação. Transferi esses dados para minhas áreas de estudo e gostaria de determinar o período médio de construção de cada área de estudo. O único problema é que as informações das colunas são o número de habitações e eu não quero a mediana delas, mas o título da coluna para preencher a linha em um novo campo (ou algo mais indicando isso, de preferência o período no texto) formato, mas não é o fim do mundo se for apenas um número indicando o período).
Estou anexando uma imagem da tabela de atributos com os campos relevantes destacados. Existe um campo MEDIAN, mas os dados que estou usando foram criados por outra pessoa e estão mal documentados, portanto, não tenho certeza se o cálculo já foi realizado ou não.
(As sete colunas representam sete períodos de tempo sem sobreposição ordenados cronologicamente. O campo [Mediana] parece indexar o período em que a construção total ficou pela metade; ou seja, registra o tempo médio. )
fonte
Respostas:
Supondo que as colunas apareçam na ordem do tempo, a primeira linha (por exemplo) indica que a construção total em cada período foi
A construção estava na metade em 2230/2 = 1115. Isso ocorreu durante o período 4, porque no final do período 3 o total era 585, no final do período 4 o total era 1595 e 585 <= 1115 <1595.
Este parece ser o resultado relatado pela coluna [Mediana], que fornece o índice do período (começando em 1 à esquerda).
Você pode codificar isso no seu idioma favorito . A tabela é tão pequena (100 linhas), no entanto, que uma planilha será conveniente, apenas para verificar o que você faz mais formalmente em Python ou o que quer. Aqui está o que pode parecer:
As três primeiras linhas de dados têm os mesmos valores que o seu. As próximas duas linhas de dados (cercadas por linhas em branco) são escolhidas mais abaixo na sua tabela. As últimas cinco linhas de dados exercitam um pouco o algoritmo.
(Observe, como mostrado nas duas últimas linhas da planilha, como o Excel escolhe o período posterior sempre que o meio cai exatamente entre dois períodos. Essa não é necessariamente a resposta "correta", mas é válida.)
Aqui estão as fórmulas nas colunas H: R:
Você não precisa digitar todos eles. A única digitação necessária é:
=H2+A2
no I2. Arraste isso pelo O2. Isso calcula as somas cumulativas. Requer que as colunas A: G estejam em ordem cronológica.=O2/2
em P2. Isso encontra metade do total.=Match(P2,H2:O2,1)
no segundo trimestre. Isso indexa a coluna em que a construção estava pela metade.=Offset($A$1:$G$1,0 0, Q2-1, 1, 1)
em R2. Isso obtém o cabeçalho da coluna correspondente ao índice.Em seguida, cole
0
em toda a coluna H e arraste I2: R2 para quantas linhas forem necessárias.Isso efetivamente serve como pseudocódigo para o algoritmo. A parte mais complicada será a pesquisa para implementar a
MATCH
função do Excel . Mas isso não requer nenhuma habilidade: não é ineficiente pesquisar cada matriz de somas cumulativas sequencialmente (e não com o algoritmo de pesquisa binária preferido), porque essas matrizes são muito curtas.fonte
Se você quiser retornar a coluna mediana, provavelmente usaria um cursor python para percorrer as linhas. Use os campos para preencher uma lista e, em seguida, retorne o item central (será indexado em [3] para 7 itens) depois de chamar a função classificada () na lista que você criou. Vou escrever um pouco de código para você quando voltar do almoço.
fonte