A comprehensive dashboard for analyzing presentation interactions and events with filtering capabilities and time-series visualizations.
- Event Count Over Time: Line chart showing the number of events occurring over time
- Distinct Properties Count Over Time: Line chart showing the count of unique properties (event types, slide types, audiences, slides) over time
- Interactive Time Granularity: Choose between hourly, daily, or custom time intervals
- Event Type: Filter by interaction source (opinion, answer, reaction, qa_submission)
- Slide Type: Filter by slide type (Poll, Brainstorm, Open Ended, Pick Answer)
- Presentation: Filter by specific presentation names
- Team: Filter by team names
- Audience: Filter by audience names
- Reaction Type: Filter by specific reaction types (like, heart, wow)
- Total Events count with delta indicators
- Unique Audiences count
- Unique Slides count
- Event Types count
- Peak events and properties analysis
- Average events and properties per time period
- Filtered data table showing relevant columns
- Real-time updates based on applied filters
- Export capabilities through Streamlit
-
Install Python dependencies:
pip install -r requirements.txt
-
Run the dashboard:
streamlit run event_analysis_dashboard.py
-
Open your browser and navigate to the URL shown in the terminal (usually
http://localhost:8501)
- Use the sidebar to select from available data files:
- Sample Data (sample_presentation_data.csv)
- Dave Presentation (dave_presentation_interactions.csv)
- Duke Presentation (duke_presentation_interactions.csv)
- Event Type: Choose specific interaction types (e.g., only show poll responses)
- Slide Type: Filter by slide categories (e.g., only show quiz slides)
- Presentation: Focus on specific presentations
- Team: Analyze team-specific interactions
- Audience: Focus on specific audience segments
- Reaction Type: Analyze specific reaction patterns
- Time Granularity: Select how to group time intervals:
- 1H: Hourly analysis
- 2H: 2-hour intervals
- 4H: 4-hour intervals
- 6H: 6-hour intervals
- 12H: 12-hour intervals
- 1D: Daily analysis
- Top Chart: Shows event frequency over time
- Bottom Chart: Shows diversity of properties over time
- Peaks: Indicate high-engagement periods
- Patterns: Help identify trends and user behavior
The dashboard works with CSV files containing the following key columns:
Createdat: Event timestamp (primary time column)Interaction Source: Type of interaction (opinion, answer, reaction, qa_submission)Slidetypenormalized: Normalized slide typeSlidetitle: Title of the slideAudienceid: Unique audience identifierAudience Name: Name of the audience memberTeam Name: Team identifierPresentation Name: Name of the presentationReactiontype: Type of reaction (if applicable)
To add new filterable properties, modify the get_event_properties() function in event_analysis_dashboard.py:
def get_event_properties(df):
properties = {}
# Add your new property here
if 'Your_Column' in df.columns:
properties['Your Property'] = df['Your_Column'].unique().tolist()
return propertiesTo customize the visualizations, edit the create_charts() function:
def create_charts(event_counts, distinct_properties, filters_applied):
# Modify chart appearance, colors, or add new chart types
pass-
Data Loading Errors
- Ensure CSV files are in the same directory as the script
- Check file permissions and format
- Verify date column formats match expected patterns
-
Chart Not Displaying
- Check if timestamp columns contain valid dates
- Ensure filtered data is not empty
- Verify time granularity selection
-
Performance Issues
- Use smaller time granularities for large datasets
- Apply filters to reduce data size
- Consider sampling data for very large files
- Timestamps: Must be in format
DD-MM-YYYY, HH:MM - CSV Encoding: UTF-8 recommended
- Missing Values: Handled automatically with 'unknown' or 'N/A' placeholders
- Use Streamlit's built-in data export features
- Right-click on charts to save as images
- Copy filtered data to clipboard
- Dashboard automatically refreshes when filters change
- Cached data loading for better performance
- Responsive design for different screen sizes
To contribute to this dashboard:
- Fork the repository
- Create a feature branch
- Make your changes
- Test with sample data
- Submit a pull request
This project is open source and available under the MIT License.