Python para enfermeiras (17)¶
Pandas uma biblioteca Python para análise de dados¶
In [2]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
In [3]:
import pandas as pd
pd.__version__
Out[3]:
'1.1.3'
criando series¶
In [4]:
from pandas import Series
In [5]:
# Criando uma série (mortes maternas) sem especificar os índices
mortmaterna0918 = Series([102, 87, 60, 64, 84, 83, 91, 90, 81])
In [6]:
mortmaterna0918
Out[6]:
0 102 1 87 2 60 3 64 4 84 5 83 6 91 7 90 8 81 dtype: int64
In [7]:
type(mortmaterna0918)
Out[7]:
pandas.core.series.Series
In [8]:
mortmaterna0918.values
Out[8]:
array([102, 87, 60, 64, 84, 83, 91, 90, 81], dtype=int64)
In [9]:
mortmaterna0918.index
Out[9]:
RangeIndex(start=0, stop=9, step=1)
In [10]:
# Criando uma série e especificando os índices
mortmaterna0918_a = Series([102, 87, 60, 64, 84, 83, 91, 90, 81],
index = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2017, 2018])
In [11]:
mortmaterna0918_a
Out[11]:
2009 102 2010 87 2011 60 2012 64 2013 84 2014 83 2015 91 2017 90 2018 81 dtype: int64
In [12]:
print("Média:", mortmaterna0918.mean())
print("Desvio padrão:", mortmaterna0918.std())
Média: 82.44444444444444 Desvio padrão: 13.144496102086901
In [13]:
mortmaterna0918_a.describe()
Out[13]:
count 9.000000 mean 82.444444 std 13.144496 min 60.000000 25% 81.000000 50% 84.000000 75% 90.000000 max 102.000000 dtype: float64
In [14]:
# nem tudo eu sei, mas vamos explorando as possibilidades
np.log(mortmaterna0918_a)
Out[14]:
2009 4.624973 2010 4.465908 2011 4.094345 2012 4.158883 2013 4.430817 2014 4.418841 2015 4.510860 2017 4.499810 2018 4.394449 dtype: float64
DataFrame: estrutura bidimensional de dados¶
In [15]:
from pandas import DataFrame
In [16]:
data = {'Mortes_Maternas': [102, 87, 60, 64, 84, 83, 91, 90, 81],
'Ano': [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2017, 2018],
'RMM': [60.9, 51.9, 33.9, 36.3, 48.5, 47.2, 51.6, 53.1, 48.9]}
In [17]:
frame = DataFrame(data)
In [18]:
frame
Out[18]:
Mortes_Maternas | Ano | RMM | |
---|---|---|---|
0 | 102 | 2009 | 60.9 |
1 | 87 | 2010 | 51.9 |
2 | 60 | 2011 | 33.9 |
3 | 64 | 2012 | 36.3 |
4 | 84 | 2013 | 48.5 |
5 | 83 | 2014 | 47.2 |
6 | 91 | 2015 | 51.6 |
7 | 90 | 2017 | 53.1 |
8 | 81 | 2018 | 48.9 |
In [19]:
type(frame)
Out[19]:
pandas.core.frame.DataFrame
In [20]:
# arrumando melhor a tabela
DataFrame(data, columns = ['Ano', 'Mortes_Maternas', 'RMM'])
Out[20]:
Ano | Mortes_Maternas | RMM | |
---|---|---|---|
0 | 2009 | 102 | 60.9 |
1 | 2010 | 87 | 51.9 |
2 | 2011 | 60 | 33.9 |
3 | 2012 | 64 | 36.3 |
4 | 2013 | 84 | 48.5 |
5 | 2014 | 83 | 47.2 |
6 | 2015 | 91 | 51.6 |
7 | 2017 | 90 | 53.1 |
8 | 2018 | 81 | 48.9 |
In [21]:
# Criando outro dataframe com os mesmo dados anteriores mas adicionando uma coluna
frame2 = DataFrame(data, columns = ['Ano', 'Mortes_Maternas', 'RMM', 'Meta'])
In [22]:
frame2
Out[22]:
Ano | Mortes_Maternas | RMM | Meta | |
---|---|---|---|---|
0 | 2009 | 102 | 60.9 | NaN |
1 | 2010 | 87 | 51.9 | NaN |
2 | 2011 | 60 | 33.9 | NaN |
3 | 2012 | 64 | 36.3 | NaN |
4 | 2013 | 84 | 48.5 | NaN |
5 | 2014 | 83 | 47.2 | NaN |
6 | 2015 | 91 | 51.6 | NaN |
7 | 2017 | 90 | 53.1 | NaN |
8 | 2018 | 81 | 48.9 | NaN |
NaN é porque ainda não tem valor informado. Mas, cabe ressaltar que entre 2016 e 2030, como parte dos Objetivos de Desenvolvimento Sustentável (ODS), a meta é reduzir a taxa global de mortalidade materna para menos de 70 por cada 100 mil nascidos vivos. Os dados (desatualizados), ainda que inferiores à meta global, a meu juízo mostram o quanto estamos distantes e o quão pouco estamos fazendo.
In [23]:
# Localizando registro no dataframe (índice 3)
frame2.loc[3]
Out[23]:
Ano 2012 Mortes_Maternas 64 RMM 36.3 Meta NaN Name: 3, dtype: object
Dataframes e Arquivos csv¶
In [24]:
# Usando o método read_csv sobre tipos de parto por região no Brasil (Ministério da Saúde)
df = pd.read_csv
In [25]:
df = pd.read_csv('parto3.CSV')
In [26]:
df
Out[26]:
;Vaginal;Cirurgia;Ignorado;Total | |
---|---|
0 | 1 Norte;18680;13163;70;31913 |
1 | 2 Nordeste;102337;67022;612;169971 |
2 | 3 Sudeste;148333;165466;477;314276 |
3 | 4 Sul;34646;32943;30;67619 |
4 | 5 Centro-Oeste;17086;19015;65;36166 |
5 | Total;321082;297609;1254;619945 |
In [27]:
df = pd.read_csv("parto3.CSV")
df
Out[27]:
;Vaginal;Cirurgia;Ignorado;Total | |
---|---|
0 | 1 Norte;18680;13163;70;31913 |
1 | 2 Nordeste;102337;67022;612;169971 |
2 | 3 Sudeste;148333;165466;477;314276 |
3 | 4 Sul;34646;32943;30;67619 |
4 | 5 Centro-Oeste;17086;19015;65;36166 |
5 | Total;321082;297609;1254;619945 |
In [28]:
# exibir as 2 primeiras linhas
df.head(2)
Out[28]:
;Vaginal;Cirurgia;Ignorado;Total | |
---|---|
0 | 1 Norte;18680;13163;70;31913 |
1 | 2 Nordeste;102337;67022;612;169971 |
Plotting¶
In [34]:
import matplotlib.pyplot as plt
from matplotlib import style
%matplotlib inline
In [35]:
import matplotlib as mat
mat.__version__
Out[35]:
'3.3.2'
In [44]:
# Plotagem da série temporal das mortes maternas (ano, mortes)
ts = pd.Series(mortmaterna0918_a)
ts.plot()
Out[44]:
<AxesSubplot:>
Apontamentos
- Não há apontamentos.
BNN - ISSN 1676-4893
Boletim do Núcleo de Estudos e Pesquisas sobre as Atividades de Enfermagem (NEPAE)e do Núcleo de Estudos sobre Saúde e Etnia Negra (NESEN).