首页 > 其他分享 >大数据分析与可视化 之 实验04 Pandas基础

大数据分析与可视化 之 实验04 Pandas基础

时间:2023-12-30 19:55:35浏览次数:37  
标签:04 Series random pandas 可视化 names print data Pandas

实验04 Pandas基础

实验学时:2学时
实验类型:验证
实验要求:必修

一、实验目的

1.掌握pandas系列、数据帧和面板的使用
2.掌握pandas基本功能和操作

二、实验要求

  1. Pandas 程序的运行步骤。
    2.pandas的数据结构
    3.pandas系列、数据帧和面板
  2. pandas基本功能和操作

三、实验内容

任务1.使用pandas创建100个随机整数Series,使用系列函数输出该系列、系列的索引值,判断系列是否为空,输出系列的维度值、大小和值,输出系列的前10个和后6个元素。用numpy、pandas和python编程实现。

任务2. 使用pandas创建50个人的随机名字,名字要求符合中国习惯(即“姓+名字”),统计这些名字中含“刚”字的个数。用numpy、pandas和python编程实现。

任务3. 产生某校5000个同学五门课程成绩数据,要求有“姓名、高等数学、大学英语、操作系统、Python语言、计算机组成原理”这些字段,将生成的数据存入“myedu.xlsx”文件中,sheet名称为“厦门未来学院”。用numpy、pandas和python编程实现。
image

任务4. 产生500个班、每个班50名同学的五门课程成绩数据,要求有“姓名、高等数学、大学英语、操作系统、Python语言、计算机组成原理”这些字段,将生成的数据存入“myedu3.xlsx”文件中,工作表的名称为“1班”到“500班”。用numpy、pandas和python编程实现。
image

test4.py

import pandas as pd
import numpy as np
import random
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows


def task1():
    # 创建一个包含100个随机整数的Series
    random_data = pd.Series(np.random.randint(1, 101, 100))

    # 输出整个Series
    print("整个Series:")
    print(random_data)

    # 输出Series的索引值
    print("\nSeries的索引值:")
    print(random_data.index)

    # 判断Series是否为空
    is_empty = random_data.empty
    print("\nSeries是否为空:", is_empty)

    # 输出Series的维度值
    shape = random_data.shape
    print("\nSeries的维度值:", shape)

    # 输出Series的大小
    size = random_data.size
    print("\nSeries的大小:", size)

    # 输出Series的值
    values = random_data.values
    print("\nSeries的值:")
    print(values)

    # 输出Series的前10个元素
    print("\nSeries的前10个元素:")
    print(random_data.head(10))

    # 输出Series的后6个元素
    print("\nSeries的后6个元素:")
    print(random_data.tail(6))


def task2():
    # 姓氏列表
    surnames = ["赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈",
                "楮", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许",
                "何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏",
                "陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章",
                "云", "苏", "潘", "葛", "奚", "范", "彭", "郎", "鲁"]

    # 名字列表
    names = ["刚", "强", "伟", "勇", "宏", "杰", "明", "峰", "飞", "军",
             "创", "凯", "俊", "华", "兵", "龙", "良", "志", "威", "毅",
             "洪", "涛", "建", "民", "文", "亮", "新", "波", "贵", "忠"]

    # 随机生成50个名字
    random_names = [random.choice(surnames) + random.choice(names) for _ in range(50)]

    # 创建包含名字的Series
    names_series = pd.Series(random_names)

    # 统计含有“刚”字的名字个数
    count_gang_names = names_series.str.count("刚").sum()

    # 输出结果
    print("50个随机名字:")
    print(names_series)
    print("\n含有“刚”字的名字个数:", count_gang_names)


def task3():
    # 创建一个包含5000个同学的姓名数据
    def generate_names(n):
        first_names = ['张', '王', '李', '赵', '刘', '陈', '杨', '黄', '吴', '赖']
        last_names = ['明', '伟', '芳', '刚', '婷', '华', '强', '亮', '艳', '静']
        names = [f"{np.random.choice(first_names)}{np.random.choice(last_names)}" for _ in range(n)]
        return names

    data = {
        '姓名': generate_names(5000),
        '高等数学': np.random.randint(60, 101, 5000),
        '大学英语': np.random.randint(60, 101, 5000),
        '操作系统': np.random.randint(60, 101, 5000),
        'Python语言': np.random.randint(60, 101, 5000),
        '计算机组成原理': np.random.randint(60, 101, 5000)
    }

    # 创建数据框
    df = pd.DataFrame(data)

    # 保存到Excel文件
    df.to_excel('myedu.xlsx', sheet_name='厦门未来学院', index=False)

    print("数据已成功保存到myedu.xlsx文件。")


# 生成随机姓名数据
def generate_names(num_names):
    names = []
    for i in range(num_names):
        names.append(f'Student {i + 1}')
    return names


# 生成随机成绩数据
def generate_grades(num_students, num_courses):
    return np.random.randint(0, 101, size=(num_students, num_courses))


