code: def data_frame_demo():
      @st.cache_data
      def get_UN_data():
          AWS_BUCKET_URL = (
              "https://streamlit-demo-data.s3-us-west-2.amazonaws.com"
          )
          df = pd.read_csv(AWS_BUCKET_URL + "/agri.csv.gz")
          return df.set_index("Region")
  
      try:
          df = get_UN_data()
          countries = st.multiselect(
              "Choose countries",
              list(df.index),
              ["China", "United States of America"],
          )
          if not countries:
              st.error("Please select at least one country.")
          else:
              data = df.loc[countries]
              data /= 1000000.0
              st.write(
                  "### Gross Agricultural Production ($B)",
                  data.sort_index(),
              )
  
              data = data.T.reset_index()
              data = pd.melt(data, id_vars=["index"]).rename(
                  columns={
                      "index": "year",
                      "value": "Gross Agricultural Product ($B)",
                  }
              )
              chart = (
                  alt.Chart(data)
                  .mark_area(opacity=0.3)
                  .encode(
                      x="year:T",
                      y=alt.Y(
                          "Gross Agricultural Product ($B):Q",
                          stack=None,
                      ),
                      color="Region:N",
                  )
              )
              st.altair_chart(chart, use_container_width=True)
      except URLError as e:
          st.error(
              """
              **This demo requires internet access.**
              Connection error: %s
          """
              % e.reason
          )
  
imports: from urllib.error import URLError
  import altair
  import pandas
  import streamlit
  from streamlit.hello.utils import show_code
label_desc: Use image node_id 1 for calling a global function with example usage: data_frame_demo() and returns: df