Python数据分析实验二:Python数据预处理

目录

    • 一、实验目的与要求
    • 二、实验任务
    • 三、主要程序清单和运行结果
      • (一)对chipotle.csv文件的销售数据进行分析
      • (二)对描述泰坦尼克号成员的信息进行可视化和相关分析
    • 四、实验体会


一、实验目的与要求

1、目的:
  掌握数据预处理和分析的常用库Pandas的基本用法,学生能应用Pandas库实现对数据的有效查询、统计分析,以及进行必要的数据预处理;能使用Matplotlib库进行数据可视化,从而为进一步的机器学习应用做好必要的准备。

2、要求:
  (1)应用Pandas库对于给定的销售数据集进行必要的数据预处理和统计分析;(2)应用Matplotlib库对描述泰坦尼克号成员的信息进行必要的可视化展示。

二、实验任务

使用Pandas和Matplotlib库分别完成以下要求:

  1. 把包含销售数据的chipotle.csv文件内容读取到一个名为chipo的数据框中,并显示该文件的前10行记录
  2. 获取chipo数据框中每列的数据类型
  3. 获取数据框chipo中所有订单购买商品的总数量
  4. 给出数据框chipo中包含的订单数量
  5. 查询出购买同一种商品数量超过3个的所有订单
  6. 查询出同时购买‘Chicken Bowl’和’Chicken Soft Tacos’商品的所有订单
  7. 找出购买商品数量最多的5个订单
  8. 找出choice_description字段缺失的商品名称及其订单编号
  9. 将item_price列的数据转换为浮点数类型
  10. 找出销售额最多的前5个订单
  11. 找出单价最高的商品
  12. 找出平均单价最高的商品打开描述泰坦尼克号成员的信息train.csv文件,把其内容读入到一个
  13. 名为titanic的数据框中,并绘制一个展示幸存者 (Survived字段值为1) 中男女乘客比例的扇形图
  14. 通过直方图统计幸存者中各年龄段中的人数
  15. 统计不同等级舱位 (通过Pclass字段值表示舱位等级) 的存活率并通过柱形图加以展示
  16. 以数据透视表形式展示不同等级舱位、不同性别的遇难者/幸存者人数

本实验所需的数据集chipotle.csvtrain.csv下载地址:下载数据集

三、主要程序清单和运行结果

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

(一)对chipotle.csv文件的销售数据进行分析

1、把包含销售数据的chipotle.csv文件内容读取到一个名为chipo的数据框中,并显示该文件的前10行记录

chipo = pd.read_csv("chipotle.csv")
chipo.head(10)

在这里插入图片描述
2、获取chipo数据框中每列的数据类型

chipo.dtypes

在这里插入图片描述

3、获取数据框chipo中所有订单购买商品的总数量

chipo['quantity'].sum()
4972

4、给出数据框chipo中包含的订单数量

chipo['order_id'].nunique()
1834

5、查询出购买同一种商品数量超过3个的所有订单

chipo[chipo['quantity'] > 3][['order_id', 'quantity', 'item_name']]

在这里插入图片描述

6、查询出同时购买‘Chicken Bowl’Chicken Soft Tacos'商品的所有订单

df1 = chipo.loc[chipo['item_name']=='Chicken Bowl',["order_id","item_name"]]
df2 = chipo.loc[chipo['item_name']=='Chicken Soft Tacos',["order_id","item_name"]]
df3 = df1.merge(df2,on="order_id")
df3.drop_duplicates()

在这里插入图片描述

7、找出购买商品数量最多的5个订单

top_orders = chipo.groupby('order_id')['quantity'].sum()
top_5_quantity = top_orders.nlargest(5)
top_5_quantity_df = top_5_quantity.reset_index()
top_5_quantity_df.set_index('order_id',inplace=True)
top_5_quantity_df

在这里插入图片描述

8、找出choice_description字段缺失的商品名称及其订单编号

chipo[chipo['choice_description'].isnull()][['order_id','item_name']]

在这里插入图片描述

9、将item_price列的数据转换为浮点数类型

chipo['item_price'] = chipo['item_price'].apply(lambda x: float(x[1:]))
chipo.head()

在这里插入图片描述

10、找出销售额最多的前5个订单

# 计算单价(item_price)最多的前5个订单
top_orders = chipo.groupby('order_id')['item_price'].sum()
top_5_price = top_orders.nlargest(5)
top_5_price_df = top_5_price.reset_index()
top_5_price_df.set_index('order_id',inplace=True)
top_5_price_df

在这里插入图片描述

# 计算总销售额最多的前5个订单
chipo['total_sales'] = chipo['quantity'] * chipo['item_price']
top_5_price = chipo.groupby('order_id')['total_sales'].sum().nlargest(5)
top_5_price_df = top_5_price.reset_index()
top_5_price_df.set_index('order_id', inplace=True)
top_5_price_df

在这里插入图片描述

11、找出单价最高的商品

chipo.sort_values(by='item_price', ascending=False).iloc[0]

在这里插入图片描述

12、找出平均单价最高的商品

average_prices = chipo.groupby('item_name')['item_price'].mean()
print(average_prices.nlargest(1))

在这里插入图片描述

(二)对描述泰坦尼克号成员的信息进行可视化和相关分析

13、打开描述泰坦尼克号成员的信息train.csv文件,把其内容读入到一个名为titanic的数据框中,并绘制一个展示幸存者 (Survived字段值为1) 中男女乘客比例的扇形图

titanic = pd.read_csv("train.csv")
plt.rcParams['font.sans-serif']=['SimHei']
df4 = titanic[titanic['Survived'] == 1]['Sex'].value_counts()
plt.pie(df4, explode=(0,0.1), labels=['女性','男性'], colors=['r','g'], autopct='%1.1f%%', startangle=205)
plt.title("泰坦尼克号幸存者性别比例统计")
plt.axis("equal")
plt.show()

在这里插入图片描述

14、通过直方图统计幸存者中各年龄段中的人数

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title("幸存者年龄段人数统计")
df5 = titanic.loc[titanic["Survived"] == 1, 'Age']
n, bins, patches = plt.hist(df5, bins=9, range=(0, 90))
for i in range(len(n)):
	mid_point = bins[i]+(bins[i+1]-bins[i])/2
    plt.text(mid_point, n[i], str(int(n[i])), ha='center', va='bottom')
plt.show()

在这里插入图片描述

15、统计不同等级舱位 (通过Pclass字段值表示舱位等级) 的存活率并通过柱形图加以展示

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.title("不同等级的舱位幸存率")
df6 = titanic.groupby('Pclass')['Survived'].mean()
labels = ['1等舱','2等舱','3等舱']
position = np.arange(3)
plt.xticks(rotation=0)
plt.bar(left=position, height=df6, width=0.8, tick_label=labels)
for i,rate in enumerate(df6):
    plt.text(i, rate, f'{rate*100:.2f}%', ha='center', va='bottom')
plt.show()

在这里插入图片描述

16、以数据透视表形式展示不同等级舱位、不同性别的遇难者/幸存者人数

titanic.pivot_table(index='Survived',columns=['Pclass','Sex'],aggfunc='count',values="PassengerId")

在这里插入图片描述

四、实验体会

  在本次实验中,我学习了如何使用Pandas和Matplotlib库进行数据预处理和可视化分析。通过完成各种任务,我掌握了使用Pandas读取CSV文件并将数据加载到DataFrame中,如何查看DataFrame中每列的数据类型以及如何获取数据的基本统计信息。学会了如何对数据进行筛选、查询和统计分析,例如计算订单数量、查询特定条件下的订单等。了解了如何处理缺失值,并将数据类型转换为适合分析的格式。
  使用Matplotlib库绘制了各种类型的图表,包括扇形图、直方图和柱形图,用于更直观地展示数据分布和关系。通过数据透视表的形式对数据进行了多维度的汇总和分析,帮助我更深入地理解数据之间的关联性。
  通过这次实验,我不仅掌握数据预处理和分析的常用库Pandas的基本用法,能应用Pandas库实现对数据的有效查询、统计分析,以及进行必要的数据预处理;能使用Matplotlib库进行数据可视化,从而为进一步的机器学习应用做好必要的准备。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式与一致性协议之Paxos算法(二)

Paxos算法 如何达成共识 想象这样一个场景,某地出现突发事件,当地村委会、负责人等在积极研究和搜集解决该事件的解决方案,你也决定参与其中,提交提案,建议一些解决方法。为了和其他村民的提案做区分,你的…

eclipse 如何创建python文件

一、准备 1.平台要求: 电脑除了要安装eclipse软件和Python语言包之外,还需要将Python集成到eclipse软件中,网上有很多的方法,这里就不细细介绍如何集成了。 在下面界面中可以看到自己已经安装了继承插件。具体方法见步骤2&…

构建数字化银行:现代化总架构探究

随着科技的迅速发展和用户需求的不断变化,传统银行业正迎来一场数字化转型的浪潮。在这个数字化时代,银行需要构建现代化的总架构,以适应快速变化的市场环境和客户需求。本文将深入探讨数字化银行的总架构设计理念、关键技术以及实践经验&…

PotatoPie 4.0 实验教程(29) —— FPGA实现摄像头图像均值滤波处理

图像的均值滤波简介 图像均值滤波处理是一种常见的图像处理技术,用于降低图像中噪声的影响并平滑图像。该方法通过在图像中滑动一个固定大小的窗口(通常是一个正方形或矩形),将窗口中所有像素的值取平均来计算窗口中心像素的新值…

26.统一网关Gateway

网关的功能 1.身份认证,权限的校验。 2.服务的路由,负载均衡。用户请求被分配到哪一个微服务。一个微服务可以有多个实例,所以使用负载均衡。 3.请求限流。 springcloud网关实现有两种:gateway, zuul zuul是基于servlet实现的…

Vitis HLS 学习笔记--IDE软件高效操作指引

目录 1. 简介 2. 实用软件操作 2.1 C/RTL Cosimulation 选项 2.2 Do not show this dialog again 2.3 New Solution 2.4 对比 Solution 2.5 以命令行方式运行(windows) 2.6 文本缩放快捷键 2.7 查看和修改快捷键 2.8 将Vitis HLS RTL 导入 Viv…

YouTubeDNN模型

Deep Neural Networks for YouTube Recommendations YouTubeDNN模型是2016年的一篇文章,这篇文章给出了很多优化推荐系统中的工程性经验和trick,比如召回方面的"example age", “负采样”,“非对称消费,防止泄露”&…

MySQL/MariaDB 如何查看当前的用户

MySQL 的所有数据库用户信息是存储在 user 数据表中的。 可以在登录成功数据后运行 SQL: MariaDB [(none)]> select user,host from user;就可以查看到数据中的所有用户信息。 MariaDB [(none)]> select user,host from user; ERROR 1046 (3D000): No databa…

ReactJS中使用TypeScript

TypeScript TypeScript 实际上就是具有强类型的 JavaScript,可以对类型进行强校验,好处是代码阅读起来比较清晰,代码类型出现问题时,在编译时就可以发现,而不会在运行时由于类型的错误而导致报错。但是,从…

OpenHarmony实战开发-如何实现自定义绘制 (XComponent)

XComponent组件作为一种绘制组件,通常用于满足开发者较为复杂的自定义绘制需求,例如相机预览流的显示和游戏画面的绘制。 其可通过指定其type字段来实现不同的功能,主要有两个“surface”和“component”字段可供选择。 对于“surface”类型…

图像处理ASIC设计方法 笔记19 连通域标记ASIC系统设计

目录 核心的模块有:标记ASIC的工作流程如下:该芯片的系统结构具有如下特点:P131 第6章 连通域标记与轮廓跟踪 本章节讲述了多值分割图像连通域标记芯片的系统设计 多值分割图像连通域标记芯片(以下简称"标记芯片",也称"标记 ASIC"),完成图像连通域标…

OpenHarmony南向开发—如何快速上手GN

背景 最近在研究鸿蒙操作系统的开源项目OpenHarmony,该项目使用了GNNinja工具链进行配置,编译,于是开始研究GN如何使用。 本文的所有信息均来自GN官网和本人个人体会。 GN快速入门 使用GN GN的主要功能是根据配置文件(.gn, BU…

什么ISP是住宅IP,和普通IP有什么区别?

ISP(Internet Service Provider)即互联网服务提供商,是向广大用户综合提供互联网接入业务、信息业务和增值业务的电信运营商。住宅IP,也称为家庭IP,是指由ISP分配给家庭或个人用户的IP地址。这些IP地址是真实的&#x…

Eclipse 如何导入一个 Maven 项目

如果你的项目是 Maven 项目的话,导入的时候需要使用 Import,而不能使用打开项目的方式。 选择导入 选择导入 Maven 项目 然后选择 Maven 项目,开始导入。 选择目录后导入 然后选择你需要导入的目录后,单击导入。 Eclipse 如何导…

短视频生成背景文字工具(前端工具)

过年这两天有些无聊就刷刷抖音,刷着刷着自己也蠢蠢欲动,想发上几个,可是却找不到合适自己的模板。由于个人喜欢一些古诗文之类的,所以自己简单的编写了一个小工具,如下图: 当设置好了之后,将浏…

STM32 HAL库F103系列之IIC实验

IIC总线协议 IIC总线协议介绍 IIC:Inter Integrated Circuit,集成电路总线,是一种同步 串行 半双工通信总线。 总线就是传输数据通道 协议就是传输数据的规则 IIC总线结构图 ① 由时钟线SCL和数据线SDA组成,并且都接上拉电阻…

机器学习:深入解析SVM的核心概念(问题与解答篇)【一、间隔与支持向量】

直接阅读原始论文可能有点难和复杂,所以导师直接推荐我阅读周志华的《西瓜书》!!然后仔细阅读其中的第六章:支持向量机 间隔与支持向量 问题一:什么叫法向量?为什么是叫法向量 在这个线性方程中&#xff…

Apache Seata如何解决TCC 模式的幂等、悬挂和空回滚问题

title: 阿里 Seata 新版本终于解决了 TCC 模式的幂等、悬挂和空回滚问题 author: 朱晋君 keywords: [Seata、TCC、幂等、悬挂、空回滚] description: Seata 在 1.5.1 版本解决了 TCC 模式的幂等、悬挂和空回滚问题,这篇文章主要讲解 Seata 是怎么解决的。 今天来聊一…

SQLite尽如此轻量

众所周知,SQLite是个轻量级数据库,适用于中小型服务应用等,在我真正使用的时候才发现,它虽然轻量,但不知道它却如此轻量。 下载 官网: SQLite Download Page 安装 1、将下载好的两个压缩包同时解压到一个…

【Vue3+Tres 三维开发】02-Debug

预览 介绍 Debug 这里主要是讲在三维中的调试,同以前threejs中使用的lil-gui类似,TRESJS也提供了一套可视化参数调试的插件。使用方式和之前的组件相似。 使用 通过导入useTweakPane 即可 import { useTweakPane, OrbitControls } from "@tresjs/cientos"const {…