python--实验15 数据分析与可视化

目录

知识点

1 数据分析概述

1.1流程

1.2定义

1.3数据分析常用工具

2 科学计算

2.1numpy

2.1.1定义

2.1.2创建数组的方式

2.1.3np.random的随机数函数

3 数据可视化

3.1定义

3.2基本思想

3.3Matplotlib库

3.3.1模块

4 数据分析

4.1Pandas

4.2数据结构

4.3基本使用

实验


知识点

  • 1 数据分析概述

    • 1.1流程:
      • 数据收集

      • 数据处理

      • 数据分析

      • 报告撰写

      • 数据展示

    • 1.2定义:使用统计方法分析大量数据,提取信息,形成结论。
    • 1.3数据分析常用工具
      • Numpy

        • 定义:Python数值计算扩展

        • 功能:存储处理大型矩阵,数组运算,数学函数库

        • ndarray:多维数组对象

        • 创建数组函数:array, zeros, ones, empty, arange, linspace, random.rand

        • 属性:ndim, shape, size, dtype, itemsize

        • 形状改变方法:reshape, resize, ravel, swapaxes, transpose

        • 随机数函数:rand, randn, randint, seed

        • 统计函数:sum, mean, average, std, var, min, max, argmin, argmax, unravel index, ptp, median

      • Matplotlib

        • 定义:Python数据可视化绘图模块

        • 功能:开源免费,易于嵌入

        • pyplot模块:类似MATLAB命令式绘图

        • 图表与风格控制函数:plot, boxplot, bar, barh, hist, pie, scatter, specgram, stackplot, step, violinplot, vlines, polar

      • Pandas

        • 定义:数据分析模块

        • 功能:数据处理、分析、展现

        • 数据结构:Series(一维数组),DataFrame(二维表格)

        • 基本属性:index, values, dtype, shape, size, columns

        • 基本使用:算术运算与数据对齐,IO操作,数据预处理,数据可视化

  • 2 科学计算

    • 2.1numpy
      • 2.1.1定义
        • NumPy(Numerical Python)是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库

          • ndarray,一个具有矢量运算和复杂广播能力的多维数组;

            • 组成

            • 创建adarray对象的函数

              • ndarray对象的常见属性

                • 改变数组形状的办法

          • 能够对整组数据进行快速运算,无需编写循环;

          • 线性代数、随机数生成以及傅里叶变换功能;

          • 用于集成由C、C++、Fortran等语言编写的代码API。

      • 2.1.2创建数组的方式
        • array()

        • ones()

        • arange()

      • 2.1.3np.random的随机数函数
      • 统计函数

      • 示例

  • 3 数据可视化

    • 3.1定义:将数字信息以图形图像形式呈现
    • 3.2基本思想:数据作为图元表示,构成图形,多维属性表示
    • 3.3Matplotlib库
      • 3.3.1模块
        • Python绘图模块——pyplot

          • pyplot 模块隶属于matplotlib绘图工具库

          • pyplot模块中封装了一套类似MATLAB命令式的绘图函数,用户只要调用pyplot模块中的函数,就可以快速绘图。

          • 引入方式

            • 函数表达

              • plot(x, y, fmt, * args,** kwargs )
                • 参数含义

                  • x和y参数用于接收x和y轴所用到的数据,可以是列表或numpy数组;

                  • fmt参数是可选的,用于控制组成线条的字符串,由颜色值字符、风格值字符和标记值字符组成。

          • 图标与风格控制

          • 绘图区域

      • 示例

        • import numpy as np
          import matplotlib.pyplot as plt
          plt.rcParams['font.sans-serif'] = ['SimHei']   # 设置显示中文字体
          plt.rcParams['axes.unicode_minus'] = False     # 设置正常显示符号
          data = np.arange(0, 1.1, 0.01)
          plt.title("曲线")        # 添加标题
          plt.xlabel("x")          # 添加x轴的名称
          plt.ylabel("y")          # 添加y轴的名称
          # 设置x和y轴的刻度
          plt.xticks([0, 0.5, 1])
          plt.yticks([0, 0.5, 1.0])
          plt.plot(data, data**2)              # 绘制y=x^2曲线
          plt.plot(data, data**3)              # 绘制y=x^3曲线
          plt.legend(["y=x^2", "y=x^3"])     # 添加图例
          plt.show()                           # 在本机上显示图形
          
  • 4 数据分析

    • 4.1Pandas简介:https://pandas.pydata.org/
      • pandas是专门为解决数据分析任务而建立的模块,它包含了与数据处理、数据分析和数据展现相关的功能。

    • 4.2数据结构:
      • Series:带标签的一维数组

          • Series表示一维数据,类似于一维数组,能够保存任意类型的数据,比如整型、浮点型等。Series由数据和与之相关的整数或标签(自定义)索引两部分组成,默认它会给每一项数据分配编号,编号的范围从0到N-1(N为长度) 。

        • 语法

      • DataFrame:带标签的二维表格

          • DataFrame类似于电子表格或数据库表,由行和列组成。DataFrame也可以视为一组共享行索引的Series对象,其结构示意如图所示。

        • 语法

      • 对象常见属性

    • 4.3基本使用:
      • 算术运算与数据对齐

        • pandas具有自动对齐的功能,它能够将两个数据结构的索引对齐。参与运算的两个数据结构的基础形状可以不同,具有的索引也可以不同。当pandas中的两个数据结构进行运算时,它们会自动寻找重叠的索引进行计算,若索引不重叠则自动赋值为NaN。若原来的数据都是整型,生成NaN以后会自动转换成浮点型。任何数与NaN计算的结果都为NaN。

      • IO操作:读取和写入文件

        • 常见的处理方式是将待分析的数据以文件的形式存储到本地,之后再对文件进行读写操作。pandas模块提供了一系列读写不同格式文件的函数和方法,关于这些函数和方法的说明如表所示。

      • 数据预处理:数据清洗、数据集成、数据变换、数据规约

        • 实际使用的数据一般具有不完整性、冗余性和模糊性,无法直接满足数据分析的要求。为了提高数据的质量,在进行数据分析之前,必须对原始数据做一定的预处理工作。

        • 数据预处理是整个数据分析过程中最为耗时的操作,使用经过规范化处理后的数据不但可以节约分析时间,而且可以保证分析结果能够更好起到决策和预测作用。

        • 示例

      • 数据可视化:绘制图形

        • matplotlib是众多Python可视化工具的鼻祖,但实现较为底层,画图步骤繁琐,需要很多基本组件。pandas是基于matplotlib的开源框架之一,直接使用其自身的绘图功能较matplotlib更加方便简单。Pandas内置数据类型绘制图形的常用方法如表所示。

        • 示例

          • #pandas的基本使用
            import numpy as np
            import pandas as pd
            import matplotlib.pyplot as plt
            #随机产生0~1之间的10行4列数据
            df = pd.DataFrame(np.random.rand(10,4),columns=['a','b','c','d'])
            #绘制柱状图
            df.plot(stacked=True,kind='bar')
            plt.show()
            
    • 示例

  • 小结

    • 掌握数据分析工具的使用方法

    • 使用工具分析数据的能力

实验

  • 实验目的:
  1. 了解什么是数据分析
  2. 熟悉numpy数组进行科学计算
  3. 掌握numpy、matplotlib、pandas模块的作用
  4. 熟悉matplotlib绘制图表、pandas库处理数据
  • 实验内容:

说明:基础题为必做题,提高题为选做题

1. (基础题)随机产生10行10列的矩阵(每个数的范围:100~1000),求最大值、最小值及最大最小值的差。(利用Numpy模块)

程序运行效果如下:

程序完整代码:

import numpy as np# 随机产生10行10列的矩阵,每个数的范围:100~1000
matrix = np.random.randint(100, 1001, size=(10, 10))# 求最大值、最小值及最大最小值的差
max_value = np.max(matrix)
min_value = np.min(matrix)
difference = max_value - min_valueprint("矩阵:")
print(matrix)
print("最大值:", max_value)
print("最小值:", min_value)
print("最大值与最小值的差:", difference)

2.(基础题)根据程序运行结果,补充代码。

 

import numpy as np
import matplotlib.pyplot as plt
nums = np.arange(0, 101)    # 生成0~100的数组
# 分成2*2的矩阵区域,占用编号为1的区域,即第1行第1列的子图
plt.subplot(2,1,1)
# 在选中的子图上作图
plt.plot(nums, nums)
# 分成2*2的矩阵区域,占用编号为2的区域,即第1行第2列的子图
______________________

# 在选中的子图上作图
______________________
______________________

import numpy as np
import matplotlib.pyplot as pltnums = np.arange(0, 101)    # 生成0~100的数组# 分成2*2的矩阵区域,占用编号为1的区域,即第1行第1列的子图
plt.subplot(2, 1, 1)
# 在选中的子图上作图
plt.plot(nums, nums)# 分成2*2的矩阵区域,占用编号为2的区域,即第1行第2列的子图
plt.subplot(2, 1, 2)
plt.plot(nums, nums ** 2)  # 绘制平方曲线
plt.ylabel('Square')      # y轴标签
plt.xlabel('Index')        # x轴标签

3(基础题).已知有如下一张表格:

按以下要求操作:

  1. 仿照以上表格结构,创建一个DataFrame对象。
  2. 将DataFrame的B列数据按照降序排列
  3. 将排序后的DataFrame写入到E盘test.csv文件中。

根据题目要求,补充代码。

import numpy as np

import pandas as pd

df_data = np.array([[1, 5, 8, 8], [2, 2, 4, 9],

                    [7, 4, 2, 3], [3, 0, 5, 2]])  # 创建数组

col_data = np.array(['A', 'B', 'C', 'D'])  # 创建数组

# 基于数组创建DataFrame对象

df_obj = pd.DataFrame(columns=___(1)______, data=___(2)____)

print(df_obj)

# 将B列数据降序排列

sorted_df = df_obj.sort_values(by=['B'], ascending=False)

print(sorted_df)

# 将sorted_df写入文件

sorted_df._____(3)_____(r'E:\write_data.csv')

print('写入完毕')

import numpy as np
import pandas as pddf_data = np.array([[1, 5, 8, 8], [2, 2, 4, 9], [7, 4, 2, 3], [3, 0, 5, 2]])  # 创建数组
col_data = np.array(['A', 'B', 'C', 'D'])  # 创建数组# 基于数组创建DataFrame对象
df_obj = pd.DataFrame(columns=col_data, data=df_data)print(df_obj)# 将B列数据降序排列
sorted_df = df_obj.sort_values(by=['B'], ascending=False)print(sorted_df)# 将sorted_df写入文件
sorted_df.to_csv(r'E:\test.csv', index=False)  # index=False表示不写入行索引
print('写入完毕')

4(基础题)现有如下所示的股票数据:

按以下要求操作:

  1. 仿照上图表格,创建一个DataFrame对象
  2. 使用条形图展示股票数据,其中证券简称为x轴,最新价为y轴。
  3. 将条形图以shares_bar.png为文件名保存在E盘。

根据题目要求,补充代码。

import pandas as pd

import matplotlib.pyplot as plt

stock_data = pd.DataFrame({'证券代码': ['000609', '000993', '002615',

                                '000795', '002766', '000971',

                                '000633', '300173', '300279', '000831'],

                            '证券简称': ['中迪投资', '闽东电力', '哈尔斯',

                                '英洛华', '索菱股份', '高升控股',

                                '合金投资', '智慧松德', '和晶科技', '五矿稀土'],

                            '最新价': [4.80, 4.80, 5.02, 3.93, 6.78,

                                            3.72, 4.60, 4.60, 5.81, 9.87],

                            '涨幅跌%': [10.09, 10.09, 10.09, 10.08,

                                    10.06, 10.06, 10.06, 10.05, 10.05, 10.04]})

print(stock_data)

plt.rcParams['font.sans-serif'] = ['SimHei']  # 正常显示中文标签

plt.rcParams['axes.unicode_minus'] = False    # 正常显示负号

x_axis = stock_data[___(1)______]#证券简称为x轴

y_axis = stock_data[___(2)______]#最新价为y轴

plt.___(3)______(x_axis, y_axis) #使用条形图展示股票数据

# 将条形图以shares_bar.png为文件名保存在E盘

plt.savefig(___(4)______)

plt.show()

