Spaces:
Runtime error
Runtime error
| __copyright__ = "Copyright (C) 2023 Ali Mustapha" | |
| __license__ = "GPL-3.0-or-later" | |
| import pandas as pd | |
| import plotly.express as px | |
| from plotly.subplots import make_subplots | |
| import plotly.graph_objects as go | |
| def get_commits_per_gender(gender_counts): | |
| gender_counts=gender_counts[gender_counts["Predicted_Gender"]!="Unknown"] | |
| grouped = gender_counts.groupby('Year').agg({'Count': 'sum'}) | |
| grouped['Male Percentage'] = gender_counts[gender_counts['Predicted_Gender'] == 'Male'].groupby('Year')['Count'].sum() / grouped['Count'] * 100 | |
| grouped['Female Percentage'] = gender_counts[gender_counts['Predicted_Gender'] == 'Female'].groupby('Year')['Count'].sum() / grouped['Count'] * 100 | |
| grouped=grouped.fillna(0) | |
| merged_gender_counts = grouped.merge(gender_counts, on=["Year"])[['Year', 'Male Percentage', 'Female Percentage', | |
| 'Predicted_Gender', 'Count_y']].rename(columns={"Count_y":"Count"}) | |
| male_count=merged_gender_counts[merged_gender_counts["Predicted_Gender"]=="Male"] | |
| female_count=merged_gender_counts[merged_gender_counts["Predicted_Gender"]=="Female"] | |
| fig = make_subplots(rows=1, cols=1, shared_xaxes=True) | |
| # Add bars for Male and Female counts | |
| fig.add_trace( | |
| go.Bar(x=male_count['Year'], y=male_count['Count'], name='Male', | |
| hovertemplate='Male Commits: %{y:.2f}<br> Male Percentage: %{customdata:.2f}', # Use customdata for the hovertemplate | |
| customdata=male_count['Male Percentage']), # Use the 'Male Percentage' column for customdata | |
| row=1, col=1 | |
| ) | |
| fig.add_trace( | |
| go.Bar(x=female_count['Year'], y=female_count['Count'], name='Female', | |
| hovertemplate='Female Commits: %{y:.2f}<br>Female Percentage: %{customdata:.2f}', # Use customdata for the hovertemplate | |
| customdata=female_count['Female Percentage']), # Use the 'Female Percentage' column for customdata | |
| row=1, col=1 | |
| ) | |
| return fig | |
| def get_gender_percentage(df): | |
| counts = df['Predicted_Gender'].value_counts().to_dict() | |
| # Define the labels and their corresponding counts | |
| labels = ["Male", "Female", "Unknown"] | |
| values = [counts.get(label, 0) for label in labels] | |
| Gender_Percentage_plot = go.Figure(data=[go.Pie(labels=labels, values=values, marker=dict(colors=["blue","pink","gray"]))]) | |
| return Gender_Percentage_plot | |
| def get_commits_per_region(df,url): | |
| Country_to_region=pd.read_csv("utils/CodeToRegion.csv") | |
| Country_to_region=Country_to_region.rename(columns={"sub-region":"sub-region-prediction"}) | |
| # Group by Year and sub-region-prediction, then count unique sub-regions | |
| sub_region_counts = df.groupby(['Year', "sub-region-prediction"])["sub-region-prediction"].count().reset_index(name='Count') | |
| # Calculate the sums for each region | |
| region_sums = sub_region_counts.groupby('sub-region-prediction')['Count'].sum().reset_index() | |
| # Append 'All' rows to the DataFrame | |
| df_all = region_sums.copy() | |
| df_all['Year'] = 'Overall' | |
| df_result = pd.concat([sub_region_counts, df_all], ignore_index=True, sort=False) | |
| # Merge the sub_region_counts DataFrame with the Country_to_region DataFrame | |
| merged_df = df_result.merge(Country_to_region, on="sub-region-prediction", how="left") | |
| # Create a choropleth map using plotly.express | |
| fig = go.Figure(data=px.choropleth( | |
| merged_df, | |
| locations="code3", | |
| color="Count", | |
| hover_name="sub-region-prediction", | |
| # color_continuous_scale=px.colors.qualitative.Set3, # Choose your color scale | |
| color_continuous_scale="Greens", | |
| animation_frame="Year", | |
| title="Counts by Sub-Region" | |
| )) | |
| fig.update_layout( | |
| title_text='Commits Counts by Sub-Region for '+url, | |
| geo=dict( | |
| showframe=False, | |
| showcoastlines=False, | |
| projection_type='equirectangular' | |
| ), | |
| annotations = [dict( | |
| x=0.55, | |
| y=0.1, | |
| xref='paper', | |
| yref='paper', | |
| text='Source: <a href="https://huggingface.co/spaces/AliMustapha/Geo-GenderStudy">\ | |
| Geo-GenderStudy</a>', | |
| showarrow = False | |
| )], | |
| height=600, # Adjust the height as per your preference | |
| width=1000 # Adjust the width as per your preference | |
| ) | |
| return fig |