Data Visualization with OpenAI API: Generate code with GenAI

Brought by: Coursera

Overview

In this 2-hour long project-based course, you will learn the basics of communicating with the OpenAI API through prompts specifically designed for Python code generation aimed at data visualization and analysis. This course is tailored to address a unique real-world scenario where you have been hired by an online toy store company called Toy Trendz to help them analyze their product sales data. They have provided you with a sales dataset related to the year 2018 and have presented analytical questions that require effective visualizations.

The challenge in this project lies in Toy Trendz's desire for a system that can convert human language into visualizations based on the data. You will start by learning how to effectively prompt GPT-4 to generate Python code, unlocking the power of natural language understanding to create customized data visualizations.

To get the most out of this course, you'll need access to the OpenAI API and a basic understanding of data analysis concepts, including data types, data manipulation, along with some familiarity with Python.

This course is for those who are experienced data analysis with at least a basic knowledge in Python and want to explore the exciting applications of generative AI in data visualization and analysis.

Syllabus

  • Project Overview
    • In this 2-hour long project-based course, you will learn the basics of communicating with the OpenAI API through prompts specifically designed for Python code generation aimed at data visualization and analysis. This course is tailored to address a unique real-world scenario where you have been hired by an online toy store company called Toy Trendz to help them analyze their product sales data. They have provided you with a sales dataset related to the year 2018 and have presented analytical questions that require effective visualizations. The challenge in this project lies in Toy Trendz's desire for a system that can convert human language into visualizations based on the data. You will start by learning how to effectively prompt GPT-4 to generate Python code, unlocking the power of natural language understanding to create customized data visualizations.To get the most out of this course, you'll need access to the OpenAI API and a basic understanding of data analysis concepts, including data types, data manipulation, along with some familiarity with Python. This course is for those who are experienced with data analysis with at least a basic knowledge in Python and want to explore the exciting applications of generative AI in data visualization and analysis. To get started with the course, make sure you download the project files from the Task 1 download section. Please note that participants will need approximately $5 of balance on their OpenAI account to complete this course.

Taught by

Ahmad Varasteh

Data Visualization with OpenAI API: Generate code with GenAI
Go to course

Data Visualization with OpenAI API: Generate code with GenAI

Brought by: Coursera

  • Coursera
  • Paid
  • English
  • Certificate Available
  • Available at any time
  • intermediate
  • English
