Dr.
Rafiq Zakaria Campus
             Maulana Azad College of Arts, Commerce & Science, Aurangabad.
                            P.G. Department of Computer Science
                            Certificat
This is to certify that Mr. /Ms. Dheya Alhaq Abdo Ahmed Alnuzaili
Seat No.03 of M.Sc. Computer Science, has satisfactorily completed the practical
work of Semester 1 for Course Code Data Visualization Course Name Computer
  Science during the academic year 2023- 2024.
         Subject Incharge                                    Head
          Dr. Ruheena Quadri                           Dr. Shaikh Akhil
                                   Examiner
                                Dr. Rafiq Zakaria Campus
                            PG Department of Computer Science
                  Maulana Azad College of Arts,Commerce and Science
         Paper: CCS/MJT/501 – Practical Based on CCS/MJP/ Data Visualization
                                   Practical - 3
Aim: - Case study on Visualizing Global Health data: Analysing and presenting health indicators across
countries to identify patterns and disparities
   1- Boxplot
 import pandas as pd
 import seaborn as sns
 import matplotlib.pyplot as plt
 # Assuming you have a dataset named 'health_data'
 data = {
     'Country': ['India', 'Yemen', 'Russia', 'USA', 'KSA'],
     'Life_Expectancy': [95, 73, 82, 80, 76],
     'Infant_Mortality_Rate': [10, 15, 5, 12, 8],
     'Healthcare_Expenditure': [5000, 2000, 7000, 6500, 9500],
     'Cause_of_Mortality': ['Infectious Diseases', 'Heart Disease',
 'Cancer', 'Infectious Diseases', 'Respiratory Diseases']
 }
 health_data = pd.DataFrame(data)
 # 1. Boxplot (Life Expectancy)
 sns.boxplot(x='Country', y='Life_Expectancy', data=health_data)
 plt.title('Boxplot of Life Expectancy Across Countries')
 plt.xticks(rotation=45, ha='right')
 plt.show()
OutPut:
  2- Histogram
  # 2. Histogram (Infant Mortality Rate)
  plt.hist(health_data['Infant_Mortality_Rate'], bins=20,
  edgecolor='black')
  plt.title('Histogram of Infant Mortality Rate Across Countries')
  plt.xlabel('Infant Mortality Rate')
  plt.ylabel('Number of Countries')
  plt.show()
Output:
   3- Heatmap
# 3. Heatmap (Correlation Matrix of Numeric Health Indicators)
numeric_columns = health_data.select_dtypes(include=['int64',
'float64']).columns
correlation_matrix = health_data[numeric_columns].corr()
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Correlation Matrix of Numeric Health Indicators')
plt.show()
Output:
   4- Bar Chart
# 4. Bar Chart (Healthcare Expenditure)
plt.bar(health_data['Country'], health_data['Healthcare_Expenditure'])
plt.title('Healthcare Expenditure Across Countries')
plt.xlabel('Country')
plt.ylabel('Healthcare Expenditure')
plt.xticks(rotation=45, ha='right')
plt.show()
 Output:
  5- Pie Chart
   # 5. Pie Chart (Distribution of Causes of Mortality)
   cause_of_mortality_counts =
   health_data['Cause_of_Mortality'].value_counts()
   plt.pie(cause_of_mortality_counts,
   labels=cause_of_mortality_counts.index, autopct='%1.1f%%',
   startangle=90)
   plt.title('Distribution of Causes of Mortality Across Countries')
   plt.show()