def task4():
    # 定义班级数和每班同学数
    num_classes = 500
    students_per_class = 50

    # 创建一个Pandas DataFrame并存储为Excel文件
    writer = pd.ExcelWriter('myedu1.xlsx', engine='xlsxwriter')

    for i in range(num_classes):
        class_name = f'{i + 1}班'
        names = generate_names(students_per_class)
        grades = generate_grades(students_per_class, 5)

        data = {
            '姓名': names,
            '高等数学': grades[:, 0],
            '大学英语': grades[:, 1],
            '操作系统': grades[:, 2],
            'Python语言': grades[:, 3],
            '计算机组成原理': grades[:, 4]
        }

        df = pd.DataFrame(data)
        df.to_excel(writer, sheet_name=class_name, index=False)

    writer.save()


if __name__ == '__main__':
    task1()
    task2()
    task3()
    task4()

标签:04,Series,random,pandas,可视化,names,print,data,Pandas
From: https://www.cnblogs.com/IvanKK/p/17936725

相关文章

  • 大数据分析与可视化 之 实验01 Python爬虫
    实验01Python爬虫实验学时:2学时实验类型:验证实验要求:必修一、实验目的理解爬虫技术掌握正则表达式、网络编程掌握re、socket、urllib、requests、lxml模块及其函数的使用二、实验要求 分析所需爬取信息网页的源代码,使用re、socket、urllib、requests、lxml模块及其函......
  • 04VS+QT PCIE测速软件
    软件版本:vitis2021.1(vivado2021.1)操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!4.1概述经过前面章节的学习,如果读者应该已经掌握了PCIEXDMA方案的使用,那么我们知道QT可以设计出华丽的界面,那么本章......
  • 【Python爬虫课程设计】rottentomatoes爬取+数据可视化
    一、选题背景选择此选题的原因是为了进行电影数据的分析。电影作为一种重要的文化娱乐形式,对社会、经济和文化等方面都有着重要的影响。通过对电影数据的分析,可以揭示电影产业的发展趋势、观众喜好、电影市场的竞争情况等,为电影行业的决策制定提供依据。二、主题式网络爬虫设计......
  • 代码随想录day04 两两交换链表中的节点 删除链表的倒数第N个节点 链表相交 环形链表
    两两交换链表中的节点题目:这题画一下链表会比较清晰写写画画指针位置很快就可以写出来一开始以为一个tmp就够用了写着写着发现需要多一个代码:删除链表的倒数第N个节点:没什么思路只好先看看视频思路视频思路很简单也很清晰只需要两个指针一快一慢两指针的间......
  • 【Python数据爬取课程设计】数据爬取—京东手机品牌信息数据爬取和数据分析与可视化
    一、选题的背景随着互联网的快速发展,大数据已经成为各行各业决策的重要依据。在电商领域,京东作为国内领先的电商平台,积累了大量的用户购买数据。这些数据中蕴含着丰富的品牌信息,对于手机品牌来说,分析这些数据可以帮助他们更好地了解市场趋势、消费者需求以及竞品情况。然而,目......
  • [软件测试] 04 白盒 静态测试 习题
    提示:篇幅较长,可以使用Ctrl+F,在页面中快速查询关键词(或者你要找的题目)并跳转到指定的位置。关键词:白盒测试,静态测试判断题静态测试只能通过手工方式进行。答案:错误静态分析既可以发现程序中的语法错误,也可以检查和判定程序中的逻辑错误。答案:正确通过静态分析能够......
  • 【Python高级应用课程设计】——腾讯课堂爬虫数据可视化
    一、选题背景随着互联网的快速发展,在线教育已经成为越来越多人获取知识和技能的重要途径。其中,腾讯课堂作为国内知名的在线教育平台之一,提供了丰富的课程资源和学习机会。然而,对于广大学习者来说,如何快速有效地获取和筛选这些课程信息是一个重要的问题。此外,对于教育机构和课程提......
  • 【python爬虫课程设计】达多多抖音电商——爬虫+大数据分析可视化
    一、选题背景随着社交媒体的发展和智能手机的普及,抖音已经成为了全球最受欢迎的短视频平台之一。越来越多的用户通过抖音平台进行商品的选购和交易,使得抖音电商成为了一个热门的话题。因此,通过对抖音电商的爬虫分析,可以深入了解用户的购物偏好、热门商品和行业趋势,为电商平台和品......
  • 04 AXI4总线axi-full-slave
    软件版本:vitis2021.1(vivado2021.1)操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!1概述使用XILINX的软件工具VIVADO以及XILINX的7代以上的FPGA或者SOC掌握AXI-4总线结束,并且可以灵活使用AXI-4总线技......
  • 3-1-04 FPGA使用fdma读写DDR
    软件版本:vitis2021.1(vivado2021.1)操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!4.1概述    在前文的实验中我们详细介绍了FDMA的使用方法,前面一节课演示了FDMA读写AXI-BRAM,本文我们继续使用FDM......