import pandas as pd
import matplotlib.pyplot as pltstock_data = pd.DataFrame({'证券代码': ['000609', '000993', '002615','000795', '002766', '000971','000633', '300173', '300279', '000831'],'证券简称': ['中迪投资', '闽东电力', '哈尔斯','英洛华', '索菱股份', '高升控股','合金投资', '智慧松德', '和晶科技', '五矿稀土'],'最新价': [4.80, 4.80, 5.02, 3.93, 6.78,3.72, 4.60, 4.60, 5.81, 9.87],'涨幅跌%': [10.09, 10.09, 10.09, 10.08,10.06, 10.06, 10.06, 10.05, 10.05, 10.04]})print(stock_data)plt.rcParams['font.sans-serif'] = ['SimHei']  # 正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    # 正常显示负号x_axis = stock_data['证券简称']  # 证券简称为x轴
y_axis = stock_data['最新价']    # 最新价为y轴plt.bar(x_axis, y_axis)  # 使用条形图展示股票数据# 将条形图以shares_bar.png为文件名保存在E盘
plt.savefig(r'E:\shares_bar.png')plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/380286.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html+canvas 实现签名功能-手机触摸

手机上的效果图 需要注意&#xff0c;手机触摸和鼠标不是一个事件&#xff0c;不能通用&#xff0c;上一篇是关于使用鼠标的样例 相关代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewpo…

Large Language Model系列之一:语言模型与表征学习(Language Models and Representation Learning)

语言模型与表征学习&#xff08;Language Models and Representation Learning&#xff09; 1 语言模型 N-Gram模型 from collections import defaultdictsentences [The swift fox jumps over the lazy dog.,The swift river flows under the ancient bridge.,The swift br…

Java关于JDBC的理解

JDBC Java Database Connectivity&#xff1a;意为Java数据库连接。是Java提供的一组独立于任何数据库管理系统的API。Java提供接口规范&#xff0c;由各个数据库厂商提供接口的实现&#xff0c;厂商提供的实现类封装成jar文件&#xff0c;也就是我们俗称的数据库驱动jar包。我…

PyTorch张量数值计算

文章目录 1、张量基本运算2、阿达玛积3、点积运算4、指定运算设备⭐5、解决在GPU运行PyTorch的问题 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&am…

LDR6020:重塑iPad一体式有线键盘体验的创新力量

在移动办公与娱乐日益融合的时代&#xff0c;iPad凭借其强大的性能和便携性&#xff0c;成为了众多用户不可或缺的生产力工具。然而&#xff0c;为了进一步提升iPad的使用体验&#xff0c;一款高效、便捷的键盘成为了不可或缺的配件。今天&#xff0c;我们要介绍的&#xff0c;…

云计算复习--虚拟化技术

文章目录 虚拟化技术定义与原理虚拟机监视器&#xff08;VMM&#xff09;虚拟化技术服务器虚拟化存储虚拟化网络虚拟化应用虚拟化 关键技术新型虚拟化技术发展进展作业 虚拟化技术定义与原理 定义&#xff1a;虚拟化技术是一种将计算机物理实体&#xff08;如服务器、存储设备…

【BUG】已解决:OSError: [Errno 22] Invalid argument

已解决&#xff1a;OSError: [Errno 22] Invalid argument 目录 已解决&#xff1a;OSError: [Errno 22] Invalid argument 【常见模块错误】 错误原因&#xff1a; 解决方法如下&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&…

利用AI辅助制作ppt封面

如何利用AI辅助制作一个炫酷的PPT封面 标题使用镂空字背景替换为动态视频 标题使用镂空字 1.首先&#xff0c;新建一个空白的ppt页面&#xff0c;插入一张你认为符合主题的图片&#xff0c;占满整个可视页面。 2.其次&#xff0c;插入一个矩形&#xff0c;右键选择设置形状格式…

贝锐蒲公英远程运维方案:即装即用、无需专线,断网也可远程维护

目前&#xff0c;公路、隧道、桥梁、航道&#xff0c;甚至是施工现场和工业生产环境等&#xff0c;都采用了实时监测方案。 通过部署各类传感器和摄像头等设备&#xff0c;现场视频画面和控制单元&#xff08;如PLC、工控机等&#xff09;数据可以实时回传&#xff0c;用于集中…

智能优化算法之灰狼优化算法(GWO)

