{"id":31559642,"url":"https://github.com/garcane/exodus_analysis","last_synced_at":"2026-04-27T16:32:04.487Z","repository":{"id":308434105,"uuid":"860827213","full_name":"garcane/exodus_analysis","owner":"garcane","description":"This project analyses cryptocurrency transaction data exported from the Exodus wallet. The goal is to explore and visualize the inflows and outflows of assets, the types of transactions, and other key metrics over time.","archived":false,"fork":false,"pushed_at":"2024-09-26T20:10:12.000Z","size":723,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-05T01:55:59.800Z","etag":null,"topics":["bitcoin","btc","crypto","cryptocurrencies","cryptocurrency","data-analysis","data-visualization","eth","ethereum","pandas","seaborn"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/garcane.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-21T09:18:12.000Z","updated_at":"2024-09-26T20:10:16.000Z","dependencies_parsed_at":"2025-08-05T23:31:11.121Z","dependency_job_id":"e1996470-1b11-4662-a0d9-1af04b2cc4ae","html_url":"https://github.com/garcane/exodus_analysis","commit_stats":null,"previous_names":["garcane/exodus_analysis"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/garcane/exodus_analysis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garcane%2Fexodus_analysis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garcane%2Fexodus_analysis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garcane%2Fexodus_analysis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garcane%2Fexodus_analysis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/garcane","download_url":"https://codeload.github.com/garcane/exodus_analysis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garcane%2Fexodus_analysis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32345802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitcoin","btc","crypto","cryptocurrencies","cryptocurrency","data-analysis","data-visualization","eth","ethereum","pandas","seaborn"],"created_at":"2025-10-05T01:55:09.399Z","updated_at":"2026-04-27T16:32:04.469Z","avatar_url":"https://github.com/garcane.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Exodus Wallet Transaction Data Analysis\n\nThis project analyses cryptocurrency transaction data exported from the Exodus wallet. The goal is to explore and visualise the inflows and outflows of assets, the types of transactions, and other key metrics over time.\n\n## Project Structure\n\n- `main.ipynb`: The Jupyter Notebook containing all data analysis and visualisation code.\n- `exodus_0-all-txs-2024-09-20_21-17-11.csv`: CSV file containing the transaction history exported from the Exodus wallet (Not included for the analysis).\n- `exodus_synthetic_data.py`: A Python script for generating synthetic cryptocurrency transaction data for analysis.\n- `README.md`: This file, containing an overview of the project.\n\n## Data Preparation\n\n### Data Extraction\nThe transaction history is exported from the Exodus wallet as a CSV file. The data contains columns such as:\n\n- `DATE`: Timestamp of the transaction.\n- `TYPE`: Type of transaction (e.g., deposit, withdrawal).\n- `FROMPORTFOLIO`: Source of the transaction (e.g., internal or external portfolio).\n- `TOPORTFOLIO`: Destination of the transaction.\n- `OUTAMOUNT`, `INAMOUNT`: The amount of cryptocurrency involved in the transaction.\n- `OUTCURRENCY`, `INCURRENCY`: The type of cryptocurrency used in the transaction.\n- Other fields such as transaction IDs, addresses, and fees.\n\n### Data Cleaning \u0026 Preprocessing\n\nThe data cleaning steps involved:\n\n- Converting missing values (`NaN`) to `0`, `\"None\"`, or `Null`, depending on the context.\n- Converting the `DATE` column to a `datetime` format for easy time-based analysis.\n- Dropping unnecessary columns such as `TOADDRESS` and `FROMADDRESS` if they were deemed irrelevant for the analysis.\n\n## Synthetic Data Generation\n\nThe project includes a script to generate synthetic cryptocurrency transaction data for testing purposes.\n\n### `exodus_synthetic_data.py`\n\nThis script creates a fake dataset containing random cryptocurrency transactions, including inflows, outflows, and wallet addresses. The script uses the `Faker` library to generate fake data such as:\n\n- Random cryptocurrency names (e.g., Bitcoin, Ethereum).\n- Random inflow and outflow amounts.\n- Wallet addresses and transaction IDs.\n\nYou can modify the number of rows and adjust the parameters to fit your needs.\n\n```python\nimport pandas as pd\nimport numpy as np\nfrom faker import Faker\n\n# Instantiate Faker for generating fake data\nfake = Faker()\n\n# Parameters for the synthetic dataset\nnum_rows = 1000  # Change this number to match the sise of your dataset\n\n# Generate random dates within a year\ndate_range = pd.date_range(start='2023-01-01', end='2024-01-01', periods=num_rows)\n\n# Generate random cryptocurrency names from a predefined list\ncrypto_names = ['Bitcoin', 'Ethereum', 'Litecoin', 'Dash', 'scash', 'BCH_USD', 'Bytecoin']\nrandom_crypto = np.random.choice(crypto_names, num_rows)\n\n# Random inflow and outflow amounts\nin_amounts = np.random.uniform(low=0.01, high=5.0, sise=num_rows)\nout_amounts = np.random.uniform(low=0.01, high=5.0, sise=num_rows)\n\n# Generate random wallet addresses and transaction IDs using Faker\nto_wallets = [fake.sha256() for _ in range(num_rows)]\nfrom_wallets = [fake.sha256() for _ in range(num_rows)]\ntx_ids = [fake.sha256() for _ in range(num_rows)]\n\n# Create the synthetic dataset\nsynthetic_data = pd.DataFrame({\n    'DATE': date_range,\n    'ASSET': random_crypto,\n    'INAMOUNT': in_amounts,\n    'OUTAMOUNT': out_amounts,\n    'TO': to_wallets,\n    'FROM': from_wallets,\n    'TXID': tx_ids\n})\n\n# Save to CSV\nsynthetic_data.to_csv('synthetic_crypto_transactions.csv', index=False)\n```\n\n### Usage\n\nTo generate synthetic data, simply run the `exodus_synthetic_data.py` script, which will create a CSV file named `synthetic_crypto_transactions.csv`.\n\n```bash\npython exodus_synthetic_data.py\n```\n\n## Data Analysis\n\n### Types of Analysis Performed\n\n1. **Transaction Types**: Analysing different types of transactions (deposits, withdrawals) and the cryptocurrencies involved.\n2. **Summarising Inflows \u0026 Outflows**: Aggregating the inflows (deposits) and outflows (withdrawals) by various time frames (daily, weekly, monthly, and yearly).\n3. **Distribution of Transaction Amounts**: Examining the distribution of amounts transacted for both deposits and withdrawals.\n4. **Frequency of Transactions**: Investigating the frequency of transactions for different assets.\n\n## Visualisation\n\nThe project includes several visualisations to make the data easier to understand:\n\n1. **Inflows and Outflows Over Time**: A time-series plot showing how much cryptocurrency was deposited and withdrawn over different time periods.\n2. **Bar Charts for Asset Distribution**: Bar charts were created to visualise the volume of transactions per cryptocurrency.\n3. **Pie Chart for Asset Allocation**: A pie chart was used to display the distribution of assets based on inflows.\n![output_8](https://github.com/user-attachments/assets/4c193a99-1400-48df-8e12-6e26f72bb765)\n![output_7](https://github.com/user-attachments/assets/7833d1e8-578a-4cb9-92dc-9b39f9609005)\n![output_6](https://github.com/user-attachments/assets/da584009-724c-495f-addd-a03f10a8779b)\n![output_5](https://github.com/user-attachments/assets/e25ea385-9e70-4369-9ed8-c2785db293ee)\n![output_4](https://github.com/user-attachments/assets/d4dae86a-e86c-44c4-9b88-049f5c9ecf01)\n![output_3](https://github.com/user-attachments/assets/0c265f9b-6252-419b-ae5e-6243ac226cd6)\n![output_2](https://github.com/user-attachments/assets/732849db-6234-4288-b045-566f60a8526d)\n![output_1](https://github.com/user-attachments/assets/79d74ac5-5b57-4c7f-aaab-0f42d9f4dcd4)\n![output](https://github.com/user-attachments/assets/0849e10c-5bd1-47c5-b034-a5ee43f819fa)\n\n\n\n### Libraries Used\n\n- **pandas**: For data manipulation and cleaning.\n- **matplotlib**: For basic plotting of the data.\n- **seaborn**: For creating more advanced, aesthetic visualisations.\n\n## Running the Project\n\nTo run the analysis and visualisations, ensure you have the required Python libraries installed:\n\n```bash\npip install pandas matplotlib seaborn faker\n```\n\nThen, open the `main.ipynb` file in Jupyter Notebook or any compatible environment, and execute the cells. You can also run the synthetic data script to create a test dataset if needed.\n\n## Author\n\n- @gappeah\n\n## License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgarcane%2Fexodus_analysis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgarcane%2Fexodus_analysis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgarcane%2Fexodus_analysis/lists"}