Output:
                                            Dr. Rafiq Zakaria Campus
                                         PG Department of Computer Science
                               Maulana Azad College of Arts,Commerce and Science
                Paper: CCS/MJT/501 – Practical Based on CCS/MJP/ Data Visualization
                                             Practical - 4
      Aim: - Interactive sales dashboard : Designing an interactive dashboard to explore sales data and influence patterns
      with example
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import pandas as pd
import plotly.express as px
# Sample Sales Data
sales_data = pd.DataFrame({
    'Date': pd.date_range(start='2023-01-01', periods=8, freq='D'),
    'Product': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'],
    'Sales': [100, 120, 130, 80, 110, 90, 140, 75],
    'Region': ['North', 'South', 'East', 'West', 'North', 'South', 'East', 'West']
})
# Initialize the Dash app
app = dash.Dash(__name__)
# Layout of the Dashboard
app.layout = html.Div(
    className='container',
    children=[
        html.H1("Interactive Sales Dashboard"),
        dcc.Dropdown(
            id='product-dropdown',
            options=[{'label': prod, 'value': prod} for prod in
sales_data['Product'].unique()],
            value='A',
            multi=False,
            style={'width': '50%'}
        ),
        dcc.Graph(id='sales-line-chart'),
        dcc.RangeSlider(
            id='date-slider',
            min=sales_data['Date'].min().timestamp(),
            max=sales_data['Date'].max().timestamp(),
            marks={int(ts): pd.to_datetime(ts, unit='s').strftime('%Y-%m-%d') for ts
in
                   range(int(sales_data['Date'].min().timestamp()),
int(sales_data['Date'].max().timestamp()), 86400 * 30)},
            step=None,
            value=[sales_data['Date'].min().timestamp(),
sales_data['Date'].max().timestamp()]
        )
    ]
)
Following The code:{ http://127.0.0.1:8050/}
# Callback to update the sales line chart based on user input
@app.callback(
    Output('sales-line-chart', 'figure'),
    [Input('product-dropdown', 'value'),
      Input('date-slider', 'value')]
)
def update_chart(selected_product, selected_date_range):
    filtered_data = sales_data[
         (sales_data['Product'] == selected_product) &
         (sales_data['Date'] >= pd.to_datetime(selected_date_range[0],
unit='s')) &
         (sales_data['Date'] <= pd.to_datetime(selected_date_range[1],
unit='s'))
    ]
    fig = px.line(filtered_data, x='Date', y='Sales', color='Region',
title=f'Sales for Product {selected_product}')
    return fig
# Run the app
if __name__ == '__main__':
    app.run_server(debug=True)
Output:
                                   Dr. Rafiq Zakaria Campus
                                 PG Department of Computer Science
                          Maulana Azad College of Arts,Commerce and Science
        Paper: CCS/MJT/501 – Practical Based on CCS/MJP/ Data Visualization
                                     Practical - 5
 Aim: Network analysis: visualizing social networks or organizational structure to reveal connections and
 influence pattern.
  import networkx as nx
  import matplotlib.pyplot as plt
  # Create a simple organizational structure network
  G = nx.Graph()
  # Add employees as nodes
  employees = ['Alice', 'Bob', 'Charlie', 'David', 'Eve']
  G.add_nodes_from(employees)
  # Define professional relationships (edges)
  relationships = [('Alice', 'Bob'), ('Alice', 'Charlie'), ('Bob', 'David'),
  ('Charlie', 'Eve')]
  G.add_edges_from(relationships)
  # Visualize the organizational structure
  pos = nx.spring_layout(G) # Force-directed layout
  nx.draw(G, pos, with_labels=True, font_weight='bold',
  node_color='lightblue', font_color='black', node_size=800,
  edge_color='gray', width=2)
  plt.title('Organizational Structure')
  plt.show()
Output:
                                               Dr. Rafiq Zakaria Campus
                               PG Department of Computer Science
                        Maulana Azad College of Arts,Commerce and Science
          Paper: CCS/MJT/501 – Practical Based on CCS/MJP/ Data Visualization
                                       Practical - 6
Aim: Geospatial data visualization :mapping and analyzing geographic data such as population density
distribution of resources or climate pattern
      import geopandas as gpd
      import matplotlib.pyplot as plt
      # Load world shapefile data
      world =
      gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
      # Load population data
      pop_data = gpd.read_file(r"E:\MSC\practical\D.V\natural
      earth\ne_110m_admin_0_countries.shp")
      # Merge world data with population data
      world = world.merge(pop_data, how='left', left_on='iso_a3',
      right_on='ISO_A3')
      # Plotting
      fig, ax = plt.subplots(1, 1, figsize=(15, 10))
      world.boundary.plot(ax=ax, linewidth=0.8)
      world.plot(column='pop_est', ax=ax, legend=True,
      legend_kwds={'label': "Population by Country"})
      plt.title('World Population Density')
      plt.show()
Output:
                                       Dr. Rafiq Zakaria Campus
                            PG Department of Computer Science
                     Maulana Azad College of Arts,Commerce and Science
         Paper: CCS/MJT/501 – Practical Based on CCS/MJP/ Data Visualization
                                      Practical - 7
Aim: Time series Visualization: Analyzing temporal data, such as stock prices or weather patterns to
identify trends and make predictions
import yfinance as yf
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
# Fetch historical stock data
symbol = "AAPL"
start_date = "2022-01-01"
end_date = "2023-01-01"
stock_data = yf.download(symbol, start=start_date, end=end_date)
# Plotting interactive time series chart
fig = go.Figure()
# Add stock closing prices as a line chart
fig.add_trace(go.Scatter(x=stock_data.index, y=stock_data['Close'],
mode='lines', name='Closing Price'))
# Add 30-day moving average
fig.add_trace(go.Scatter(x=stock_data.index,
y=stock_data['Close'].rolling(window=30).mean(),
                         mode='lines', name='30-day Moving Average',
line=dict(dash='dash')))
# Add trendlines
fig.update_layout(annotations=[
    dict(
        x="2022-08-01",
        y=stock_data['Close'].max(),
        xref="x",
        yref="y",
        text="Upward Trend",
        showarrow=True,
        arrowhead=4,
        ax=0,
        ay=-40
    )
])
# Add titles and labels
fig.update_layout(
    title=f'{symbol} Stock Price Analysis',
    xaxis_title='Date',
    yaxis_title='Stock Price (USD)',
    template='plotly_dark'
)
Output: