Crear el fichero CSV con registros empresariales (hay una columna de fraude)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import pandas as pd import numpy as np # Seed for reproducibility np.random.seed(42) # Number of records num_records = 100 # Generate sample data data = { 'transaction_id': np.arange(1, num_records + 1), 'company_name': [f'Empresa_{i}' for i in np.random.randint(1, 20, num_records)], 'transaction_amount': np.round(np.random.uniform(50, 5000, num_records), 2), 'transaction_date': pd.to_datetime('2023-01-01') + pd.to_timedelta(np.random.randint(0, 365, num_records), unit='D'), 'employee_id': np.random.randint(1000, 1050, num_records), 'department': np.random.choice(['Ventas', 'Marketing', 'Finanzas', 'RRHH', 'IT'], num_records) } df = pd.DataFrame(data) # Introduce some fraudulent transactions (e.g., higher amounts, specific employee/company combos) # Let's say 10% of transactions are fraudulent fraud_indices = np.random.choice(df.index, size=int(num_records * 0.1), replace=False) df['is_fraud'] = 0 df.loc[fraud_indices, 'is_fraud'] = 1 # Make some fraudulent transactions have unusually high amounts df.loc[df['is_fraud'] == 1, 'transaction_amount'] = np.round(np.random.uniform(7000, 20000, df['is_fraud'].sum()), 2) # Save the DataFrame to a CSV file csv_file_path = 'registros_empresa.csv' df.to_csv(csv_file_path, index=False) print(f"CSV file '{csv_file_path}' created successfully with {num_records} records.") print(f"Number of fraudulent records: {df['is_fraud'].sum()}") |
Cargar el fichero CSV con Pandas
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import pandas as pd # Load the CSV file into a pandas DataFrame csv_file_path = 'registros_empresa.csv' df_loaded = pd.read_csv(csv_file_path) # Display the first 5 rows to verify print("Primeras 5 filas del DataFrame cargado:") display(df_loaded.head()) # Display basic information print("\nInformación del DataFrame cargado:") display(df_loaded.info()) |
Detectar valores que tienen 1 en columna de fraude
|
1 2 3 4 5 6 7 |
# Filtrar el DataFrame para mostrar solo las transacciones fraudulentas fraudulent_transactions = df_loaded[df_loaded['is_fraud'] == 1] print("Transacciones fraudulentas:\n") display(fraudulent_transactions) print(f"\nNúmero total de transacciones fraudulentas: {len(fraudulent_transactions)}") |