智能优化算法是一类基于自然界中生物、物理或社会现象的优化技术。这些算法通过模拟自然界中的一些智能行为&#xff0c;如遗传学、蚁群觅食、粒子群体运动等&#xff0c;来解决复杂的优化问题。智能优化算法广泛应用于各种工程和科学领域&#xff0c;因其具有全局搜索能力、鲁…

蚂蚁集团推出EchoMimic:能通过音频和面部标志生成逼真的肖像动画视频

蚂蚁集团最近推出了一项名为EchoMimic的新技术。能通过音频和面部标志生成逼真的肖像动画视频&#xff0c;让你的声音和面部动作被完美复制到视频中&#xff0c;效果自然如照镜子。 EchoMimic不仅可以单独使用音频或面部标志点生成肖像视频&#xff0c;也可以将两者结合&#…

【C++】16. set 和 map

在之前的博客中&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身。 我们这篇博客的内容是关联式容器&#xff…

在 Windows 上开发.NET MAUI 应用_1.安装开发环境

开发跨平台的本机 .NET Multi-platform App UI (.NET MAUI) 应用需要 Visual Studio 2022 17.8 或更高版本&#xff0c;或者具有 .NET MAUI 扩展的最新 Visual Studio Code。要开始在 Windows 上开发本机跨平台 .NET MAUI 应用&#xff0c;请按照安装步骤安装 Visual Studio 20…

对称加密与非对称加密

对称加密 对称加密指的是加密和解密使用同一个秘钥,所以叫对称加密。对称加密只有一个秘钥,称为私钥。 优点:算法公开、计算量小、加密速度快、效率高 缺点:数据传输前,发送方和接收方必须确定好秘钥,双方也必须要保存好秘钥。 常见对称加密算法: DES、3DES、AES、3…

【论文共读】【翻译】ShuffleNet v1:一种用于移动设备的极其高效的卷积神经网络

[原文地址] https://arxiv.org/pdf/1707.01083 [翻译] 0. 摘要 我们介绍了一种计算效率极高的CNN架构&#xff0c;称为ShuffleNet&#xff0c;该架构专为计算能力非常有限的移动设备&#xff08;例如&#xff0c;10-150 MFLOPs&#xff09;而设计。新架构利用了两个新操作&am…

STM32 CAN外设(基于STMF103C8T6)

STM32内置bxCAN外设&#xff08;CAN控制器)&#xff0c;支持CAN2.0A和2.0B&#xff0c;可以自动发送CAN报文和按照过滤器自动接收指定CAN报文&#xff0c;程序只需处理报文数据而无需关注总线的电平细节 波特率最高可达1兆位/秒3个可配置优先级的发送邮箱2个3级深度的接…

AI算法24-决策树C4.5算法

目录 决策树C4.5算法概述 决策树C4.5算法简介 决策树C4.5算法发展历史 决策树C4.5算法原理 信息熵&#xff08;Information Entropy&#xff09; 信息增益&#xff08;Information Gain&#xff09; 信息增益比&#xff08;Gain Ratio&#xff09; 决策树C4.5算法改进 …

【笔记:3D航路规划算法】一、随机搜索锚点(python实现,讲解思路)

目录 关键概念3D路径规划算法1. A*算法2. 快速随机锚点1. 初始化&#xff1a;2. 实例化搜索算法&#xff1a;3. 路径生成&#xff1a;4. 绘制图像&#xff1a; 3D路径规划是在三维空间中寻找从起点到终点的最短或最优路径的一种技术。它广泛应用于无人机导航、机器人运动规划、…

我去,怎么http全变https了

项目场景&#xff1a; 在公司做的一个某地可视化项目。 部署采用的是前后端分离部署&#xff0c;图片等静态资源请求一台minio服务器。 项目平台用的是http 图片资源的服务器用的是https 问题描述 在以https请求图片资源时&#xff0c;图片请求成功报200。 【现象1】: 继图…

阿里云DSW实例中安装并运行Neo4J

想尝试使用大模型对接Neo4J&#xff0c;在阿里云DSW实例中安装了Neo4J&#xff0c;却无法通过本地浏览器访问在DSW实例中运行的Neo4J。尝试了改neo4j.conf文件&#xff0c;以及添加专用网络的公共IP地址等方法&#xff0c;均没有成功。最后决定直接在服务器的命令行进行各种Cyp…