import%20marimo%0A%0A__generated_with%20%3D%20%220.9.3%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%20Mais%20I%2FO%3A%20Arquivos%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__()%3A%0A%20%20%20%20def%20fibonacci_seq(n)%3A%0A%20%20%20%20%20%20%20%20fibo%20%3D%20%5B0%2C%201%5D%0A%20%20%20%20%20%20%20%20for%20_%20in%20range(n)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20fibo.append(fibo%5B-1%5D%20%2B%20fibo%5B-2%5D)%0A%20%20%20%20%20%20%20%20return%20fibo%0A%0A%20%20%20%20fibos%20%3D%20fibonacci_seq(15)%0A%20%20%20%20return%20fibonacci_seq%2C%20fibos%0A%0A%0A%40app.cell%0Adef%20__(fibos)%3A%0A%20%20%20%20f1%20%3D%20open('fibo.txt'%2C%20mode%3D'w'%2C%20encoding%3D%22utf-8%22)%0A%20%20%20%20f1.write(%22%5Cn%22.join(map(str%2C%20fibos)))%0A%20%20%20%20f1.close()%0A%20%20%20%20return%20(f1%2C)%0A%0A%0A%40app.cell%0Adef%20__(fibos)%3A%0A%20%20%20%20with%20open('fibo2.txt'%2C%20mode%3D'w'%2C%20encoding%3D%22utf-8%22)%20as%20f2%3A%0A%20%20%20%20%20%20%20%20f2.write(%22%5Cn%22.join(map(str%2C%20fibos)))%0A%20%20%20%20return%20(f2%2C)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20with%20open('presentations%2F06-arquivos.py'%2C%20mode%3D'r'%2C%20encoding%3D'utf-8')%20as%20f3%3A%0A%20%20%20%20%20%20%20%20for%20_%20in%20range(10)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20print(f3.readline())%0A%20%20%20%20return%20(f3%2C)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20with%20open('notes%2Findex.org'%2C%20mode%3D'r'%2C%20encoding%3D'utf-8')%20as%20f4%3A%0A%20%20%20%20%20%20%20%20print(f4.read())%0A%20%20%20%20return%20(f4%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%20Lendo%20arquivos%20CSV%0A%0A%20%20%20%20%20%20%20%20Ver%20%5Bdocumenta%C3%A7%C3%A3o%5D(https%3A%2F%2Fdocs.python.org%2F3%2Flibrary%2Fcsv.html).%0A%0A%20%20%20%20%20%20%20%20Arquivo%20de%20exemplo%20dispon%C3%ADvel%20neste%20%5Blink%5D(https%3A%2F%2Fwww.inf.puc-rio.br%2F~bclaro%2Fdata%2FFP-20241001223031655.csv).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20csv%0A%20%20%20%20return%20(csv%2C)%0A%0A%0A%40app.cell%0Adef%20__(csv)%3A%0A%20%20%20%20raw_table%20%3D%20%5B%5D%0A%20%20%20%20with%20open('FP-20241001223031655.csv'%2C%20mode%3D'r'%2C%20newline%3D'')%20as%20csvfile%3A%0A%20%20%20%20%20%20%20%20reader%20%3D%20csv.reader(csvfile%2C%20delimiter%3D'%3B')%0A%20%20%20%20%20%20%20%20for%20row%20in%20reader%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20raw_table.append(row)%0A%20%20%20%20raw_table%5B%3A4%5D%0A%20%20%20%20return%20csvfile%2C%20raw_table%2C%20reader%2C%20row%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%23%23%20Convertendo%20strings%20para%20n%C3%BAmeros%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__()%3A%0A%20%20%20%20%23%20%0A%20%20%20%20float('6%2C15'.replace('%2C'%2C%20'.'))%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Convertendo%20datas%0A%0A%20%20%20%20%20%20%20%20Ver%20c%C3%B3digos%20na%20%5Bdocumenta%C3%A7%C3%A3o%5D(https%3A%2F%2Fdocs.python.org%2F3%2Flibrary%2Fdatetime.html%23format-codes).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20from%20datetime%20import%20datetime%0A%20%20%20%20return%20(datetime%2C)%0A%0A%0A%40app.cell%0Adef%20__(datetime)%3A%0A%20%20%20%20mydate%20%3D%20datetime.strptime('18%2F10%2F2021'%2C%20'%25d%2F%25m%2F%25Y')%0A%20%20%20%20mydate.weekday()%2C%20mydate.year%0A%20%20%20%20return%20(mydate%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%20Exerc%C3%ADcios%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20tabela%0A%0A%20%20%20%20%20%20%20%20Para%20os%20pr%C3%B3ximos%20exerc%C3%ADcios%2C%20vamos%20definir%20um%20novo%20tipo%20para%20tabelas%3A%20uma%20tupla%20cujo%20primeiro%20elemento%20%C3%A9%20o%20cabe%C3%A7alho%20(uma%20lista%20de%20strings%20representando%20o%20nome%20das%20colunas%20%E2%80%94%20os%20atributos%20%E2%80%94%20da%20tabela)%20e%20o%20segundo%20elemento%20%C3%A9%20uma%20lista%20de%20listas%20(as%20linhas%20com%20os%20valores%20de%20cada%20*datum*).%20Vamos%20assumir%20que%20todas%20as%20linhas%20tem%20o%20mesmo%20n%C3%BAmero%20de%20atributos%2C%20que%20%C3%A9%20igual%20ao%20n%C3%BAmero%20de%20colunas%20da%20tabela%20(que%20%C3%A9%20igual%20ao%20n%C3%BAmero%20de%20elementos%20do%20cabe%C3%A7alho).%0A%0A%20%20%20%20%20%20%20%20Escreva%20a%20fun%C3%A7%C3%A3o%20%60read_table%60%20que%20l%C3%AA%20um%20arquivo%20CSV%20e%20retorna%20uma%20tabela%20como%20a%20descrita%20acima.%20A%20fun%C3%A7%C3%A3o%20deve%20receber%20um%20%C3%BAnico%20argumento%20obrigat%C3%B3rio%2C%20o%20caminho%20do%20arquivo%20a%20ser%20lido%20(string).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20proje%C3%A7%C3%A3o%0A%0A%20%20%20%20%20%20%20%20Escreva%20uma%20fun%C3%A7%C3%A3o%20que%20recebe%20uma%20tabela%20e%20uma%20lista%20de%20atributos%2C%20e%20retorna%20uma%20nova%20tabela%20com%20apenas%20aqueles%20atributos.%20Se%20um%20atributo%20especificado%20n%C3%A3o%20est%C3%A1%20presente%20na%20tabela%2C%20ele%20deve%20ser%20ignorado.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Exemplo%3A%0A%0A%20%20%20%20%20%20%20%20%7C%20Name%20%20%20%20%7C%20Like%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C---------%7C----------%7C%0A%20%20%20%20%20%20%20%20%7C%20Maria%20%20%20%7C%20Stars%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Patrik%20%20%7C%20Climbing%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Patrik%20%20%7C%20Code%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Darwin%20%20%7C%20Apples%20%20%20%7C%0A%0A%20%20%20%20%20%20%20%20%60project(T%2C%20%5B'Name'%5D)%60%20%24%5Cequiv%24%0A%0A%20%20%20%20%20%20%20%20%7C%20Name%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C---------%7C%0A%20%20%20%20%20%20%20%20%7C%20Maria%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Patrik%20%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Patrik%20%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Darwin%20%20%7C%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20Renomear%0A%0A%20%20%20%20%20%20%20%20Escreva%20uma%20fun%C3%A7%C3%A3o%20que%20recebe%20os%20seguintes%20argumentos%3A%0A%0A%20%20%20%20%20%20%20%20-%20uma%20tabela%3B%0A%20%20%20%20%20%20%20%20-%20um%20nome%20de%20atributo%20(string)%3B%0A%20%20%20%20%20%20%20%20-%20outro%20nome%20de%20atributo%20(string).%0A%0A%20%20%20%20%20%20%20%20A%20fun%C3%A7%C3%A3o%20deve%20retornar%20a%20tabela%20com%20com%20o%20primeiro%20atributo%20renomeado%20para%20o%20segundo.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Exemplo%3A%0A%0A%20%20%20%20%20%20%20%20%7C%20Name%20%20%20%20%7C%20Like%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C---------%7C----------%7C%0A%20%20%20%20%20%20%20%20%7C%20Maria%20%20%20%7C%20Stars%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Patrik%20%20%7C%20Climbing%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Patrik%20%20%7C%20Code%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Darwin%20%20%7C%20Apples%20%20%20%7C%0A%0A%20%20%20%20%20%20%20%20%60rename(T%2C%20'Name'%2C%20'First%20Name')%60%20%24%5Cequiv%24%0A%0A%20%20%20%20%20%20%20%20%7C%20Name%20%20%20%20%7C%20Like%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C---------%7C----------%7C%0A%20%20%20%20%20%20%20%20%7C%20Maria%20%20%20%7C%20Stars%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Patrik%20%20%7C%20Climbing%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Patrik%20%20%7C%20Code%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Darwin%20%20%7C%20Apples%20%20%20%7C%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20select%20equal%0A%0A%20%20%20%20%20%20%20%20Escreva%20uma%20fun%C3%A7%C3%A3o%20que%20recebe%20os%20seguintes%20argumentos%3A%0A%0A%20%20%20%20%20%20%20%20-%20uma%20tabela%3B%0A%20%20%20%20%20%20%20%20-%20um%20nome%20de%20atributo%20(string)%3B%0A%20%20%20%20%20%20%20%20-%20um%20valor%20qualquer.%0A%0A%20%20%20%20%20%20%20%20A%20fun%C3%A7%C3%A3o%20deve%20retornar%20uma%20nova%20tabela%20com%20o%20mesmo%20cabe%C3%A7alho%20da%20tabela%20argumento%2C%20por%C3%A9m%20cujas%20linhas%20s%C3%A3o%20apenas%20aquelas%20da%20tabela%20original%20cujo%20atributo%20especificado%20no%20argumento%20%C3%A9%20igual%20ao%20valor%20desejado.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Exemplo%3A%0A%0A%20%20%20%20%20%20%20%20%7C%20Name%20%20%20%20%7C%20Like%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C---------%7C----------%7C%0A%20%20%20%20%20%20%20%20%7C%20Maria%20%20%20%7C%20Stars%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Patrik%20%20%7C%20Climbing%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Patrik%20%20%7C%20Code%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C%20Darwin%20%20%7C%20Apples%20%20%20%7C%0A%0A%20%20%20%20%20%20%20%20%60select_equal(T%2C%20'Name'%2C%20'Maria')%60%20%24%5Cequiv%24%0A%0A%20%20%20%20%20%20%20%20%7C%20Name%20%20%20%20%7C%20Like%20%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%7C---------%7C----------%7C%0A%20%20%20%20%20%20%20%20%7C%20Maria%20%20%20%7C%20Stars%20%20%20%20%7C%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20inner%20join%20simples%0A%0A%20%20%20%20%20%20%20%20Escreva%20uma%20fun%C3%A7%C3%A3o%20chamada%20%60join%60%20com%20os%20seguintes%20argumentos%3A%0A%0A%20%20%20%20%20%20%20%20-%20uma%20tabela%3B%0A%20%20%20%20%20%20%20%20-%20uma%20outra%20tabela%3B%0A%20%20%20%20%20%20%20%20-%20um%20nome%20de%20atributo.%0A%0A%20%20%20%20%20%20%20%20O%20resultado%20da%20fun%C3%A7%C3%A3o%20deve%20ser%20uma%20nova%20tabela%20cujos%20atributos%20s%C3%A3o%20a%20uni%C3%A3o%20dos%20atributos%20das%20duas%20tabelas%2C%20e%20as%20linhas%20s%C3%A3o%20formadas%20pela%20jun%C3%A7%C3%A3o%20das%20linhas%20das%20duas%20tabelas%20que%20t%C3%AAm%20o%20mesmo%20valor%20para%20o%20atributo%20especificado.%20Voc%C3%AA%20deve%20assumir%20que%20esse%20atributo%20cont%C3%A9m%20apenas%20valores%20%C3%BAnicos%20em%20cada%20tabela.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Exemplo%3A%0A%0A%20%20%20%20%20%20%20%20!%5B%5D(https%3A%2F%2Fwww.inf.puc-rio.br%2F~bclaro%2Fcourses%2Fpython-intro%2Fstatic%2Fsql-inner-join.png)%0A%0A%20%20%20%20%20%20%20%20Fonte%3A%20https%3A%2F%2Fwww.atlassian.com%2Fdata%2Fsql%2Fsql-join-types-explained-visually%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20tabela%20com%20tipos%20al%C3%A9m%20de%20strings%0A%0A%20%20%20%20%20%20%20%20Modifique%20a%20fun%C3%A7%C3%A3o%20%60read_table%60%20para%20que%20ela%20receba%20um%20novo%20argumento%20opcional%20%60converters%60.%20Esse%20argumento%20deve%20ser%20um%20dicion%C3%A1rio%20cujas%20chaves%20s%C3%A3o%20atributos%20da%20tabela%2C%20e%20os%20argumentos%20s%C3%A3o%20fun%C3%A7%C3%B5es%20que%20recebem%20strings%20e%20retornam%20um%20valor%20qualquer.%20Ao%20ler%20uma%20nova%20tabela%2C%20as%20strings%20correspondentes%20a%20valores%20dos%20atributos%20presentes%20em%20%60converters%60%20devem%20ser%20convertidas%20para%20novos%20valores%20usando%20a%20fun%C3%A7%C3%A3o%20correspondente%20do%20dicion%C3%A1rio.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%20Lendo%20arquivos%20JSON%0A%0A%20%20%20%20%20%20%20%20Ver%20a%20%5Bdescri%C3%A7%C3%A3o%20oficial%5D(https%3A%2F%2Fwww.json.org%2Fjson-en.html)%20do%20formato%20e%20a%20%5Bdocumenta%C3%A7%C3%A3o%5D(https%3A%2F%2Fdocs.python.org%2F3%2Flibrary%2Fjson.html)%20do%20m%C3%B3dulo%20Python.%0A%0A%20%20%20%20%20%20%20%20Arquivo%20de%20exemplo%20dispon%C3%ADvel%20neste%20%5Blink%5D(https%3A%2F%2Fwww.inf.puc-rio.br%2F~bclaro%2Fdata%2Fyelp_review_test.json.zip).%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20json%0A%20%20%20%20return%20(json%2C)%0A%0A%0A%40app.cell%0Adef%20__(json)%3A%0A%20%20%20%20with%20open('yelp_review_test.json'%2C%20mode%3D'r')%20as%20jsonfile%3A%0A%20%20%20%20%20%20%20%20reviews%20%3D%20json.load(jsonfile)%0A%20%20%20%20return%20jsonfile%2C%20reviews%0A%0A%0A%40app.cell%0Adef%20__(reviews)%3A%0A%20%20%20%20reviews%5B%3A3%5D%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22Tamb%C3%A9m%20podemos%20transformar%20objetos%20Python%20em%20strings%20JSON%3A%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(json)%3A%0A%20%20%20%20json.dumps('Hello')%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(json)%3A%0A%20%20%20%20json.dumps(110)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(json)%3A%0A%20%20%20%20json.dumps(%5B(1%2C%201)%2C%202%5D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(json)%3A%0A%20%20%20%20json.dumps(%7B'hello'%3A%20'there'%7D)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(json)%3A%0A%20%20%20%20%23%20Aten%C3%A7%C3%A3o%3A%0A%20%20%20%20type(json.dumps(1))%20%3D%3D%20str%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%20Exerc%C3%ADcios%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20leitura%20dados%0A%0A%20%20%20%20%20%20%20%20Baixe%20o%20arquivo%20CSV%20dispon%C3%ADvel%20%5Baqui%5D(https%3A%2F%2Fwww.inf.puc-rio.br%2F~bclaro%2Fdata%2Fus-school-census.csv)%20que%20cont%C3%A9m%20uma%20amostra%20dos%20dados%20de%20um%20censo%20escolar%20dos%20EUA.%20%0A%0A%20%20%20%20%20%20%20%20Use%20a%20fun%C3%A7%C3%A3o%20%60read_table%60%20para%20l%C3%AA-lo%20para%20uma%20tabela.%20Talvez%20voc%C3%AA%20precise%20de%20adicionar%20um%20argumento%20opcional%20que%20especifique%20o%20delimitador%20a%20ser%20usado.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%23%20Ex.%20consulta%20dados%0A%0A%20%20%20%20%20%20%20%20Use%20as%20fun%C3%A7%C3%B5es%20que%20escrevemos%20nos%20exerc%C3%ADcios%20anteriores%20para%20criar%20uma%20tabela%20com%20os%20atributos%20%60Altura%2C%20L%C3%ADnguas%20faladas%60%20das%20mulheres%20de%2018%20anos%20de%20idade%20presentes%20na%20base%20de%20dados%20do%20censo%20escolar%20americano.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20Ex.%20agrupa%20dados%0A%0A%20%20%20%20%20%20%20%20Usando%20a%20tabela%20constru%C3%ADda%2C%20determine%20o%20n%C3%BAmero%20de%20linguagens%20diferentes%20faladas%20pelas%20jovens%20de%2018%20anos%20segundo%20a%20tabela%20constru%C3%ADda%20anteriormente.%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
efec7b9a0621262528ff955528a6fbb4707bd59051a73fb9b53ad4658bba1873