{
"cells": [
{
"cell_type": "markdown",
"id": "636ddd91-6a24-4995-9acd-c2ece1439fd0",
"metadata": {},
"source": [
"# Leitura e Escrita de Arquivos de Planilha\n",
"\n",
"Grande parte da informação que é manipulada no terceiro setor e na indústria encontra-se estruturada na forma de planilhas intercambiáveis entre programas bem conhecidos, tais como _Microsoft Excel_, _LibreOffice Calc_ e _Apple Numbers_. Planilhas compõem-se de tabelas que contém texto e números dispostos em células. \n",
"\n",
"Hoje em dia, o formato de arquivo `.csv` (_comma separated values_), ou _valores separados com vírgula_, tem ganhado notoriedade em diversas áreas, principalmente ciência e análise de dados. Para um engenheiro, a linguagem Python pode oferecer uma enorme gama de utilidades para tratamento de dados tabelados, permitindo que o trabalho conjunto com softwares de planilha seja expandido.\n",
"\n",
"Neste capítulo, aprenderemos a ler e a escrever arquivos em formato `.csv` para realizar análises e cálculos estatísticos básicos, dando enfoque à biblioteca _Pandas_."
]
},
{
"cell_type": "markdown",
"id": "243437a4-3479-497b-bb52-7534122ea1ca",
"metadata": {},
"source": [
"## Motivação \n",
"\n",
"O arquivo autos.csv contém uma planilha relacionando modelos automotivos com sua massa (em kg) e consumo (em km/litro). Usaremos essas informações para realizar algumas análises. "
]
},
{
"cell_type": "markdown",
"id": "fa7083eb-9859-4378-bc42-b55e2248f901",
"metadata": {},
"source": [
"## Leitura de arquivos\n",
"\n",
"Usaremos a função `read_csv` para ler o arquivo."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "14f7229d-fc33-445a-bc58-fdd953fda878",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" modelo \n",
" massa (kg) \n",
" C (km/litro) \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" Focus \n",
" 1198 \n",
" 11.90 \n",
" \n",
" \n",
" 1 \n",
" Crown Victoria \n",
" 1715 \n",
" 6.80 \n",
" \n",
" \n",
" 2 \n",
" Expedition \n",
" 2530 \n",
" 5.53 \n",
" \n",
" \n",
" 3 \n",
" Explorer \n",
" 2014 \n",
" 6.38 \n",
" \n",
" \n",
" 4 \n",
" F-150 \n",
" 2136 \n",
" 5.53 \n",
" \n",
" \n",
" 5 \n",
" Fusion \n",
" 1492 \n",
" 8.50 \n",
" \n",
" \n",
" 6 \n",
" Taurus \n",
" 1652 \n",
" 7.65 \n",
" \n",
" \n",
" 7 \n",
" Fit \n",
" 1168 \n",
" 13.60 \n",
" \n",
" \n",
" 8 \n",
" Accord \n",
" 1492 \n",
" 9.78 \n",
" \n",
" \n",
" 9 \n",
" CR-V \n",
" 1602 \n",
" 8.93 \n",
" \n",
" \n",
" 10 \n",
" Civic \n",
" 1192 \n",
" 11.90 \n",
" \n",
" \n",
" 11 \n",
" Ridgeline \n",
" 2045 \n",
" 6.38 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" modelo massa (kg) C (km/litro)\n",
"0 Focus 1198 11.90\n",
"1 Crown Victoria 1715 6.80\n",
"2 Expedition 2530 5.53\n",
"3 Explorer 2014 6.38\n",
"4 F-150 2136 5.53\n",
"5 Fusion 1492 8.50\n",
"6 Taurus 1652 7.65\n",
"7 Fit 1168 13.60\n",
"8 Accord 1492 9.78\n",
"9 CR-V 1602 8.93\n",
"10 Civic 1192 11.90\n",
"11 Ridgeline 2045 6.38"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"\n",
"df = pd.read_csv('./data/autos.csv')\n",
"df"
]
},
{
"cell_type": "markdown",
"id": "dc4b0041-452c-49cd-a2d7-559c507d68f0",
"metadata": {},
"source": [
"## _Series_ e _DataFrames_\n",
"\n",
"A variável `df` é um _DataFrame_, uma tabela (bidimensional) com cada coluna formada como uma _Series_. Uma _Series_ (série) é um _array_ unidimensional que possui um índice para cada entrada e tipos de dados variáveis."
]
},
{
"cell_type": "markdown",
"id": "a8c6ffc0-c414-402e-a856-6c3c1ee63511",
"metadata": {},
"source": [
"### Selecionando colunas e valores\n",
"\n",
"Para acessar as colunas, usamos indexação:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "04349692-1345-400b-a2e0-c6491643dcfd",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 Focus\n",
"1 Crown Victoria\n",
"2 Expedition\n",
"3 Explorer\n",
"4 F-150\n",
"5 Fusion\n",
"6 Taurus\n",
"7 Fit\n",
"8 Accord\n",
"9 CR-V\n",
"10 Civic\n",
"11 Ridgeline\n",
"Name: modelo, dtype: object"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"modelo = df['modelo']\n",
"modelo"
]
},
{
"cell_type": "markdown",
"id": "2c497d69-be70-42c0-b581-34c95ed07f6e",
"metadata": {},
"source": [
"Para acessar os valores, usamos `values`:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "59e491fc-0607-45fe-ae0a-6a6276a96b0a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['Focus', 'Crown Victoria', 'Expedition', 'Explorer', 'F-150',\n",
" 'Fusion', 'Taurus', 'Fit', 'Accord', 'CR-V', 'Civic', 'Ridgeline'],\n",
" dtype=object)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"modelo.values"
]
},
{
"cell_type": "markdown",
"id": "42ff685b-d79a-4da2-bae1-cafe8150497c",
"metadata": {},
"source": [
"Notemos que `modelo` é uma série, mas `modelo.values` é um _array_ 1D."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "714109f0-4ba0-456f-9947-b519848892a7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"pandas.core.series.Series"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(modelo)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "6f1db317-eb13-4ad7-ba88-455e07dca530",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"numpy.ndarray"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(modelo.values)"
]
},
{
"cell_type": "markdown",
"id": "6a805975-3185-48d6-87cd-0ca22fab15d4",
"metadata": {},
"source": [
"Enquanto a série acima armazena objetos `str`, as demais armazenam valores numéricos."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "f082a8a9-f295-4f55-bf27-05c83ce9b2a6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1198, 1715, 2530, 2014, 2136, 1492, 1652, 1168, 1492, 1602, 1192,\n",
" 2045])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"massa = df['massa (kg)'].values\n",
"massa"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "4637848d-2603-46f3-ad3a-63fe8b40ed08",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([11.9 , 6.8 , 5.53, 6.38, 5.53, 8.5 , 7.65, 13.6 , 9.78,\n",
" 8.93, 11.9 , 6.38])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"consumo = df['C (km/litro)'].values\n",
"consumo"
]
},
{
"cell_type": "markdown",
"id": "2fb755ee-3191-4386-a83a-fd4e4f2aea4b",
"metadata": {},
"source": [
"### Renomeando colunas\n",
"\n",
"Vamos renomear as colunas através de um `dict` para facilitar a manipulação."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e58d44f0-3d1b-46a9-ace4-d8e2745a61f3",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" modelo \n",
" M \n",
" C \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" Focus \n",
" 1198 \n",
" 11.90 \n",
" \n",
" \n",
" 1 \n",
" Crown Victoria \n",
" 1715 \n",
" 6.80 \n",
" \n",
" \n",
" 2 \n",
" Expedition \n",
" 2530 \n",
" 5.53 \n",
" \n",
" \n",
" 3 \n",
" Explorer \n",
" 2014 \n",
" 6.38 \n",
" \n",
" \n",
" 4 \n",
" F-150 \n",
" 2136 \n",
" 5.53 \n",
" \n",
" \n",
" 5 \n",
" Fusion \n",
" 1492 \n",
" 8.50 \n",
" \n",
" \n",
" 6 \n",
" Taurus \n",
" 1652 \n",
" 7.65 \n",
" \n",
" \n",
" 7 \n",
" Fit \n",
" 1168 \n",
" 13.60 \n",
" \n",
" \n",
" 8 \n",
" Accord \n",
" 1492 \n",
" 9.78 \n",
" \n",
" \n",
" 9 \n",
" CR-V \n",
" 1602 \n",
" 8.93 \n",
" \n",
" \n",
" 10 \n",
" Civic \n",
" 1192 \n",
" 11.90 \n",
" \n",
" \n",
" 11 \n",
" Ridgeline \n",
" 2045 \n",
" 6.38 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" modelo M C\n",
"0 Focus 1198 11.90\n",
"1 Crown Victoria 1715 6.80\n",
"2 Expedition 2530 5.53\n",
"3 Explorer 2014 6.38\n",
"4 F-150 2136 5.53\n",
"5 Fusion 1492 8.50\n",
"6 Taurus 1652 7.65\n",
"7 Fit 1168 13.60\n",
"8 Accord 1492 9.78\n",
"9 CR-V 1602 8.93\n",
"10 Civic 1192 11.90\n",
"11 Ridgeline 2045 6.38"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# mapa de renomeação\n",
"n = {'massa (kg)':'M',\n",
" 'C (km/litro)':'C' }\n",
"\n",
"# renomeia colunas\n",
"df = df.rename(columns=n)\n",
"df"
]
},
{
"cell_type": "markdown",
"id": "f16e57ac-c542-4a1d-bc9c-24fd6447fc8f",
"metadata": {},
"source": [
"### Identificando máximos, mínimos e médias\n",
"\n",
"Buscando os valores para _massa_:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "94f4a84b-fa81-4adb-b54a-98a194894670",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2530"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# máximo\n",
"df['M'].max()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "4caddd54-3a10-4c45-a699-9ee2b1fad30c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1168"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# mínimo\n",
"df['M'].min()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "c916899a-6fc2-466a-80ce-312a81b6b403",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1686.3333333333333"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# média\n",
"df['M'].mean()"
]
},
{
"cell_type": "markdown",
"id": "dd34ff7d-c1de-4a5a-b308-053f7426fd57",
"metadata": {},
"source": [
"Buscando os valores para _consumo_:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "76bd4dd6-e5e2-4c4f-899b-201118495ab3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"13.6"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# máximo\n",
"df['C'].max()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "e4f20132-6c91-4efd-80a1-e173374b8393",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5.53"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# mínimo\n",
"df['C'].min()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "521901ce-5350-44ec-8dc9-ea2bd82d5629",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"8.573333333333332"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# média\n",
"df['C'].mean()"
]
},
{
"cell_type": "markdown",
"id": "72697687-dba6-4681-883a-ec0cbd4ccc2c",
"metadata": {},
"source": [
"Encontrando os índices correspondentes:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "f01bd1ca-d38c-4d0d-a489-0ce578d53c38",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.argmin(df['M'])"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "34090615-4d0f-4a75-8a80-3f865674a3ae",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.argmax(df['M'])"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "a33e6b2a-3a26-4a23-bc12-2b281e231caf",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.argmin(df['C'])"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "f0814916-013a-4765-bac8-bb00f2ac27cc",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.argmax(df['C'])"
]
},
{
"cell_type": "markdown",
"id": "7a5b01c5-e9f1-4ff7-8391-bb2e370ffadb",
"metadata": {},
"source": [
"## Acessando dados por índice\n",
"\n",
"Primeiramente, notemos que os índices forma um array. "
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "3e0cf9de-763c-4444-a0e1-26e47b3a94a7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RangeIndex(start=0, stop=12, step=1)"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.index"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "96d99e9d-d6e6-4a4c-9419-012b6bfd4fa7",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# converte para array\n",
"df.index.to_numpy()"
]
},
{
"cell_type": "markdown",
"id": "497270f8-b4e5-4622-9e08-9222b2b8d152",
"metadata": {},
"source": [
"Para acessar entradas pelo índice usamos `iloc`."
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "d188e640-935b-4e59-b9da-7852c648d199",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2530"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# massa máxima no índice 2\n",
"df.iloc[2]['M']"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "240cde48-d765-4e14-a231-c58da9aa60b1",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"13.6"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# consumo máximo no índice 7\n",
"df.iloc[7]['C']"
]
},