Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Atividade Semana 11 #17

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions exercicios/para-casa/Atividade_ETL_pandas.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import pandas as pd

# Carregar o DataFrame
df = pd.read_csv("C:/Users/flavi_000/OneDrive/Flavienne/Cursos/Reprograma/S11 - 10.08/on33-python-s09-pandas-numpy-I/material/mais_ouvidas_2024.csv")

# Verificar os tipos de dados
print(df.dtypes)

# Converter colunas numéricas e datas
numeric_cols = df.select_dtypes(include=['object']).columns
for col in numeric_cols:
df[col] = pd.to_numeric(df[col].str.replace(',', ''), errors='coerce')

df['Data de lançamento'] = pd.to_datetime(df['Data de lançamento'], errors='coerce')

# Criar novas colunas
df['Popularidade do Streaming'] = df[['Popularidade do Spotify', 'Visualizações do YouTube', 'Curtidas do TikTok', 'Contagens do Shazam']].mean(axis=1)
df['Total de Transmissões'] = df[['Transmissões do Spotify', 'Visualizações do YouTube', 'Visualizações do TikTok', 'Transmissões do Pandora', 'Transmissões do Soundcloud']].sum(axis=1)

# Filtrar e salvar os dados
filtered_df = df[(df['Popularidade do Spotify'] > 80) & (df['Total de Transmissões'] > 1000000)]
filtered_df.to_json("./filtered_list.json", orient='records', index=False)
filtered_df.to_csv("./filtered_list.csv", index=False)

# Carregar os dados salvos e verificar
df_json = pd.read_json("./filtered_list.json")
print(df_json.head())
print(df_json.dtypes)

df_csv = pd.read_csv("./filtered_list.csv")
print(df_csv.head())
print(df_csv.dtypes)
28 changes: 28 additions & 0 deletions exercicios/para-sala/ETL_pandas.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import pandas as pd #nickname de pd, para não ter que digitar o nome Pandas ao longo do código.
#['TransactionID', 'Date', 'MobileModel', 'Brand', 'Price', 'UnitsSold','TotalRevenue', 'CustomerAge', 'CustomerGender', 'Location','PaymentMethod']
df = pd.read_csv(r"C:\Users\flavi_000\OneDrive\Flavienne\Cursos\Reprograma\S11 - 10.08\on33-python-s09-pandas-numpy-I\exercicios\para-sala\ETL_pandas.py")
print(df.head()) # head seleciona o número de linhas, padrão são 5, caso queira visualizar outros n=x
print(df.columns) #expõem as colunas do dataframe no terminal
df_valores_nulos = df.isnull() #permite identificar quais células contêm dados faltantes, vazios, nulos.
print(df_valores_nulos.sum())
print(df.duplicated().sum()) #conta o número de linhas duplicadas em um DataFrame Pandas.
print(df.dtypes) #entender seus dados em Pandas. Ele fornece uma visão rápida dos tipos de dados presentes em cada coluna do seu DataFrame
# objest neste caso é string, float, inteiro; ele aplica nas informações das colunas, o cabeçalho é só um direcionamento p a análise.
#o número na float que pode aparecer no int é o intervalo que cabe pontos
df["Date"] = pd.to_datetime(df["Date"], format="mixed") #terá seu valor(formato) substiuito pelo pandas na nomenclatura

print(df["Date"]) # serve para exibir a coluna especificada por "Date" dentro de um DataFrame chamado
#pode trocar o mixed para:"%Y//%m/%d"

df["Total Sales Value"] = df["Price"] * df["UnitsSold"]
print(df.columns)

#- Crie uma coluna 'Profit Margin', assumindo que o custo de fabricação é 70% do preço ('Price'), a margem de lucro pode ser calculada como (Price * 0.30) * UnitsSold.
df ["Profit Margin"] = (df["Price"] * 0.30) * df['UnitsSold']
print(df.columns)
print(df["Profit Margin"])

filtered_df = df[(df["Total Sales Value"]>100_000) & (df["Profit Margin"] >20_000)]
print(filtered_df.head())

filtered_df.to_csv("./filtered_list.csv", index=False) #salvar em um arquivo csv, o pandas