redfernstech commited on
Commit
210df59
·
verified ·
1 Parent(s): 9939768

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +90 -13
app.py CHANGED
@@ -1,23 +1,100 @@
 
1
  import streamlit as st
2
  import pandas as pd
 
 
 
 
3
 
4
  # Load the CSV data
5
  file_path = 'category upwork jobs.csv'
6
  jobs_df = pd.read_csv(file_path)
7
 
8
- # Sidebar: Select Category
9
- st.sidebar.header("Filter Jobs by Category")
10
- categories = jobs_df['category'].unique() # Extract unique categories
11
- selected_category = st.sidebar.selectbox("Choose a category:", categories)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
- # Filter jobs based on the selected category
14
- filtered_jobs = jobs_df[jobs_df['category'] == selected_category]
 
 
 
 
 
 
15
 
16
- # Main: Display filtered jobs
17
- st.title("Jobs Dashboard")
18
- st.write(f"Showing jobs in category: **{selected_category}**")
19
- #st.dataframe(filtered_jobs[['title']]) # Adjust columns as needed
20
- st.dataframe(filtered_jobs[['title','key','description','date']])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
- # Optional: Show a count of jobs in the selected category
23
- st.write(f"Total jobs in this category: {len(filtered_jobs)}")
 
1
+
2
  import streamlit as st
3
  import pandas as pd
4
+ import matplotlib.pyplot as plt
5
+ from streamlit.components.v1 import html
6
+ import nbformat
7
+ from nbconvert import HTMLExporter
8
 
9
  # Load the CSV data
10
  file_path = 'category upwork jobs.csv'
11
  jobs_df = pd.read_csv(file_path)
12
 
13
+ # Adjust column names as per the CSV
14
+ category_column = 'category' # Replace with the actual column name for category
15
+ job_title_column = 'title' # Replace with the actual column name for job title
16
+ description_column = 'Description'
17
+ key_column = 'key'
18
+ date_column = 'Date'
19
+
20
+ # Sidebar menu
21
+ st.sidebar.title("Navigation")
22
+ option = st.sidebar.radio("Go to", ["Home", "Plots", "Notebook","Download Datasets"])
23
+ # Home Page: Display data with category filter
24
+ if option == "Home":
25
+ st.title("Jobs Dashboard")
26
+
27
+ # Filter Jobs by Category
28
+ st.sidebar.header("Filter Jobs by Category")
29
+ categories = jobs_df[category_column].unique() # Extract unique categories
30
+ selected_category = st.sidebar.selectbox("Choose a category:", categories)
31
+
32
+ # Filter jobs based on the selected category
33
+ filtered_jobs = jobs_df[jobs_df[category_column] == selected_category]
34
+
35
+ # Display filtered jobs with additional columns
36
+ st.write(f"Showing jobs in category: **{selected_category}**")
37
+ st.dataframe(filtered_jobs[['title','key','description','date']])
38
+
39
+ # Optional: Show a count of jobs in the selected category
40
+ st.write(f"Total jobs in this category: {len(filtered_jobs)}")
41
+
42
+ # Plots Page: Display category distribution plot
43
+ elif option == "Plots":
44
+ st.title("Job Category Distribution")
45
+
46
+ # Count occurrences of each category
47
+ category_counts = jobs_df[category_column].value_counts()
48
+
49
+ # Create a bar plot using matplotlib
50
+ fig, ax = plt.subplots(figsize=(12, 6))
51
+ ax.bar(category_counts.index, category_counts.values)
52
+ ax.set_xlabel("Job Category")
53
+ ax.set_ylabel("Number of Jobs")
54
+ ax.set_title("Distribution of Jobs Across Categories")
55
+ plt.xticks(rotation=45, ha="right")
56
+ plt.tight_layout()
57
+
58
+ # Display the plot in Streamlit
59
+ st.pyplot(fig)
60
+ # Notebook Page: Render the Jupyter Notebook
61
+ elif option == "Notebook":
62
+ st.title("Jupyter Notebook")
63
 
64
+ # Load and convert the notebook to HTML
65
+ notebook_path = 'upwork_dashboard.ipynb' # Update with the actual path to your notebook
66
+ with open(notebook_path) as f:
67
+ notebook_content = nbformat.read(f, as_version=4)
68
+
69
+ html_exporter = HTMLExporter()
70
+ html_exporter.exclude_input = False # Include code cells in the notebook display
71
+ notebook_html, _ = html_exporter.from_notebook_node(notebook_content)
72
 
73
+ # Display the notebook HTML in Streamlit
74
+ html(notebook_html, height=800, scrolling=True)
75
+ elif option == "Download Datasets":
76
+ st.title("Download Datasets")
77
+ d=pd.read_csv("category upwork jobs.csv")
78
+ d1=pd.read_csv("jobs.csv")
79
+ # Download links for the datasets
80
+ st.markdown("Click the links below to download the datasets:")
81
+
82
+ # Link for category upwork jobs dataset
83
+ with open("category upwork jobs.csv", 'rb') as f:
84
+ st.download_button(
85
+ label="Download Category Upwork Jobs Dataset",
86
+ data=f,
87
+ file_name='category_upwork_jobs.csv',
88
+ mime='text/csv'
89
+ )
90
+ st.dataframe(d)
91
+ # Link for the original dataset
92
+ with open("jobs.csv", 'rb') as f:
93
+ st.download_button(
94
+ label="Download Original Dataset",
95
+ data=f,
96
+ file_name='origina scraped data.csv',
97
+ mime='text/csv'
98
+ )
99
+ st.dataframe(d1)
100