
{
"cell_type": "markdown",
"id": "f13e2d4f-6242-4a59-9a61-e98ad7814c37",
"metadata": {},
"source": [
"## Selecionando subtabelas"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "c4ec7625-22d1-425b-abe5-b9f0b72880cb",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" modelo \n",
" M \n",
" C \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" Focus \n",
" 1198 \n",
" 11.90 \n",
" \n",
" \n",
" 1 \n",
" Crown Victoria \n",
" 1715 \n",
" 6.80 \n",
" \n",
" \n",
" 2 \n",
" Expedition \n",
" 2530 \n",
" 5.53 \n",
" \n",
" \n",
" 3 \n",
" Explorer \n",
" 2014 \n",
" 6.38 \n",
" \n",
" \n",
" 4 \n",
" F-150 \n",
" 2136 \n",
" 5.53 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" modelo M C\n",
"0 Focus 1198 11.90\n",
"1 Crown Victoria 1715 6.80\n",
"2 Expedition 2530 5.53\n",
"3 Explorer 2014 6.38\n",
"4 F-150 2136 5.53"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[0:5]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "531fa012-9cf3-4b2f-8e3a-f3ac7a871bb0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" modelo \n",
" M \n",
" C \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" Focus \n",
" 1198 \n",
" 11.90 \n",
" \n",
" \n",
" 2 \n",
" Expedition \n",
" 2530 \n",
" 5.53 \n",
" \n",
" \n",
" 4 \n",
" F-150 \n",
" 2136 \n",
" 5.53 \n",
" \n",
" \n",
" 6 \n",
" Taurus \n",
" 1652 \n",
" 7.65 \n",
" \n",
" \n",
" 8 \n",
" Accord \n",
" 1492 \n",
" 9.78 \n",
" \n",
" \n",
" 10 \n",
" Civic \n",
" 1192 \n",
" 11.90 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" modelo M C\n",
"0 Focus 1198 11.90\n",
"2 Expedition 2530 5.53\n",
"4 F-150 2136 5.53\n",
"6 Taurus 1652 7.65\n",
"8 Accord 1492 9.78\n",
"10 Civic 1192 11.90"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# salto de 2\n",
"df.iloc[::2]"
]
},
{
"cell_type": "markdown",
"id": "ff9ae958-ad78-4ece-b72a-97a15d3ec8e8",
"metadata": {},
"source": [
"Restringindo colunas:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "2b812e09-5abe-41cb-a930-a99affd197d4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 1198\n",
"1 1715\n",
"Name: M, dtype: int64"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.iloc[0:2]['M']"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "9c9733de-8b99-4cbf-8a52-9ffe3eebfa7f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" M \n",
" C \n",
" \n",
" \n",
" \n",
" \n",
" 3 \n",
" 2014 \n",
" 6.38 \n",
" \n",
" \n",
" 4 \n",
" 2136 \n",
" 5.53 \n",
" \n",
" \n",
" 5 \n",
" 1492 \n",
" 8.50 \n",
" \n",
" \n",
" 6 \n",
" 1652 \n",
" 7.65 \n",
" \n",
" \n",
" 7 \n",
" 1168 \n",
" 13.60 \n",
" \n",
" \n",
" 8 \n",
" 1492 \n",
" 9.78 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" M C\n",
"3 2014 6.38\n",
"4 2136 5.53\n",
"5 1492 8.50\n",
"6 1652 7.65\n",
"7 1168 13.60\n",
"8 1492 9.78"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# apenas considera colunas 'M' e 'C'\n",
"df.iloc[3:9][['M','C']]"
]
},
{
"cell_type": "markdown",
"id": "c3f38303-06e2-407a-b5e0-1d9215ac9780",
"metadata": {},
"source": [
"## Plotando dados\n",
"\n",
"Podemos plotar dados diretamente a partir das séries."
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "091c30a9-a972-479e-92a1-5debd971ea52",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(df['M'],df['C'],'o')\n",
"plt.xlabel('massa')\n",
"plt.ylabel('consumo');"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "2095efc1-d58b-4aac-9aed-113e5cc2e031",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(10,4))\n",
"plt.hist(df['M'],color=[0.5,0.5,0.5])\n",
"plt.title('Histograma');"
]
},