Files
satshkd-vercel/docs/dedup.md
Claude beac172ee3 Remove all HKD/satshkd support, add all EU languages
- Removed all references to HKD and satshkd from codebase
- Updated README, package.json, documentation to focus on EUR/sats
- Removed HKD-specific files (convert_btcticker.js, archive/hkd_historical)
- Updated all titles from SatsHKD/HKDSAT to SatsEUR/EURSAT
- Removed HKD image reference from sats.hbs
- Updated Python scripts to use 'historical' instead of 'hkd_historical'
- Added all 16 missing EU official languages with translations:
  * Bulgarian (bg), Croatian (hr), Czech (cs), Danish (da)
  * Estonian (et), Finnish (fi), Greek (el), Hungarian (hu)
  * Irish (ga), Latvian (lv), Lithuanian (lt), Maltese (mt)
  * Romanian (ro), Slovak (sk), Slovenian (sl), Swedish (sv)
- Now supports all 24 EU official languages
2025-11-09 10:35:13 +00:00

4.0 KiB

# Import the pandas and json libraries
import pandas as pd
import json

# Define a function that reads in data from a JSON file, converts it to a DataFrame, removes duplicates, and saves the deduplicated data to a new file
def get_data_from_file(datafile):
    # Open the specified JSON file and load its contents into a Python object
    with open(datafile, 'r') as f:
        data = json.load(f)
    # Convert the Python object to a pandas DataFrame
    df = pd.DataFrame(data)

    # Check for duplicate rows in the DataFrame
    duplicates = df.duplicated(keep="first")
    
    # Remove the duplicate rows from the DataFrame
    dedup_df = df[~duplicates]
    
    # Print the original and deduplicated DataFrame sizes
    print("Original DataFrame contains {} rows".format(len(df)))
    print("Deduplicated DataFrame contains {} rows".format(len(dedup_df)))
    
    # Identify the dates that were duplicated and removed
    duplicated_dates = df[duplicates]['date'].unique()
    print("Dates that were duplicated and removed:")
    print(duplicated_dates)
    
    # Save the deduplicated data to a new JSON file
    dedup_file = "historical_dedup"
    dedup_df.to_json(dedup_file, orient="records")

# If this script is run directly, call the get_data_from_file function with the specified file name
if __name__ == "__main__":
    datafile = "historical"
    get_data_from_file(datafile)

This code imports the pandas and json libraries, defines a function get_data_from_file that reads in data from a JSON file, removes any duplicate rows, and saves the deduplicated data to a new file. The function is then called on the file "historical" when the script is run.

The import pandas as pd statement imports the pandas library and assigns it the alias pd.

The import json statement imports the json library.

The def get_data_from_file(datafile): line defines a function that takes a single argument, datafile.

The with open(datafile, 'r') as f: statement opens the specified JSON file in read mode and assigns the resulting file object to the variable f. The with statement ensures that the file is properly closed when the block is exited.

The data = json.load(f) statement loads the contents of the JSON file into a Python object and assigns it to the variable data.

The df = pd.DataFrame(data) statement converts the Python object to a pandas DataFrame and assigns it to the variable df.

The duplicates = df.duplicated(keep="first") statement checks for duplicate rows in the DataFrame and assigns a boolean Series indicating whether each row is a duplicate to the variable duplicates.

The dedup_df = df[~duplicates] statement selects only the rows in the DataFrame that are not duplicates and assigns the resulting DataFrame to the variable dedup_df.

The print("Original DataFrame contains {} rows".format(len(df))) and print("Deduplicated DataFrame contains {} rows".format(len(dedup_df))) statements print the sizes of the original and deduplicated DataFrames, respectively.

The duplicated_dates = df[duplicates]['date'].unique() statement selects the dates that were duplicated and removes any duplicates from the resulting array, then assigns the resulting array to the variable duplicated_dates.

The print("Dates that were duplicated and removed:") and `print(d

The print("Dates that were duplicated and removed:") and print(duplicated_dates) statements print the dates that were duplicated and removed from the original DataFrame.

The dedup_file = "historical_dedup" statement assigns the string "historical_dedup" to the variable dedup_file.

The dedup_df.to_json(dedup_file, orient="records") statement saves the deduplicated data to a new JSON file with the name specified in dedup_file, using the "records" orientation.

The if name == "main": statement checks whether the script is being run directly (as opposed to being imported as a module).

The datafile = "historical" statement assigns the string "historical" to the variable datafile. The get_data_from_file(datafile) statement calls the get_data_from_file function with datafile as its argument.