{ "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
modelomassa (kg)C (km/litro)
0Focus119811.90
1Crown Victoria17156.80
2Expedition25305.53
3Explorer20146.38
4F-15021365.53
5Fusion14928.50
6Taurus16527.65
7Fit116813.60
8Accord14929.78
9CR-V16028.93
10Civic119211.90
11Ridgeline20456.38
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
modeloMC
0Focus119811.90
1Crown Victoria17156.80
2Expedition25305.53
3Explorer20146.38
4F-15021365.53
5Fusion14928.50
6Taurus16527.65
7Fit116813.60
8Accord14929.78
9CR-V16028.93
10Civic119211.90
11Ridgeline20456.38
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
modeloMC
0Focus119811.90
1Crown Victoria17156.80
2Expedition25305.53
3Explorer20146.38
4F-15021365.53
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
modeloMC
0Focus119811.90
2Expedition25305.53
4F-15021365.53
6Taurus16527.65
8Accord14929.78
10Civic119211.90
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
MC
320146.38
421365.53
514928.50
616527.65
7116813.60
814929.78
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
modeloMCM/CC/M
0Focus119811.90100.6722690.009933
1Crown Victoria17156.80252.2058820.003965
2Expedition25305.53457.5045210.002186
3Explorer20146.38315.6739810.003168
4F-15021365.53386.2567810.002589
5Fusion14928.50175.5294120.005697
6Taurus16527.65215.9477120.004631
7Fit116813.6085.8823530.011644
8Accord14929.78152.5562370.006555
9CR-V16028.93179.3952970.005574
10Civic119211.90100.1680670.009983
11Ridgeline20456.38320.5329150.003120
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
modeloMCM/CC/M
0Focus119811.90100.6722690.009933
1Crown Victoria17156.80252.2058820.003965
2Expedition25305.53457.5045210.002186
3Explorer20146.38315.6739810.003168
4F-15021365.53386.2567810.002589
5Fusion14928.50175.5294120.005697
6Taurus16527.65215.9477120.004631
7Fit116813.6085.8823530.011644
8Accord14929.78152.5562370.006555
9CR-V16028.93179.3952970.005574
10Civic119211.90100.1680670.009983
11Ridgeline20456.38320.5329150.003120
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
modeloMCM/CC/M
0Focus119811.90100.6722690.009933
1Crown Victoria17156.80252.2058820.003965
2Expedition25305.53457.5045210.002186
3Explorer20146.38315.6739810.003168
4F-15021365.53386.2567810.002589
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
modeloMCM/CC/M
7Fit116813.6085.8823530.011644
8Accord14929.78152.5562370.006555
9CR-V16028.93179.3952970.005574
10Civic119211.90100.1680670.009983
11Ridgeline20456.38320.5329150.003120
\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 }