8.1.2PHP Version1.05sRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (678ms)
    • Application (374ms)
    • 1 x Booting (64.28%)
      677.83ms
      1 x Application (35.49%)
      374.23ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed18.7ms
      • select * from `courses` where `slug_en` = 'data-visualization-with-openai-api:-generate-code-with-genai' limit 1
        16.3ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. data-visualization-with-openai-api:-generate-code-with-genai
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-07-26 03:30:18' where `id` = 6918
        1.14ms/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-07-26 03:30:18
        • 1. 6918
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (37)
        230μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        200μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (106) and `institutions`.`deleted_at` is null
        220μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (2) and `providers`.`deleted_at` is null
        210μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 6909 limit 1
        400μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 6909
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        WlimxYlUVXJ8xvwVAr9AYYRGtrHzv7FqIbsRLcZN
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/data-visualization-with-openai-api:-gener...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/data-visualization-with-openai-api:-generate-code-with-genai
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.30" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.30" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "9650d1488841ab5d-YYZ" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.30" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.30" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "9650d1488841ab5d-YYZ" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "14556" "REMOTE_ADDR" => "172.70.80.16" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/data-visualization-with-openai-api:-generate-code-with-genai" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1753500617.2878 "REQUEST_TIME" => 1753500617 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Sat, 26 Jul 2025 03:30:18 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IlltMnVVOHRiNFVYeFAvRHhLZWkwWFE9PSIsInZhbHVlIjoicnRQQXR5WDZyTW9hdEI4K3pCa0xMZEpGNzdGNm9MZ1IrWlBMZjhpM3FzUmVxdkRwN2ZBaUtMYXd2UGdkb2RUakFXcm5ZR3NoVmpzRTBKYXkrU1FYR3BpdEYrQkhuWkxzTGRCUDlzR3VMc1FJL2hnQXNQM3RPRmNIR2xzVyt6SmkiLCJtYWMiOiIxZmZiNzk4ZjRmODA3OGJmMDYxOGM3NmZlOWMxMDRhZTY3YWM4NTBkMzFiZmQ5Yjc2OWQyY2VmMTYzMjE1MGY3IiwidGFnIjoiIn0%3D; expires=Sat, 26 Jul 2025 05:30:18 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IlltMnVVOHRiNFVYeFAvRHhLZWkwWFE9PSIsInZhbHVlIjoicnRQQXR5WDZyTW9hdEI4K3pCa0xMZEpGNzdGNm9MZ1IrWlBMZjhpM3FzUmVxdkRwN2ZBaUtMYXd2UGdkb2RUakFXcm5ZR" 1 => "laravel_session=eyJpdiI6Ik1hb1o0YUltWmh0M2ZyNCtlOVRYTUE9PSIsInZhbHVlIjoiakZCUnRZOWRQdWVFZTB0ZEtxM2wzK0JWazA5dE1SZ0hSTVdyTDRpVUR5ZkYwZ3JuRmFSRXdoUER3bm1iSndqMU16cVpoQ0pDVGlEelRBeERKRXFPVWJOM2dRbDRpdEJncitjL0FKc2xyRUtNeE54UFIwTjBzRllLeTVNODNJTlUiLCJtYWMiOiJhNmJkYWM1M2JmM2FjMTNlOWMyMWM1NTYwMTJlOTc0MGZjMzY5NWZmYTc3NDQyYjBkNzFlZTI0NzY0N2ZmNTc4IiwidGFnIjoiIn0%3D; expires=Sat, 26 Jul 2025 05:30:18 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Ik1hb1o0YUltWmh0M2ZyNCtlOVRYTUE9PSIsInZhbHVlIjoiakZCUnRZOWRQdWVFZTB0ZEtxM2wzK0JWazA5dE1SZ0hSTVdyTDRpVUR5ZkYwZ3JuRmFSRXdoUER3bm1iSndqMU16" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IlltMnVVOHRiNFVYeFAvRHhLZWkwWFE9PSIsInZhbHVlIjoicnRQQXR5WDZyTW9hdEI4K3pCa0xMZEpGNzdGNm9MZ1IrWlBMZjhpM3FzUmVxdkRwN2ZBaUtMYXd2UGdkb2RUakFXcm5ZR3NoVmpzRTBKYXkrU1FYR3BpdEYrQkhuWkxzTGRCUDlzR3VMc1FJL2hnQXNQM3RPRmNIR2xzVyt6SmkiLCJtYWMiOiIxZmZiNzk4ZjRmODA3OGJmMDYxOGM3NmZlOWMxMDRhZTY3YWM4NTBkMzFiZmQ5Yjc2OWQyY2VmMTYzMjE1MGY3IiwidGFnIjoiIn0%3D; expires=Sat, 26-Jul-2025 05:30:18 GMT; path=/XSRF-TOKEN=eyJpdiI6IlltMnVVOHRiNFVYeFAvRHhLZWkwWFE9PSIsInZhbHVlIjoicnRQQXR5WDZyTW9hdEI4K3pCa0xMZEpGNzdGNm9MZ1IrWlBMZjhpM3FzUmVxdkRwN2ZBaUtMYXd2UGdkb2RUakFXcm5ZR" 1 => "laravel_session=eyJpdiI6Ik1hb1o0YUltWmh0M2ZyNCtlOVRYTUE9PSIsInZhbHVlIjoiakZCUnRZOWRQdWVFZTB0ZEtxM2wzK0JWazA5dE1SZ0hSTVdyTDRpVUR5ZkYwZ3JuRmFSRXdoUER3bm1iSndqMU16cVpoQ0pDVGlEelRBeERKRXFPVWJOM2dRbDRpdEJncitjL0FKc2xyRUtNeE54UFIwTjBzRllLeTVNODNJTlUiLCJtYWMiOiJhNmJkYWM1M2JmM2FjMTNlOWMyMWM1NTYwMTJlOTc0MGZjMzY5NWZmYTc3NDQyYjBkNzFlZTI0NzY0N2ZmNTc4IiwidGFnIjoiIn0%3D; expires=Sat, 26-Jul-2025 05:30:18 GMT; path=/; httponlylaravel_session=eyJpdiI6Ik1hb1o0YUltWmh0M2ZyNCtlOVRYTUE9PSIsInZhbHVlIjoiakZCUnRZOWRQdWVFZTB0ZEtxM2wzK0JWazA5dE1SZ0hSTVdyTDRpVUR5ZkYwZ3JuRmFSRXdoUER3bm1iSndqMU16" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "WlimxYlUVXJ8xvwVAr9AYYRGtrHzv7FqIbsRLcZN" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/data-visualization-with-openai-api:-generate-code-with-genai" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]