[Python] How do I rewrite my Python script to avoid AI detection? [closed]

Discussão em 'Python' iniciado por Stack, Maio 27, 2025.

  1. Stack

    Stack Membro Participativo

    My Python script is flagging as AI-generated in a ChatGPT detector. I want to avoid that. Could someone tweak my Python script to make it seem more human-written and less AI-detectable?

    import os
    import sys
    import pandas as pd
    import numpy as np


    def load_population_csv(csv_file_path):
    """
    Load and tidy a CSV of prefecture populations by year.
    """
    raw_df = pd.read_csv(csv_file_path)
    raw_df.rename(columns={'Prefecture': 'prefecture_name'}, inplace=True)

    records = []
    for _, row in raw_df.iterrows():
    prefecture = row.prefecture_name
    for column in raw_df.columns:
    if column == 'prefecture_name':
    continue
    census_year = int(column)
    raw_value = row[column]
    records.append({
    'prefecture_name': prefecture,
    'year': census_year,
    'population_raw': raw_value
    })

    expanded_df = pd.DataFrame(records)

    cleaned_populations = []
    for raw_val in expanded_df['population_raw']:
    text = str(raw_val).replace(',', '').strip()
    if text == '–' or not text.isdigit():
    cleaned_populations.append(np.nan)
    else:
    # original data is in thousands
    cleaned_populations.append(int(text) * 1000)

    expanded_df['population'] = cleaned_populations
    expanded_df.dropna(subset=['population'], inplace=True)
    expanded_df['population'] = expanded_df['population'].astype(int)

    return expanded_df[['prefecture_name', 'year', 'population']]


    if __name__ == '__main__':
    # Determine data directory
    data_dir = os.getenv('PG_DATA_DIR', r'C:\pg_data')
    if not os.path.isdir(data_dir):
    print('Data directory missing:', data_dir)
    sys.exit(1)

    # Load historical population data
    historical_population_df = load_population_csv(
    os.path.join(data_dir, 'prefecture_population_1920_2020.csv')
    )

    # Load mortality and migration data
    mortality_df = pd.read_csv(os.path.join(data_dir, 'Mortality.csv'))
    migration_df = pd.read_csv(os.path.join(data_dir, 'Migration.csv'))
    mortality_df.rename(columns={'Prefecture': 'prefecture_name'}, inplace=True)
    migration_df.rename(columns={'Prefecture': 'prefecture_name'}, inplace=True)

    # Identify the most recent year in both datasets
    latest_mortality_year = max(int(col) for col in mortality_df.columns if col.isdigit())
    latest_migration_year = max(int(col) for col in migration_df.columns if col.isdigit())
    if latest_mortality_year != latest_migration_year:
    print(f'Years differ: mortality {latest_mortality_year}, migration {latest_migration_year}')
    sys.exit(1)
    forecast_start_year = latest_mortality_year

    # Create lookup dicts for rates
    mortality_rate = mortality_df.set_index('prefecture_name')[str(forecast_start_year)].to_dict()
    migration_rate = migration_df.set_index('prefecture_name')[str(forecast_start_year)].to_dict()

    # Prepare base populations for forecasting
    last_hist_year = historical_population_df['year'].max()
    future_years = range(last_hist_year + 1, 2041)
    base_population = (
    historical_population_df
    .query('year == @last_hist_year')
    .set_index('prefecture_name')['population']
    .to_dict()
    )

    # Forecast future populations
    forecast_records = []
    for prefecture, initial_pop in base_population.items():
    projected_pop = initial_pop
    for year in future_years:
    annual_rate = (mortality_rate.get(prefecture, 0) + migration_rate.get(prefecture, 0)) / 1000.0
    projected_pop = int(projected_pop * (1 + annual_rate))
    forecast_records.append({
    'prefecture_name': prefecture,
    'year': year,
    'population': projected_pop
    })

    forecast_df = pd.DataFrame(forecast_records)

    # Combine historical and forecast data with clear columns
    hist_df = historical_population_df.rename(columns={'population': 'historical_population'})
    hist_df = hist_df[['prefecture_name', 'year', 'historical_population']].assign(population=np.nan)
    fore_df = forecast_df[['prefecture_name', 'year', 'population']].assign(historical_population=np.nan)
    merged_df = pd.concat([hist_df, fore_df], ignore_index=True)

    # Fill final population: historical where available, else forecast
    merged_df['population'] = merged_df['historical_population'].combine_first(merged_df['population']).astype(int)

    # Extract forecasts for 2021 onward and save
    output_df = merged_df.query('year >= 2021')[['prefecture_name', 'year', 'population']]
    output_file = os.path.join(data_dir, 'testing_prefecture_forecasts_2021_2040_counts.csv')
    output_df.to_csv(output_file, index=False)
    print('Done. Saved forecasts to', output_file)

    # Print total population per year
    total_by_year = output_df.groupby('year')['population'].sum()
    print('\nTotals:')
    for year, total in total_by_year.items():
    print(f'{year}: {total:,}')

    Continue reading...

Compartilhe esta Página