Skip to main content

scientometric_tools

Biblioteca Python para processamento de dados bibliométricos exportados do Scopus e Web of Science (WoS). Desenvolvida para o projeto NBVIZ, mas projetada para uso independente em qualquer pipeline de análise cienciométrica.

pip install nbviz_scientometric_tools

Funcionalidades

  • Padronização e limpeza de dados do Scopus (.csv) e WoS (.txt)
  • Normalização de nomes de autores
  • Formatação de referências citadas
  • Remoção de duplicatas por DOI com preservação de registros sem DOI
  • Geração de contagens para visualizações (autores, keywords, fontes, anos)
  • Formatação de grafos de co-ocorrência (nós e arestas ponderadas)

Uso

Leitura e padronização

import scientometric_tools as st

# WoS (.txt)
wos = st.read_wos_file("savedrecs.txt")

# Scopus (.csv)
scopus = st.read_scopus_file("scopus.csv")

header_txt = [("AU",0),("TI",1),("PY",2),("SO",3),("DI",4),("AB",5),("DE",6),("CR",7)]
header_csv = [("Authors",0),("Title",1),("Year",2),("Source title",3),
              ("DOI",4),("Abstract",5),("Author Keywords",6),("References",7)]

wos    = st.keep_columns(wos, header_txt)
scopus = st.keep_columns(scopus, header_csv)

Processamento

# Processa WoS — normaliza autores, remove aspas de keywords e referências
wos_processed = st.process_wos_data(wos, header_txt)

# Processa Scopus — trata abstracts e formata referências citadas
scopus_processed = st.process_scopus_data(scopus, header_csv)

Merge de arquivos de mesma base

Se você possui vários arquivos exportados da mesma plataforma (por exemplo, múltiplos arquivos .csv da Scopus ou vários .txt da Web of Science) e deseja unificá-los de forma extremamente performática utilizando o motor Lazy do Polars:

import scientometric_tools as st

# 1. Carregue os arquivos na memória (modo Eager)
arquivos_scopus = ["scopus_part1.csv", "scopus_part2.csv", "scopus_part3.csv"]
dfs = [st.read_scopus_file(arq) for arq in arquivos_scopus]

# 2. Converta os DataFrames para LazyFrames para otimização de memória
lazy_frames = [df.lazy() for df in dfs]

# 3. Funde todas as bases de uma só vez de forma otimizada
# (Gera um LazyFrame unificado)
unificado_lazy = st.merge_same_database(lazy_frames)

# 4. Grave o resultado direto no disco usando sink_csv
# (Isso processa a fusão sem estourar a memória RAM do servidor/máquina)
unificado_lazy.sink_csv("scopus_completo.csv", separator=",")

Merge entre bases

wos_to_scopus = {
    "AU": "Authors", "TI": "Title", "PY": "Year",
    "SO": "Source title", "DI": "DOI", "AB": "Abstract",
    "DE": "Author Keywords", "CR": "References"
}

# Remove duplicatas por DOI, preserva registros sem DOI
# e aplica deduplicação final por título + ano
merged = st.merge_and_process(
    scopus_processed,
    wos_processed,
    mapping=wos_to_scopus,
    subset_cols=["Title", "Year"]
)

Contagens para gráficos

# Autores mais produtivos
authors = st.get_counts(merged, "Authors", "author")
# [{"author": "Silva J.", "count": 12}, ...]

# Keywords com múltiplos separadores
keywords = st.get_counts(merged, "Author Keywords", "keyword",
                         separators=[";", ",", " and "])
# [{"keyword": "bibliometrics", "count": 8}, ...]

# Fontes / periódicos
sources = st.get_counts(merged, "Source title", "source")

# Produção por ano
years = st.get_counts(merged, "Year", "year")

Grafo de co-ocorrência

# Gera nós e arestas ponderadas para visualização em rede
graph = st.graph_formatter(merged, "Authors")

# Estrutura retornada:
# {
#   "nodes": [{"data": {"id": "Silva J.", "label": "Silva J."}}, ...],
#   "edges": [{"data": {"source": "Silva J.", "target": "Costa M.", "weight": 5}}, ...]
# }

Referência da API

Função Descrição
read_wos_file(file) Lê o arquivo extraído da base de dados Web of Science
read_scopus_file(file) Lê o arquivo extraído da base de dados Scopus
keep_columns(df, columns) Seleciona colunas, normaliza strings e trata nulos
process_wos_data(df, header) Processa e padroniza dados do Web of Science
process_scopus_data(df, header) Processa e padroniza dados do Scopus
merge_same_database(lazyframes) Funde múltiplos LazyFrames da mesma base de dados de forma otimizada
merge_and_process(target, visitor, mapping, subset_cols) Merge entre bases com deduplicação por DOI
get_counts(df, column, output_key, separators) Contagem de termos para gráficos
graph_formatter(df, column, separators) Gera estrutura de grafo de coautoria ou co-ocorrência

Requisitos

  • Python 3.10+
  • polars
  • unidecode

Projeto

Desenvolvido por Leonardo Neves Bolfarini sob orientação do prof. Rafael Gutierres Castanha na Universidade de Marília (UNIMAR).

Metadata

Release files for nbviz-scientometric-tools 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nbviz-scientometric-tools 0.5.0
File Size Uploaded Provenance Actions
nbviz_scientometric_tools-0.5.0.tar.gz 6.7 kB Without provenance Details for nbviz_scientometric_tools-0.5.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for nbviz-scientometric-tools 0.5.0
File Interpreter ABI Platform Actions
nbviz_scientometric_tools-0.5.0-py3-none-any.whl Python 3 none any Details for nbviz_scientometric_tools-0.5.0-py3-none-any.whl

Total release size: 14.6 kB

Release files / nbviz_scientometric_tools-0.5.0.tar.gz

Download URL nbviz_scientometric_tools-0.5.0.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
7d0ed91565457eef634fc509db36e968e281f45dc0f01a195bcc8d9449b1bbd3
BLAKE2b-256 checksum
How to use checksums
354352fc57f548f529e4077627836d5d46cef44371597f5e5b0481f00e45523a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / nbviz_scientometric_tools-0.5.0-py3-none-any.whl

Download URL nbviz_scientometric_tools-0.5.0-py3-none-any.whl
Size 7.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0460ce87bacd8189d9402271e91006a5e45b95565f6235ee9dc5ad03680153a5
BLAKE2b-256 checksum
How to use checksums
dfc28080ba1cf8f12f640e44e59555b3017d5583a91ce2a8d00cf09a92239d91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Security for nbviz-scientometric-tools 0.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page