Cálculo da Média Harmônica em Python com Processamento de Dados CSV
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Cálculo da Média Harmônica em Python com Processamento de Dados CSV
Este tutorial apresenta um exemplo prático em Python para calcular a média harmônica de valores numéricos, tratando possíveis erros, e aplicando o cálculo a dados armazenados em listas com valores hexadecimais. Além disso, o script demonstra como salvar os resultados em um arquivo CSV, formatando os dados para fácil análise.
O que é Média Harmônica?
A média harmônica é uma média especial adequada para conjuntos de números que são taxas ou razões, sendo calculada como o inverso da média dos inversos dos valores. É muito utilizada em áreas como estatística, física, finanças e ciência de dados para obter uma média ponderada adequada para certos tipos de dados.
Descrição do Script em Python
O código a seguir:
- Define uma função para calcular a média harmônica, com tratamento de erro para evitar divisões por zero.
- Processa uma lista de dados com valores em hexadecimal, convertendo-os para inteiros.
- Calcula médias harmônicas para diferentes conjuntos de valores derivados dos dados originais.
- Escreve os resultados detalhados em um arquivo CSV para posterior análise.
Exemplo Completo do Código Python
import csv
def media_harmonica(*valores):
try:
# Ignorar valores zero para evitar divisão por zero
soma_reciprocos = sum(1.0 / v for v in valores if v != 0)
# Caso todos os valores sejam zero
if soma_reciprocos == 0:
return 0
# Retorna a média harmônica calculada
return len(valores) / soma_reciprocos
except ZeroDivisionError:
return 0
# Dados simulados: substitua os "..." por linhas completas conforme necessário
data = [
['1', '1', '1', '0000000000000000000000000000000000000000000000000000000000000001'],
['2', '2', '3', '0000000000000000000000000000000000000000000000000000000000000003'],
['3', '4', '7', '0000000000000000000000000000000000000000000000000000000000000007'],
['4', '8', 'f', '0000000000000000000000000000000000000000000000000000000000000008'],
['5', '10', '1f', '0000000000000000000000000000000000000000000000000000000000000015'],
['6', '20', '3f', '0000000000000000000000000000000000000000000000000000000000000031'],
['7', '40', '7f', '000000000000000000000000000000000000000000000000000000000000004c'],
['8', '80', 'ff', '00000000000000000000000000000000000000000000000000000000000000e0'],
['9', '100', '1ff', '00000000000000000000000000000000000000000000000000000000000001d3'],
['10', '200', '3ff', '0000000000000000000000000000000000000000000000000000000000000202'],
['11', '400', '7ff', '0000000000000000000000000000000000000000000000000000000000000483'],
['12', '800', 'fff', '0000000000000000000000000000000000000000000000000000000000000a7b'],
['13', '1000', '1fff', '0000000000000000000000000000000000000000000000000000000000001460'],
['14', '2000', '3fff', '0000000000000000000000000000000000000000000000000000000000002930'],
['15', '4000', '7fff', '00000000000000000000000000000000000000000000000000000000000068f3'],
['16', '8000', 'ffff', '000000000000000000000000000000000000000000000000000000000000c936'],
['17', '10000', '1ffff', '000000000000000000000000000000000000000000000000000000000001764f'],
['18', '20000', '3ffff', '000000000000000000000000000000000000000000000000000000000003080d'],
['19', '40000', '7ffff', '000000000000000000000000000000000000000000000000000000000005749f'],
['20', '80000', 'fffff', '00000000000000000000000000000000000000000000000000000000000d2c55'],
['21', '100000', '1fffff', '00000000000000000000000000000000000000000000000000000000001ba534'],
['22', '200000', '3fffff', '00000000000000000000000000000000000000000000000000000000002de40f'],
['23', '400000', '7fffff', '0000000000000000000000000000000000000000000000000000000000556e52'],
['24', '800000', 'ffffff', '0000000000000000000000000000000000000000000000000000000000dc2a04'],
['25', '1000000', '1ffffff', '0000000000000000000000000000000000000000000000000000000001fa5ee5'],
['26', '2000000', '3ffffff', '000000000000000000000000000000000000000000000000000000000340326e'],
['27', '4000000', '7ffffff', '0000000000000000000000000000000000000000000000000000000006ac3875'],
['28', '8000000', 'fffffff', '000000000000000000000000000000000000000000000000000000000d916ce8'],
['29', '10000000', '1fffffff', '0000000000000000000000000000000000000000000000000000000017e2551e'],
['30', '20000000', '3fffffff', '000000000000000000000000000000000000000000000000000000003d94cd64'],
['31', '40000000', '7fffffff', '000000000000000000000000000000000000000000000000000000007d4fe747'],
['32', '80000000', 'ffffffff', '00000000000000000000000000000000000000000000000000000000b862a62e'],
['33', '100000000', '1ffffffff', '00000000000000000000000000000000000000000000000000000001a96ca8d8'],
['34', '200000000', '3ffffffff', '000000000000000000000000000000000000000000000000000000034a65911d'],
['35', '400000000', '7ffffffff', '00000000000000000000000000000000000000000000000000000004aed21170'],
['36', '800000000', 'fffffffff', '00000000000000000000000000000000000000000000000000000009de820a7c'],
['37', '1000000000', '1fffffffff', '0000000000000000000000000000000000000000000000000000001757756a93'],
['38', '2000000000', '3fffffffff', '00000000000000000000000000000000000000000000000000000022382facd0'],
['39', '4000000000', '7fffffffff', '0000000000000000000000000000000000000000000000000000004b5f8303e9'],
['40', '8000000000', 'ffffffffff', '000000000000000000000000000000000000000000000000000000e9ae4933d6'],
['41', '10000000000', '1ffffffffff', '00000000000000000000000000000000000000000000000000000153869acc5b'],
['42', '20000000000', '3ffffffffff', '000000000000000000000000000000000000000000000000000002a221c58d8f'],
['43', '40000000000', '7ffffffffff', '000000000000000000000000000000000000000000000000000006bd3b27c591'],
['44', '80000000000', 'fffffffffff', '00000000000000000000000000000000000000000000000000000e02b35a358f'],
['45', '100000000000', '1fffffffffff', '0000000000000000000000000000000000000000000000000000122fca143c05'],
['46', '200000000000', '3fffffffffff', '00000000000000000000000000000000000000000000000000002ec18388d544'],
['47', '400000000000', '7fffffffffff', '00000000000000000000000000000000000000000000000000006cd610b53cba'],
['48', '800000000000', 'ffffffffffff', '0000000000000000000000000000000000000000000000000000ade6d7ce3b9b'],
['49', '1000000000000', '1ffffffffffff', '000000000000000000000000000000000000000000000000000174176b015f4d'],
['50', '2000000000000', '3ffffffffffff', '00000000000000000000000000000000000000000000000000022bd43c2e9354'],
['51', '4000000000000', '7ffffffffffff', '00000000000000000000000000000000000000000000000000075070a1a009d4'],
['52', '8000000000000', 'fffffffffffff', '000000000000000000000000000000000000000000000000000efae164cb9e3c'],
['53', '10000000000000', '1fffffffffffff', '00000000000000000000000000000000000000000000000000180788e47e326c'],
['54', '20000000000000', '3fffffffffffff', '00000000000000000000000000000000000000000000000000236fb6d5ad1f43'],
['55', '40000000000000', '7fffffffffffff', '000000000000000000000000000000000000000000000000006abe1f9b67e114'],
['56', '80000000000000', 'ffffffffffffff', '000000000000000000000000000000000000000000000000009d18b63ac4ffdf'],
['57', '100000000000000', '1ffffffffffffff', '00000000000000000000000000000000000000000000000001eb25c90795d61c'],
['58', '200000000000000', '3ffffffffffffff', '00000000000000000000000000000000000000000000000002c675b852189a21'],
['59', '400000000000000', '7ffffffffffffff', '00000000000000000000000000000000000000000000000007496cbb87cab44f'],
['60', '800000000000000', 'fffffffffffffff', '0000000000000000000000000000000000000000000000000fc07a1825367bbe'],
['61', '1000000000000000', '1fffffffffffffff', '00000000000000000000000000000000000000000000000013c96a3742f64906'],
['62', '2000000000000000', '3fffffffffffffff', '000000000000000000000000000000000000000000000000363d541eb611abee'],
['63', '4000000000000000', '7fffffffffffffff', '0000000000000000000000000000000000000000000000007cce5efdaccf6808'],
['64', '8000000000000000', 'ffffffffffffffff', '000000000000000000000000000000000000000000000000f7051f27b09112d4'],
['65', '10000000000000000', '1ffffffffffffffff', '000000000000000000000000000000000000000000000001a838b13505b26867'],
['66', '20000000000000000', '3ffffffffffffffff', '000000000000000000000000000000000000000000000002832ed74f2b5e35ee'],
['67', '40000000000000000', '7ffffffffffffffff', '00000000000000000000000000000000000000000000000730fc235c1942c1ae'],
['68', '80000000000000000', 'fffffffffffffffff', '00000000000000000000000000000000000000000000000bebb3940cd0fc1491'],
['69', '100000000000000000', '1fffffffffffffffff', '0'],
['70', '200000000000000000', '3fffffffffffffffff', '0000000000000000000000000000000000000000000000349b84b6431a6c4ef1'],
['71', '400000000000000000', '7fffffffffffffffff', '0'],
['72', '800000000000000000', 'ffffffffffffffffff', '0'],
['73', '1000000000000000000', '1ffffffffffffffffff', '0'],
['74', '2000000000000000000', '3ffffffffffffffffff', '0'],
['75', '4000000000000000000', '7ffffffffffffffffff', '0000000000000000000000000000000000000000000004c5ce114686a1336e07'],
['76', '8000000000000000000', 'fffffffffffffffffff', '0'],
['77', '10000000000000000000', '1fffffffffffffffffff', '0'],
['78', '20000000000000000000', '3fffffffffffffffffff', '0'],
['79', '40000000000000000000', '7fffffffffffffffffff', '0'],
['80', '80000000000000000000', 'ffffffffffffffffffff', '00000000000000000000000000000000000000000000ea1a5c66dcc11b5ad180'],
['81', '100000000000000000000', '1ffffffffffffffffffff', '0'],
['82', '200000000000000000000', '3ffffffffffffffffffff', '0'],
['83', '400000000000000000000', '7ffffffffffffffffffff', '0'],
['84', '800000000000000000000', 'fffffffffffffffffffff', '0'],
['85', '1000000000000000000000', '1fffffffffffffffffffff', '00000000000000000000000000000000000000000011720c4f018d51b8cebba8'],
['86', '2000000000000000000000', '3fffffffffffffffffffff', '0'],
['87', '4000000000000000000000', '7fffffffffffffffffffff', '0'],
['88', '8000000000000000000000', 'ffffffffffffffffffffff', '0'],
['89', '10000000000000000000000', '1ffffffffffffffffffffff', '0'],
['90', '20000000000000000000000', '3ffffffffffffffffffffff', '000000000000000000000000000000000000000002ce00bb2136a445c71e85bf'],
['91', '40000000000000000000000', '7ffffffffffffffffffffff', '0'],
['92', '80000000000000000000000', 'fffffffffffffffffffffff', '0'],
['93', '100000000000000000000000', '1fffffffffffffffffffffff', '0'],
['94', '200000000000000000000000', '3fffffffffffffffffffffff', '0'],
['95', '400000000000000000000000', '7fffffffffffffffffffffff', '0000000000000000000000000000000000000000527a792b183c7f64a0e8b1f4'],
['96', '800000000000000000000000', 'ffffffffffffffffffffffff', '0'],
['97', '1000000000000000000000000', '1ffffffffffffffffffffffff', '0'],
['98', '2000000000000000000000000', '3ffffffffffffffffffffffff', '0'],
['99', '4000000000000000000000000', '7ffffffffffffffffffffffff', '0'],
['100', '8000000000000000000000000', 'fffffffffffffffffffffffff', '000000000000000000000000000000000000000af55fc59c335c8ec67ed24826'],
['101', '10000000000000000000000000', '1fffffffffffffffffffffffff', '0'],
['102', '20000000000000000000000000', '3fffffffffffffffffffffffff', '0'],
['103', '40000000000000000000000000', '7fffffffffffffffffffffffff', '0'],
['104', '80000000000000000000000000', 'ffffffffffffffffffffffffff', '0'],
['105', '100000000000000000000000000', '1ffffffffffffffffffffffffff', '000000000000000000000000000000000000016f14fc2054cd87ee6396b33df3'],
['106', '200000000000000000000000000', '3ffffffffffffffffffffffffff', '0'],
['107', '400000000000000000000000000', '7ffffffffffffffffffffffffff', '0'],
['108', '800000000000000000000000000', 'fffffffffffffffffffffffffff', '0'],
['109', '1000000000000000000000000000', '1fffffffffffffffffffffffffff', '0'],
['110', '2000000000000000000000000000', '3fffffffffffffffffffffffffff', '00000000000000000000000000000000000035c0d7234df7deb0f20cf7062444'],
['111', '4000000000000000000000000000', '7fffffffffffffffffffffffffff', '0'],
['112', '8000000000000000000000000000', 'ffffffffffffffffffffffffffff', '0'],
['113', '10000000000000000000000000000', '1ffffffffffffffffffffffffffff', '0'],
['114', '20000000000000000000000000000', '3ffffffffffffffffffffffffffff', '0'],
['115', '40000000000000000000000000000', '7ffffffffffffffffffffffffffff', '0000000000000000000000000000000000060f4d11574f5deee49961d9609ac6'],
['116', '80000000000000000000000000000', 'fffffffffffffffffffffffffffff', '0'],
['117', '100000000000000000000000000000', '1fffffffffffffffffffffffffffff', '0'],
['118', '200000000000000000000000000000', '3fffffffffffffffffffffffffffff', '0'],
['119', '400000000000000000000000000000', '7fffffffffffffffffffffffffffff', '0'],
['120', '800000000000000000000000000000', 'ffffffffffffffffffffffffffffff', '0000000000000000000000000000000000b10f22572c497a836ea187f2e1fc23'],
['121', '1000000000000000000000000000000', '1ffffffffffffffffffffffffffffff', '0'],
['122', '2000000000000000000000000000000', '3ffffffffffffffffffffffffffffff', '0'],
['123', '4000000000000000000000000000000', '7ffffffffffffffffffffffffffffff', '0'],
['124', '8000000000000000000000000000000', 'fffffffffffffffffffffffffffffff', '0'],
['125', '10000000000000000000000000000000', '1fffffffffffffffffffffffffffffff', '000000000000000000000000000000001c533b6bb7f0804e09960225e44877ac'],
['126', '20000000000000000000000000000000', '3fffffffffffffffffffffffffffffff', '0'],
['127', '40000000000000000000000000000000', '7fffffffffffffffffffffffffffffff', '0'],
['128', '80000000000000000000000000000000', 'ffffffffffffffffffffffffffffffff', '0'],
['129', '100000000000000000000000000000000', '1ffffffffffffffffffffffffffffffff', '0'],
['130', '200000000000000000000000000000000', '3ffffffffffffffffffffffffffffffff', '000000000000000000000000000000033e7665705359f04f28b88cf897c603c9'],
['131', '400000000000000000000000000000000', '7ffffffffffffffffffffffffffffffff', '0'],
['132', '800000000000000000000000000000000', 'fffffffffffffffffffffffffffffffff', '0'],
['133', '1000000000000000000000000000000000', '1fffffffffffffffffffffffffffffffff', '0'],
['134', '2000000000000000000000000000000000', '3fffffffffffffffffffffffffffffffff', '0'],
['135', '4000000000000000000000000000000000', '7fffffffffffffffffffffffffffffffff', ' 02145d2611c823a396ef6712ce0f712f09b9b4f3135e3e0aa3230fb9b6d08d1e16'],
['136', '8000000000000000000000000000000000', 'ffffffffffffffffffffffffffffffffff', '0'],
['137', '10000000000000000000000000000000000', '1ffffffffffffffffffffffffffffffffff', '0'],
['138', '20000000000000000000000000000000000', '3ffffffffffffffffffffffffffffffffff', '0'],
['139', '40000000000000000000000000000000000', '7ffffffffffffffffffffffffffffffffff', '0'],
['140', '80000000000000000000000000000000000', 'fffffffffffffffffffffffffffffffffff', ' 031f6a332d3c5c4f2de2378c012f429cd109ba07d69690c6c701b6bb87860d6640'],
['141', '100000000000000000000000000000000000', '1fffffffffffffffffffffffffffffffffff', '0'],
['142', '200000000000000000000000000000000000', '3fffffffffffffffffffffffffffffffffff', '0'],
['143', '400000000000000000000000000000000000', '7fffffffffffffffffffffffffffffffffff', '0'],
['144', '800000000000000000000000000000000000', 'ffffffffffffffffffffffffffffffffffff', '0'],
['145', '1000000000000000000000000000000000000', '1ffffffffffffffffffffffffffffffffffff', ' 03afdda497369e219a2c1c369954a930e4d3740968e5e4352475bcffce3140dae5'],
['146', '2000000000000000000000000000000000000', '3ffffffffffffffffffffffffffffffffffff', '0'],
['147', '4000000000000000000000000000000000000', '7ffffffffffffffffffffffffffffffffffff', '0'],
['148', '8000000000000000000000000000000000000', 'fffffffffffffffffffffffffffffffffffff', '0'],
['149', '10000000000000000000000000000000000000', '1fffffffffffffffffffffffffffffffffffff', '0'],
['150', '20000000000000000000000000000000000000', '3fffffffffffffffffffffffffffffffffffff', ' 03137807790ea7dc6e97901c2bc87411f45ed74a5629315c4e4b03a0a102250c49'],
['151', '40000000000000000000000000000000000000', '7fffffffffffffffffffffffffffffffffffff', '0'],
['152', '80000000000000000000000000000000000000', 'ffffffffffffffffffffffffffffffffffffff', '0'],
['153', '100000000000000000000000000000000000000', '1ffffffffffffffffffffffffffffffffffffff', '0'],
['154', '200000000000000000000000000000000000000', '3ffffffffffffffffffffffffffffffffffffff', '0'],
['155', '400000000000000000000000000000000000000', '7ffffffffffffffffffffffffffffffffffffff', ' 035cd1854cae45391ca4ec428cc7e6c7d9984424b954209a8eea197b9e364c05f6'],
['156', '800000000000000000000000000000000000000', 'fffffffffffffffffffffffffffffffffffffff', '0'],
['157', '1000000000000000000000000000000000000000', '1fffffffffffffffffffffffffffffffffffffff', '0'],
['158', '2000000000000000000000000000000000000000', '3fffffffffffffffffffffffffffffffffffffff', '0'],
['159', '4000000000000000000000000000000000000000', '7fffffffffffffffffffffffffffffffffffffff', '0'],
['160', '8000000000000000000000000000000000000000', 'ffffffffffffffffffffffffffffffffffffffff', '02e0a8b039282faf6fe0fd769cfbc4b6b4cf8758ba68220eac420e32b91ddfa673']
]
# Abrir arquivo CSV para escrita dos resultados
with open('resultado_puzzle1.csv', mode='w', newline='') as file:
writer = csv.writer(file)
# Cabeçalho do CSV
writer.writerow(['ID', 'Inicio', 'Meio', 'Fim', 'MHInício', 'MHMeio', 'MHFim', 'MHSoma'])
# Processamento dos dados
for row in data:
id_value = row[0]
inicio = int(row[1], 16) # Hex para inteiro
meio = int(row[3], 16) # Hex para inteiro
fim = int(row[2], 16) # Hex para inteiro
soma = inicio + fim # Soma dos valores de início e fim
# Cálculo das médias harmônicas
mh_inicio = media_harmonica(inicio, inicio * 2, inicio / 2)
mh_meio = media_harmonica(meio, meio * 2, meio / 2)
mh_fim = media_harmonica(fim, fim * 2, fim / 2)
mh_soma = media_harmonica(soma, soma * 2, soma / 2)
# Impressão dos resultados no console
print(f"ID: {id_value}, Private Key Range: {inicio}, Resposta: {fim}, Private Key / Public Key: {meio}, "
f"Média Harmônica Início: {mh_inicio:.2f}, Média Harmônica Meio: {mh_meio:.2f}, "
f"Média Harmônica Fim: {mh_fim:.2f}, Média I+F: {mh_soma:.2f}")
# Escrita no arquivo CSV
writer.writerow([id_value, inicio, meio, fim, f"{mh_inicio:.2f}", f"{mh_meio:.2f}", f"{mh_fim:.2f}", f"{mh_soma:.2f}"])
print("Dados salvos em 'resultado_puzzle1.csv'")
Como Usar Este Script
Para utilizar este script, certifique-se de:
- Ter o Python instalado (versão 3.6 ou superior recomendada).
- Substituir a variável
datapelos seus próprios dados estruturados em listas, seguindo o formato apresentado. - Executar o script em um ambiente que permita criação de arquivos para que o CSV possa ser salvo corretamente.
Considerações Técnicas e SEO
Este conteúdo é especialmente útil para profissionais de análise de dados, cientistas da computação e estudantes que desejam aprender técnicas avançadas de cálculo numérico e manipulação de dados. O uso adequado de estruturas e a descrição clara contribuem para a indexação eficiente em buscadores como Google e Bing.
Nota Importante: Este conteúdo é de caráter educacional e técnico. Caso utilize para investimentos, faça sua própria análise e avaliação antes de aplicar qualquer decisão financeira.
Para conhecer mais sobre manipulação de arquivos CSV em Python, consulte a documentação oficial do Python: https://docs.python.org/3/library/csv.html

Comentários
Comente só assim vamos crescer juntos!