-
Notifications
You must be signed in to change notification settings - Fork 118
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #217 from Aditijainnn/Indian-General-Elections-and…
…-Stock-Market Indian election influence on stock market
- Loading branch information
Showing
13 changed files
with
39,652 additions
and
0 deletions.
There are no files selected for viewing
6,258 changes: 6,258 additions & 0 deletions
6,258
...er Vision/Indian General Elections and Stock Market/Election_prediction-WebApp/LS_2.0.csv
Large diffs are not rendered by default.
Oops, something went wrong.
16 changes: 16 additions & 0 deletions
16
.../Indian General Elections and Stock Market/Election_prediction-WebApp/Readme.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Indian Election Prediction App | ||
Explore and analyze the intricacies of Indian elections with intuitive web application. Leveraging data science techniques, this app offers a comprehensive overview of election datasets, including constituency | ||
distributions, voter demographics, and party performance.Dive into visualizations showcasing state-wise trends and candidate predictions based on key factors like gender, age, and financial assets. | ||
Powered by Streamlit and popular Pytho libraries, this user-friendly tool provides valuable insights into past elections and predicts candidate success, enabling users to understand and anticipate electoral outcomes. | ||
|
||
## Install dependencies | ||
```bash | ||
pip install streamlit pandas numpy seaborn scikit-learn matplotlib | ||
``` | ||
## Run Application | ||
```bash | ||
streamlit run app.py | ||
``` | ||
|
||
|
||
|
174 changes: 174 additions & 0 deletions
174
Computer Vision/Indian General Elections and Stock Market/Election_prediction-WebApp/app.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,174 @@ | ||
# Importing necessary libraries | ||
import streamlit as st | ||
import pandas as pd | ||
import numpy as np | ||
import seaborn as sns | ||
import matplotlib.pyplot as plt | ||
import plotly.express as px | ||
from sklearn.ensemble import RandomForestClassifier | ||
from sklearn.model_selection import train_test_split | ||
from sklearn.preprocessing import LabelEncoder | ||
from sklearn.impute import SimpleImputer | ||
|
||
def value_cleaner(x): | ||
try: | ||
str_temp = (x.split('Rs')[1].split('\n')[0].strip()) | ||
str_temp_2 = '' | ||
for i in str_temp.split(","): | ||
str_temp_2 = str_temp_2 + i | ||
return str_temp_2 | ||
except: | ||
return 0 | ||
|
||
# Function to load data | ||
def load_data(filepath): | ||
try: | ||
return pd.read_csv(filepath) | ||
except FileNotFoundError: | ||
st.error(f"File not found: {filepath}") | ||
return None | ||
except pd.errors.ParserError: | ||
st.error(f"Error parsing file: {filepath}") | ||
return None | ||
|
||
|
||
# Load the dataset | ||
csv_file_path = 'LS_2.0.csv' | ||
vote = load_data(csv_file_path) | ||
|
||
if vote is not None: | ||
# Data Cleaning | ||
if 'CRIMINAL\nCASES' in vote.columns: | ||
vote['CRIMINAL\nCASES'].replace({np.NaN: 0}, inplace=True) | ||
vote['CRIMINAL\nCASES'] = pd.to_numeric(vote['CRIMINAL\nCASES'], errors='coerce').fillna(0).astype(np.int64) | ||
if 'ASSETS' in vote.columns and 'LIABILITIES' in vote.columns: | ||
vote['ASSETS'] = vote['ASSETS'].apply(value_cleaner).astype(np.int64) | ||
vote['LIABILITIES'] = vote['LIABILITIES'].apply(value_cleaner).astype(np.int64) | ||
|
||
|
||
# Define the main function | ||
def main(): | ||
st.sidebar.title("Indian Election Prediction App") | ||
# Sidebar navigation | ||
menu = ["About", "Dataset Overview","Visualizations", "Prediction"] | ||
choice = st.sidebar.selectbox("Menu", menu) | ||
|
||
# About section | ||
if choice == "About": | ||
st.title("Indian Election Prediction App") | ||
st.markdown("---") | ||
st.write(""" | ||
Explore and analyze the intricacies of Indian elections with intuitive web application. Leveraging data science techniques, | ||
this app offers a comprehensive overview of election datasets, | ||
including constituency distributions, voter demographics, and party performance. | ||
Dive into visualizations showcasing state-wise trends and candidate predictions based on key factors like gender, age, and financial assets. | ||
Powered by Streamlit and popular Python libraries, this user-friendly tool provides valuable insights into past elections and predicts candidate success, enabling users to understand and anticipate electoral outcomes." | ||
""") | ||
st.write("") | ||
st.write("") | ||
|
||
st.image("images.jpeg", caption="Indian Election Analysis", use_column_width=True) | ||
|
||
|
||
# Visualizations section | ||
elif choice == "Visualizations": | ||
st.title("Visualization") | ||
st.markdown("---") | ||
st.subheader("State-wise Distribution of Indian Constituencies") | ||
st_con=vote.groupby('STATE').apply(lambda x:x['CONSTITUENCY'].nunique()).reset_index(name='# Constituency') | ||
# State-wise distribution of constituencies | ||
fig2 = px.bar(st_con, x='STATE', y='# Constituency', color='# Constituency', labels={'pop': 'Constituencies of India'}) | ||
fig2.update_layout( template='plotly_dark') | ||
st.plotly_chart(fig2) | ||
st.markdown("---") | ||
# Sunburst Image of state and constituency by voters | ||
st.subheader("Sunburst Image of State and Constituency by Voters") | ||
st_con_vt = vote[['STATE', 'CONSTITUENCY', 'TOTAL ELECTORS']] | ||
fig3 = px.sunburst(st_con_vt, path=['STATE', 'CONSTITUENCY'], values='TOTAL ELECTORS', color='TOTAL ELECTORS', color_continuous_scale='viridis_r') | ||
fig3.update_layout(template='plotly_dark') | ||
st.plotly_chart(fig3) | ||
st.markdown("---") | ||
|
||
st_prty = vote.groupby(['PARTY', 'STATE']).apply(lambda x: x['WINNER'].sum()).reset_index(name='Wins') | ||
pvt_st_prty = pd.pivot(st_prty, index='PARTY', columns='STATE', values='Wins') | ||
st.subheader("Statewise report card for the Political Parties in India") | ||
# Plot the heatmap | ||
plt.style.use('dark_background') | ||
plt.figure(figsize=(15, 35)) | ||
sns.heatmap(pvt_st_prty, annot=True, fmt='g', cmap='terrain') | ||
plt.xlabel('States', size=20) | ||
plt.ylabel('Party', size=20) | ||
st.set_option('deprecation.showPyplotGlobalUse', False) | ||
st.pyplot() | ||
|
||
# Prediction Section | ||
elif choice == "Prediction": | ||
st.title("Prediction") | ||
|
||
le = LabelEncoder() | ||
vote['GENDER'] = le.fit_transform(vote['GENDER']) | ||
vote['PARTY'] = le.fit_transform(vote['PARTY']) | ||
|
||
features = ['GENDER', 'CRIMINAL\nCASES', 'AGE', 'ASSETS', 'LIABILITIES'] | ||
X = vote[features] | ||
y = vote['WINNER'] | ||
|
||
# Handle missing values | ||
imputer = SimpleImputer(strategy='mean') | ||
X = imputer.fit_transform(X) | ||
|
||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) | ||
model = RandomForestClassifier() | ||
model.fit(X_train, y_train) | ||
|
||
st.subheader("Input Features for Prediction") | ||
gender = st.selectbox("Gender", options=['Male', 'Female']) | ||
criminal_cases = st.number_input("Criminal Cases", min_value=0, step=1) | ||
age = st.number_input("Age", min_value=25, max_value=100, step=1) | ||
assets = st.number_input("Assets (in Rs)", min_value=0, step=1) | ||
liabilities = st.number_input("Liabilities (in Rs)", min_value=0, step=1) | ||
|
||
gender_encoded = 1 if gender == 'Female' else 0 | ||
input_data = np.array([[gender_encoded, criminal_cases, age, assets, liabilities]]) | ||
input_data = imputer.transform(input_data) | ||
prediction = model.predict(input_data) | ||
prediction_prob = model.predict_proba(input_data) | ||
|
||
if prediction[0] == 1: | ||
st.success(f"The candidate is likely to win with a probability of {prediction_prob[0][1]*100:.2f}%") | ||
else: | ||
st.error(f"The candidate is unlikely to win with a probability of {prediction_prob[0][0]*100:.2f}%") | ||
st.markdown("---") | ||
st.subheader("Prediction Probabilities") | ||
classes = model.classes_ | ||
probabilities = prediction_prob[0] | ||
df_pred_prob = pd.DataFrame({"Class": classes, "Probability": probabilities}) | ||
fig_pred_prob = px.bar(df_pred_prob, x='Class', y='Probability', color='Class', labels={'Class': 'Prediction Class', 'Probability': 'Probability'}) | ||
fig_pred_prob.update_layout(template='plotly_dark') | ||
st.plotly_chart(fig_pred_prob) | ||
|
||
# Overview section | ||
elif choice == "Dataset Overview": | ||
st.title("Overview of the Dataset") | ||
st.write("""The dataset contains information on Indian election constituencies, including details about candidates, parties, and electoral statistics. Each entry includes data such as the state, constituency name, candidate name, party affiliation, gender, age, educational background, assets, liabilities, and voting statistics. Key features like criminal cases, gender, age, and financial status provide insights into candidate profiles, while voting metrics offer an overview of electoral participation and outcomes. With comprehensive information on candidates and constituencies, this dataset facilitates | ||
analysis of electoral trends, candidate demographics, and the electoral process's overall dynamics in India.""") | ||
st.markdown("---") | ||
st.write(vote.describe()) | ||
st.markdown("---") | ||
st.subheader("Faetures in the Dataset:") | ||
features = [ | ||
'STATE', 'CONSTITUENCY', 'NAME', 'WINNER', 'PARTY', 'SYMBOL', 'GENDER', | ||
'CRIMINAL CASES', 'AGE', 'CATEGORY', 'EDUCATION', 'ASSETS', 'LIABILITIES', | ||
'GENERAL VOTES', 'POSTAL VOTES', 'TOTAL VOTES', 'OVER TOTAL ELECTORS IN CONSTITUENCY', | ||
'OVER TOTAL VOTES POLLED IN CONSTITUENCY', 'TOTAL ELECTORS' | ||
] | ||
|
||
# Display the list of features | ||
st.write("### List of Features:") | ||
for feature in features: | ||
st.write("- " + feature) | ||
|
||
if __name__ == '__main__': | ||
main() | ||
|
||
|
Binary file added
BIN
+6.08 KB
...ndian General Elections and Stock Market/Election_prediction-WebApp/images.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
47 changes: 47 additions & 0 deletions
47
Computer Vision/Indian General Elections and Stock Market/README.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# Relationship Between Indian General Elections and the Indian Stock Market | ||
|
||
## Introduction | ||
|
||
The Indian stock market is significantly influenced by general elections. This brief analysis explores historical trends, investor behavior, and economic factors affecting the market during election periods. | ||
|
||
## Historical Trends | ||
|
||
### Pre-Election Volatility | ||
|
||
- **Speculation**: Investors speculate about election outcomes and potential policies. | ||
- **Market Sentiment**: Influenced by opinion polls and political campaigns. | ||
- **Policy Uncertainty**: Concerns about changes in economic policies. | ||
|
||
### Post-Election Rally | ||
|
||
- **Stability**: Clear mandates reduce uncertainty. | ||
- **Economic Reforms**: Pro-business policies boost investor confidence. | ||
|
||
## Factors Influencing Market Reaction | ||
|
||
### Government Policies | ||
|
||
- **Fiscal Discipline**: Controlling fiscal deficit and public debt. | ||
- **Economic Reforms**: Liberalization and deregulation. | ||
- **Taxation**: Corporate tax rates and GST. | ||
- **Infrastructure Development**: Investments in projects. | ||
|
||
### Investor Sentiment | ||
|
||
- **Media Narratives**: Shape expectations and reactions. | ||
- **Global Economic Conditions**: Affect market dynamics. | ||
- **Domestic Issues**: Inflation, interest rates, and growth rates. | ||
|
||
### Historical Data Analysis | ||
|
||
Key indices like BSE Sensex and NSE Nifty reflect electoral impacts: | ||
- **1999 Elections**: Market surge due to stable BJP-led coalition. | ||
- **2004 Elections**: Market plunge with Congress-led coalition's surprise victory. | ||
|
||
## Case Studies | ||
|
||
### 2009 General Elections | ||
|
||
The Congress-led UPA coalition's victory led to: | ||
- **Sensex**: 17% jump on the first trading day post-results. | ||
- **Nifty**: Significant increase, triggering circuit breakers. |
695 changes: 695 additions & 0 deletions
695
Computer Vision/Indian General Elections and Stock Market/generalelections.ipynb
Large diffs are not rendered by default.
Oops, something went wrong.
Binary file added
BIN
+6 KB
...er Vision/Indian General Elections and Stock Market/indian_election_preditiction/DS_Store
Binary file not shown.
Binary file added
BIN
+966 Bytes
...General Elections and Stock Market/indian_election_preditiction/Igismap/Indian_States.dbf
Binary file not shown.
1 change: 1 addition & 0 deletions
1
...General Elections and Stock Market/indian_election_preditiction/Igismap/Indian_States.prj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] |
Binary file added
BIN
+5.49 MB
...General Elections and Stock Market/indian_election_preditiction/Igismap/Indian_States.shp
Binary file not shown.
Binary file added
BIN
+388 Bytes
...General Elections and Stock Market/indian_election_preditiction/Igismap/Indian_States.shx
Binary file not shown.
Oops, something went wrong.