Trabalhando com Pandas e Python
O que é o Pandas? É uma biblioteca que te permite carregar dados em CSVs, tabelas de banco de dados e manipular esses dados de inúmeras maneiras (gerando estatísticas, limpando dados, etc).
O jeito mais comum de usar o Pandas é pelo Jupyter. Diferentemente de uma IDE comum, o Jupyter permite ir programando interativamente, sem precisar executar tudo do zero toda vez que for rodar o programa.
Quais são os tipos de dados no Pandas?
Para operações numéricas o Pandas gosta de converter tudo automaticamente para os tipos de dados do Numpy (embora as vezes você precisa fazer isso manualmente). Isso porque o Numpy no fundo é uma fachada para estruturas de dados nativas em C, tudo isso para aumentar a performance do Pandas (que roda em Python, uma linguagem muito fácil de entender mas de baixa performance).
Uma forma interessante de descobrir o tipo de um dado em um data frame é:
print(df.describe)
Referências sobre tipos de dados
Resposta interessante no Stack Overflow
https://stackoverflow.com/questions/29245848/what-are-all-the-dtypes-that-pandas-recognizes
Pandas para pessoas do SQL
Um tutorial com consultas em SQL e seus equivalentes no Pandas
https://hackernoon.com/pandas-cheatsheet-for-sql-people-part-1-2976894acd0
Criando uma coluna a partir do valor de outras em um DataFrame
df['nova_coluna'] = df.apply(lambda row: )
Tipos de dados no Pandas
Tome muito cuidado com as conversões automáticas utilizando category no pandas.
Mudando o tipo de uma coluna numpy datetime64 no pandas
df['day'] = df['day'].values.astype('datetime64[M]')
https://stackoverflow.com/questions/40039457/how-to-change-date-in-pandas-dataframe
Deletando linhas no Pandas
https://chrisalbon.com/python/data_wrangling/pandas_dropping_column_and_rows/
Aumentando o limite de linhas mostradas pelo visualizador
pd.options.display.max_rows = 999
Referência
https://stackoverflow.com/questions/26886653/pandas-create-new-column-based-on-values-from-other-columns
Filtrando e cortando um dataframe com multi índices
Faz o uso das operações iloc, loc e ix.
https://www.somebits.com/~nelson/pandas-multiindex-slice-demo.html
https://www.shanelynn.ie/select-pandas-dataframe-rows-and-columns-using-iloc-loc-and-ix/
Fazendo shift em um dataframe com multi índices
https://stackoverflow.com/questions/23198053/how-do-you-shift-pandas-dataframe-with-a-multiindex
Dicas de manipulação de TimeSeries no Pandas
https://s3.amazonaws.com/assets.datacamp.com/production/course_5702/slides/chapter1.pdf
Qual a diferença entre dados do tipo Vector e Raster?
https://gisgeography.com/spatial-data-types-vector-raster/
Deixando o uso de memória no Pandas mais leve
https://www.dataquest.io/blog/pandas-big-data/
Usando dados geográficos no Pandas com o Geopandas
o Geopandas é uma biblioteca que adiciona ao Pandas todas as funcionalidades para operações geoespaciais. É muito útil para fazer análises exploratórias e rápidas de dados geoespaciais. Confira o GIT e a Documentação. O Geopandas faz nada mais que integrar a biblioteca Shapely com o Pandas. O Shapely é quem permite operações geométricas e geográficas no Python, por isso ele vem de tabela junto com o Geopandas.
Instalando o Geopandas
O melhor jeito de usar o geopandas é através do conda juntamente com o conda-forge (pois o repositório padrão do conda usa uma versão muito antiga do geopandas).
Instale Miniconda
Instale o Miniconda
Instale o Anaconda (GUI para o Conda)
Instale o Anaconda
Abra a interface gráfica do Anaconda digitando no terminal
~/anaconda3/anaconda-navigator
Crie um ambiente virtual para instalarmos o geopandas
Crie um ambiente virtual para seu projeto (pode ser via interface grafica ou pelo terminal), deixe o repositório do conda-forge como padrão, instale o Python 3.7, geopandas, jupyter, matplotlib, mplleaflet:
conda create --name geopandasconda activate geopandas # conda activate ~/anaconda3/env/geopandas conda config --add channels conda-forge conda config --set channel_priority strict conda install python=3.7 geopandas jupyter matplotlib mplleaflet
Como descobrir os ângulos entre dois pontos?
https://glenbambrick.com/tag/shapely/
https://docs.scipy.org/doc/numpy/reference/generated/numpy.arctan2.html
https://stackoverflow.com/questions/9970281/java-calculating-the-angle-between-two-points-in-degrees
Referências para o GeoPandas
Spatial data, GeoPandas, and Pokémon: Part I
https://towardsdatascience.com/spatial-data-geopandas-and-pok%C3%A9mon-part-i-8525c801ed18
Geospatial Analysis with Python, GeoJSON and GeoPandas
https://www.twilio.com/blog/2017/08/geospatial-analysis-python-geojson-geopandas.html
Making Maps With Python mplleaflet
http://michelleful.github.io/code-blog/2015/07/15/making-maps/
Uma lista com todos os mapas que você pode usar na plotagem:
https://github.com/jwass/mplleaflet/blob/master/mplleaflet/maptiles.py