import pandas as pd
import numpy as np
O Pandas trabalha com o tipo de dado Seires, funciona como uma tabela, com linhas e colunas. É representado como um dict do python. Já possui um indice das linhas.
doc: https://pandas.pydata.org/docs/reference/api/pandas.Series.html
s1 = pd.Series([1,2,6,7,8])
s1
0 1 1 2 2 6 3 7 4 8 dtype: int64
s1.values # mostra os valores da séire
array([1, 2, 6, 7, 8], dtype=int64)
s1.index # mostra o indice da serie
RangeIndex(start=0, stop=5, step=1)
s2 = pd.Series([1,2,-5,0], index=['a', 'b', 'c', 'd'])
s2
a 1 b 2 c -5 d 0 dtype: int64
s2.index
Index(['a', 'b', 'c', 'd'], dtype='object')
s2 * 2
a 2 b 4 c -10 d 0 dtype: int64
s2.isnull()
a False b False c False d False dtype: bool
df1 = {'estado':['SP', 'MG','PR','SP','MG','PR'], 'ano':[2019, 2019,2019, 2020,2020,2020], 'pop':[45.9, 21.2,16.9,46.6,21.4,17.3]}
type(df1)
dict
df1 = pd.DataFrame(df1)
type(df1)
pandas.core.frame.DataFrame
df1
estado | ano | pop | |
---|---|---|---|
0 | SP | 2019 | 45.9 |
1 | MG | 2019 | 21.2 |
2 | PR | 2019 | 16.9 |
3 | SP | 2020 | 46.6 |
4 | MG | 2020 | 21.4 |
5 | PR | 2020 | 17.3 |
df1.head() # mostra as primeiras 5 linhas
# df1.head(2) mostra a quantidade de linhas especificada entre ()
estado | ano | pop | |
---|---|---|---|
0 | SP | 2019 | 45.9 |
1 | MG | 2019 | 21.2 |
2 | PR | 2019 | 16.9 |
3 | SP | 2020 | 46.6 |
4 | MG | 2020 | 21.4 |
df1.tail(2) # mostra os ultimos registros da tabela
estado | ano | pop | |
---|---|---|---|
4 | MG | 2020 | 21.4 |
5 | PR | 2020 | 17.3 |
df1.sample(2) # mostra valores aleatórios
estado | ano | pop | |
---|---|---|---|
2 | PR | 2019 | 16.9 |
4 | MG | 2020 | 21.4 |
df2=pd.DataFrame(df1,columns=['ano','estado','pop'])
df2
ano | estado | pop | |
---|---|---|---|
0 | 2019 | SP | 45.9 |
1 | 2019 | MG | 21.2 |
2 | 2019 | PR | 16.9 |
3 | 2020 | SP | 46.6 |
4 | 2020 | MG | 21.4 |
5 | 2020 | PR | 17.3 |
df2['ano']
0 2019 1 2019 2 2019 3 2020 4 2020 5 2020 Name: ano, dtype: int64
df2.ano
0 2019 1 2019 2 2019 3 2020 4 2020 5 2020 Name: ano, dtype: int64
df2.dtypes
ano int64 estado object pop float64 dtype: object
df2['estimativa'] = 50
df2
ano | estado | pop | estimativa | |
---|---|---|---|---|
0 | 2019 | SP | 45.9 | 50 |
1 | 2019 | MG | 21.2 | 50 |
2 | 2019 | PR | 16.9 | 50 |
3 | 2020 | SP | 46.6 | 50 |
4 | 2020 | MG | 21.4 | 50 |
5 | 2020 | PR | 17.3 | 50 |
df2['estimativa'] = np.random.rand(6)
df2
ano | estado | pop | estimativa | |
---|---|---|---|---|
0 | 2019 | SP | 45.9 | 0.092455 |
1 | 2019 | MG | 21.2 | 0.739904 |
2 | 2019 | PR | 16.9 | 0.868621 |
3 | 2020 | SP | 46.6 | 0.131478 |
4 | 2020 | MG | 21.4 | 0.238360 |
5 | 2020 | PR | 17.3 | 0.191990 |
df3 = df2
df3
ano | estado | pop | estimativa | |
---|---|---|---|---|
0 | 2019 | SP | 45.9 | 0.092455 |
1 | 2019 | MG | 21.2 | 0.739904 |
2 | 2019 | PR | 16.9 | 0.868621 |
3 | 2020 | SP | 46.6 | 0.131478 |
4 | 2020 | MG | 21.4 | 0.238360 |
5 | 2020 | PR | 17.3 | 0.191990 |
df3['Não Paraná'] = df3.estado != 'PR'
df3
ano | estado | pop | estimativa | Não Paraná | |
---|---|---|---|---|---|
0 | 2019 | SP | 45.9 | 0.092455 | True |
1 | 2019 | MG | 21.2 | 0.739904 | True |
2 | 2019 | PR | 16.9 | 0.868621 | False |
3 | 2020 | SP | 46.6 | 0.131478 | True |
4 | 2020 | MG | 21.4 | 0.238360 | True |
5 | 2020 | PR | 17.3 | 0.191990 | False |
del df3['Não Paraná']
df3
ano | estado | pop | estimativa | |
---|---|---|---|---|
0 | 2019 | SP | 45.9 | 0.092455 |
1 | 2019 | MG | 21.2 | 0.739904 |
2 | 2019 | PR | 16.9 | 0.868621 |
3 | 2020 | SP | 46.6 | 0.131478 |
4 | 2020 | MG | 21.4 | 0.238360 |
5 | 2020 | PR | 17.3 | 0.191990 |
df2.shape # (linhas, colunas)
(6, 4)
df3.shape[0] # qunatas linhas
6
df3.index
RangeIndex(start=0, stop=6, step=1)
df3.columns
Index(['ano', 'estado', 'pop', 'estimativa'], dtype='object')
df3.count()
ano 6 estado 6 pop 6 estimativa 6 dtype: int64
df3.columns = ['Ano', 'Estado', 'População', 'Estimativa']
df3
Ano | Estado | População | Estimativa | |
---|---|---|---|---|
0 | 2019 | SP | 45.9 | 0.092455 |
1 | 2019 | MG | 21.2 | 0.739904 |
2 | 2019 | PR | 16.9 | 0.868621 |
3 | 2020 | SP | 46.6 | 0.131478 |
4 | 2020 | MG | 21.4 | 0.238360 |
5 | 2020 | PR | 17.3 | 0.191990 |
df3.describe()
Ano | População | Estimativa | |
---|---|---|---|
count | 6.000000 | 6.000000 | 6.000000 |
mean | 2019.500000 | 28.216667 | 0.377135 |
std | 0.547723 | 14.096725 | 0.337072 |
min | 2019.000000 | 16.900000 | 0.092455 |
25% | 2019.000000 | 18.275000 | 0.146606 |
50% | 2019.500000 | 21.300000 | 0.215175 |
75% | 2020.000000 | 39.775000 | 0.614518 |
max | 2020.000000 | 46.600000 | 0.868621 |
df3.describe(include='all')
Ano | Estado | População | Estimativa | |
---|---|---|---|---|
count | 6.000000 | 6 | 6.000000 | 6.000000 |
unique | NaN | 3 | NaN | NaN |
top | NaN | SP | NaN | NaN |
freq | NaN | 2 | NaN | NaN |
mean | 2019.500000 | NaN | 28.216667 | 0.377135 |
std | 0.547723 | NaN | 14.096725 | 0.337072 |
min | 2019.000000 | NaN | 16.900000 | 0.092455 |
25% | 2019.000000 | NaN | 18.275000 | 0.146606 |
50% | 2019.500000 | NaN | 21.300000 | 0.215175 |
75% | 2020.000000 | NaN | 39.775000 | 0.614518 |
max | 2020.000000 | NaN | 46.600000 | 0.868621 |