
{
"cell_type": "markdown",
"id": "54ddad08-6bb0-4931-b21f-449a9346af6a",
"metadata": {},
"source": [
"## Adicionando colunas\n",
"\n",
"Suponhamos que queiramos computar o índice massa/consumo e seu inverso e adicioná-los como colunas em nossa planilha. Podemos fazer isso diretamente com:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "4f474a4c-5eef-43ac-908e-f3be0b1718f2",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" modelo \n",
" M \n",
" C \n",
" M/C \n",
" C/M \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" Focus \n",
" 1198 \n",
" 11.90 \n",
" 100.672269 \n",
" 0.009933 \n",
" \n",
" \n",
" 1 \n",
" Crown Victoria \n",
" 1715 \n",
" 6.80 \n",
" 252.205882 \n",
" 0.003965 \n",
" \n",
" \n",
" 2 \n",
" Expedition \n",
" 2530 \n",
" 5.53 \n",
" 457.504521 \n",
" 0.002186 \n",
" \n",
" \n",
" 3 \n",
" Explorer \n",
" 2014 \n",
" 6.38 \n",
" 315.673981 \n",
" 0.003168 \n",
" \n",
" \n",
" 4 \n",
" F-150 \n",
" 2136 \n",
" 5.53 \n",
" 386.256781 \n",
" 0.002589 \n",
" \n",
" \n",
" 5 \n",
" Fusion \n",
" 1492 \n",
" 8.50 \n",
" 175.529412 \n",
" 0.005697 \n",
" \n",
" \n",
" 6 \n",
" Taurus \n",
" 1652 \n",
" 7.65 \n",
" 215.947712 \n",
" 0.004631 \n",
" \n",
" \n",
" 7 \n",
" Fit \n",
" 1168 \n",
" 13.60 \n",
" 85.882353 \n",
" 0.011644 \n",
" \n",
" \n",
" 8 \n",
" Accord \n",
" 1492 \n",
" 9.78 \n",
" 152.556237 \n",
" 0.006555 \n",
" \n",
" \n",
" 9 \n",
" CR-V \n",
" 1602 \n",
" 8.93 \n",
" 179.395297 \n",
" 0.005574 \n",
" \n",
" \n",
" 10 \n",
" Civic \n",
" 1192 \n",
" 11.90 \n",
" 100.168067 \n",
" 0.009983 \n",
" \n",
" \n",
" 11 \n",
" Ridgeline \n",
" 2045 \n",
" 6.38 \n",
" 320.532915 \n",
" 0.003120 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" modelo M C M/C C/M\n",
"0 Focus 1198 11.90 100.672269 0.009933\n",
"1 Crown Victoria 1715 6.80 252.205882 0.003965\n",
"2 Expedition 2530 5.53 457.504521 0.002186\n",
"3 Explorer 2014 6.38 315.673981 0.003168\n",
"4 F-150 2136 5.53 386.256781 0.002589\n",
"5 Fusion 1492 8.50 175.529412 0.005697\n",
"6 Taurus 1652 7.65 215.947712 0.004631\n",
"7 Fit 1168 13.60 85.882353 0.011644\n",
"8 Accord 1492 9.78 152.556237 0.006555\n",
"9 CR-V 1602 8.93 179.395297 0.005574\n",
"10 Civic 1192 11.90 100.168067 0.009983\n",
"11 Ridgeline 2045 6.38 320.532915 0.003120"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# cria coluna 'M/C'\n",
"df['M/C'] = df['M']/df['C']\n",
"df['C/M'] = 1./df['M/C']\n",
"df"
]
},
{
"cell_type": "markdown",
"id": "7f2ea740-67b5-4ab3-a006-c230f499d296",
"metadata": {},
"source": [
"## Escrita de arquivos\n",
"\n",
"Para exportar nossa nova planilha para um novo arquivo, digamos `autos-novo.csv`, fazemos:"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "53931e5c-957f-4c85-b2b7-cabec815c206",
"metadata": {},
"outputs": [],
"source": [
"df.to_csv('data/autos-novo.csv',index=False)"
]
},
{
"cell_type": "markdown",
"id": "950ffd81-0cff-478e-84ca-ace5f5f91eee",
"metadata": {},
"source": [
"Podemos checar novamente o conteúdo do novo arquivo com:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "f104d01c-4b48-4ee0-b547-079f541a98ec",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" modelo \n",
" M \n",
" C \n",
" M/C \n",
" C/M \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" Focus \n",
" 1198 \n",
" 11.90 \n",
" 100.672269 \n",
" 0.009933 \n",
" \n",
" \n",
" 1 \n",
" Crown Victoria \n",
" 1715 \n",
" 6.80 \n",
" 252.205882 \n",
" 0.003965 \n",
" \n",
" \n",
" 2 \n",
" Expedition \n",
" 2530 \n",
" 5.53 \n",
" 457.504521 \n",
" 0.002186 \n",
" \n",
" \n",
" 3 \n",
" Explorer \n",
" 2014 \n",
" 6.38 \n",
" 315.673981 \n",
" 0.003168 \n",
" \n",
" \n",
" 4 \n",
" F-150 \n",
" 2136 \n",
" 5.53 \n",
" 386.256781 \n",
" 0.002589 \n",
" \n",
" \n",
" 5 \n",
" Fusion \n",
" 1492 \n",
" 8.50 \n",
" 175.529412 \n",
" 0.005697 \n",
" \n",
" \n",
" 6 \n",
" Taurus \n",
" 1652 \n",
" 7.65 \n",
" 215.947712 \n",
" 0.004631 \n",
" \n",
" \n",
" 7 \n",
" Fit \n",
" 1168 \n",
" 13.60 \n",
" 85.882353 \n",
" 0.011644 \n",
" \n",
" \n",
" 8 \n",
" Accord \n",
" 1492 \n",
" 9.78 \n",
" 152.556237 \n",
" 0.006555 \n",
" \n",
" \n",
" 9 \n",
" CR-V \n",
" 1602 \n",
" 8.93 \n",
" 179.395297 \n",
" 0.005574 \n",
" \n",
" \n",
" 10 \n",
" Civic \n",
" 1192 \n",
" 11.90 \n",
" 100.168067 \n",
" 0.009983 \n",
" \n",
" \n",
" 11 \n",
" Ridgeline \n",
" 2045 \n",
" 6.38 \n",
" 320.532915 \n",
" 0.003120 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" modelo M C M/C C/M\n",
"0 Focus 1198 11.90 100.672269 0.009933\n",
"1 Crown Victoria 1715 6.80 252.205882 0.003965\n",
"2 Expedition 2530 5.53 457.504521 0.002186\n",
"3 Explorer 2014 6.38 315.673981 0.003168\n",
"4 F-150 2136 5.53 386.256781 0.002589\n",
"5 Fusion 1492 8.50 175.529412 0.005697\n",
"6 Taurus 1652 7.65 215.947712 0.004631\n",
"7 Fit 1168 13.60 85.882353 0.011644\n",
"8 Accord 1492 9.78 152.556237 0.006555\n",
"9 CR-V 1602 8.93 179.395297 0.005574\n",
"10 Civic 1192 11.90 100.168067 0.009983\n",
"11 Ridgeline 2045 6.38 320.532915 0.003120"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfnovo = pd.read_csv('data/autos-novo.csv')\n",
"dfnovo"
]
},