diff --git a/exercicios/para-casa/Atividade_ETL_pandas.py b/exercicios/para-casa/Atividade_ETL_pandas.py new file mode 100644 index 0000000..930df8c --- /dev/null +++ b/exercicios/para-casa/Atividade_ETL_pandas.py @@ -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) \ No newline at end of file diff --git a/exercicios/para-sala/ETL_pandas.py b/exercicios/para-sala/ETL_pandas.py index e69de29..ce2da7d 100644 --- a/exercicios/para-sala/ETL_pandas.py +++ b/exercicios/para-sala/ETL_pandas.py @@ -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 \ No newline at end of file