
{
"cell_type": "markdown",
"id": "a38b6e19-c3f6-4b9a-8d49-d6b62c2af690",
"metadata": {},
"source": [
"Caso seu arquivo seja muito grande, é possível visualizar parte dele usando `head` e `tail`."
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "afc3e3b7-d01f-4b0b-8803-dfbcb01ecb93",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" modelo \n",
" M \n",
" C \n",
" M/C \n",
" C/M \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" Focus \n",
" 1198 \n",
" 11.90 \n",
" 100.672269 \n",
" 0.009933 \n",
" \n",
" \n",
" 1 \n",
" Crown Victoria \n",
" 1715 \n",
" 6.80 \n",
" 252.205882 \n",
" 0.003965 \n",
" \n",
" \n",
" 2 \n",
" Expedition \n",
" 2530 \n",
" 5.53 \n",
" 457.504521 \n",
" 0.002186 \n",
" \n",
" \n",
" 3 \n",
" Explorer \n",
" 2014 \n",
" 6.38 \n",
" 315.673981 \n",
" 0.003168 \n",
" \n",
" \n",
" 4 \n",
" F-150 \n",
" 2136 \n",
" 5.53 \n",
" 386.256781 \n",
" 0.002589 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" modelo M C M/C C/M\n",
"0 Focus 1198 11.90 100.672269 0.009933\n",
"1 Crown Victoria 1715 6.80 252.205882 0.003965\n",
"2 Expedition 2530 5.53 457.504521 0.002186\n",
"3 Explorer 2014 6.38 315.673981 0.003168\n",
"4 F-150 2136 5.53 386.256781 0.002589"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 'cabeça' do arquivo\n",
"dfnovo.head()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "05873d51-2467-4226-88e0-489a84867675",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" modelo \n",
" M \n",
" C \n",
" M/C \n",
" C/M \n",
" \n",
" \n",
" \n",
" \n",
" 7 \n",
" Fit \n",
" 1168 \n",
" 13.60 \n",
" 85.882353 \n",
" 0.011644 \n",
" \n",
" \n",
" 8 \n",
" Accord \n",
" 1492 \n",
" 9.78 \n",
" 152.556237 \n",
" 0.006555 \n",
" \n",
" \n",
" 9 \n",
" CR-V \n",
" 1602 \n",
" 8.93 \n",
" 179.395297 \n",
" 0.005574 \n",
" \n",
" \n",
" 10 \n",
" Civic \n",
" 1192 \n",
" 11.90 \n",
" 100.168067 \n",
" 0.009983 \n",
" \n",
" \n",
" 11 \n",
" Ridgeline \n",
" 2045 \n",
" 6.38 \n",
" 320.532915 \n",
" 0.003120 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" modelo M C M/C C/M\n",
"7 Fit 1168 13.60 85.882353 0.011644\n",
"8 Accord 1492 9.78 152.556237 0.006555\n",
"9 CR-V 1602 8.93 179.395297 0.005574\n",
"10 Civic 1192 11.90 100.168067 0.009983\n",
"11 Ridgeline 2045 6.38 320.532915 0.003120"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 'cauda' do arquivo\n",
"dfnovo.tail()"
]
},
{
"cell_type": "markdown",
"id": "f4f5fe9c-c3b2-4d0d-8ab0-c7bc15d0359f",
"metadata": {},
"source": [
"## Estatística Descritiva\n",
"\n",
"Algumas medidas importantes da estatística podem ser calculadas diretamente com _DataFrames_. Aqui, aprenderemos a calcular duas classes:\n",
"\n",
"- medidas de posição: média, moda, mediana\n",
"- medidas de dispersão: amplitude, desvio médio, desvio padrão, variância"
]
},
{
"cell_type": "markdown",
"id": "407c55df-11f5-42b7-ac2e-0a17b7d849f1",
"metadata": {},
"source": [
"### Medidas de posição"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "a5109dea-852f-4db3-a93f-a55dc7698d02",
"metadata": {},
"outputs": [],
"source": [
"# consumo\n",
"c = df['C']"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "406cf3d6-a2e6-4951-bc7d-3a7df56e0aeb",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"8.573333333333332"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# média\n",
"c.mean()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "8ba64603-0133-4296-a2f2-4e74c82c085e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 5.53\n",
"1 6.38\n",
"2 11.90\n",
"dtype: float64"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# moda: valores mais frequentes\n",
"c.mode()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "9d4e5b6c-5e14-4dc5-a4e0-76520a0a0965",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"8.075"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# mediana\n",
"c.median()"
]
},
{
"cell_type": "markdown",
"id": "aa325c2f-4211-4be3-be5a-457e8d6a6d6b",
"metadata": {},
"source": [
"### Medidas de dispersão"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "a1689f49-98a2-4a6b-a5e2-2974006d9392",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"8.07"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# amplitude\n",
"c.max() - c.min()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "94c3b0fd-ee37-41c3-af27-f16acf5f1d97",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2.2072222222222218"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# desvio médio\n",
"c.mad()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "322c7c22-54d9-453e-a877-b9edc6c662e4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2.715810052714336"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# desvio padrão\n",
"c.std()"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "895479c0-7afe-4c99-ad8f-e1c96ed4048b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7.375624242424243"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# variância\n",
"c.var()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}