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])/2plt.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.mzph.cn/diannao/4267.shtml

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

相关文章

linux kernel内存泄漏检测工具之slub debug

一、背景 slub debug 是一个debug集,聚焦于kmem_cache 分配机制的slub内存(比如kmalloc),这部分内存在内核中使用最频繁,slub debug其中有相当部分是用来处理内存踩踏,内存use after free 等异常的&#x…

创建electron,解决包清理的问题,解决镜像源卡住下载时间长

我的电脑用户名是Anyphasy,我的node.js安装在D:\developp\nodejss18.18.0 使用npm config get prefix查看node.js安装路径 npm config get prefix 创建electron 创建package.json文件,它里面记载了你的electron版本,项目描述,以及启动命令等信息 npm init -y 先查看你自己的…

禅道项目管理系统身份认证绕过漏洞

禅道项目管理系统身份认证绕过漏洞 1.漏洞描述 禅道项目管理软件是国产的开源项目管理软件,专注研发项目管理,内置需求管理、任务管理、bug管理、缺陷管理、用例管理、计划发布等功能,完整覆盖了研发项目管理的核心流程。 禅道项目管理系统…

手写一个RNN前向传播以及反向传播

前向传播 根据公式 st tanh (Uxt Wst-1 ba) ot softmax(Vst by ) m 3 词的个数 n 5 import numpy as np import tensorflow as tf # 单个cell 的前向传播过程 # 两个输入,x_t,s_prev,parameters def rnn_cell_forward(x_t,s_prev,parameter…

运算符重载(1)

1.加号运算符重载&#xff0c;这里用编译器统一的名称operator代替函数名 #include<iostream> using namespace std; //1.成员函数的加号重载 //2.全局函数的加号重载 class Person { public:Person() {};//1.成员函数的加号重载//Person operator(Person& p)//{// P…

前端HTML5学习2(新增多媒体标签,H5的兼容性处理)

前端HTML5学习2新增多媒体标签&#xff0c;H5的兼容性处理&#xff09; 分清标签和属性新增多媒体标签新增视频标签新增音频标签新增全局属性 H5的兼容性处理 分清标签和属性 标签&#xff08;HTML元素&#xff09;和属性&#xff0c;标签定义了内容的类型或结构&#xff0c;而…

k8s学习(三十七)centos下离线部署kubernetes1.30(高可用)

文章目录 准备工作1、升级操作系统内核1.1、查看操作系统和内核版本1.2、下载内核离线升级包1.3、升级内核1.4、确认内核版本 2、修改主机名/hosts文件2.1、修改主机名2.2、修改hosts文件 3、关闭防火墙4、关闭SELINUX配置5、时间同步5.1、下载NTP5.2、卸载5.3、安装5.4、配置5…

BPE、Wordpiece、Unigram、SpanBERT等Tokenizer细节总结

BPE(Byte Pair Encoding) GPT-2和Roberta用的是这种&#xff0c;不会产生[UNK]这个unknown字符 这部分部分摘录自https://martinlwx.github.io/zh-cn/the-bpe-tokenizer/ 看以下code例子就足够理解了&#xff0c;核心是维护self.merges&#xff08;维护一个pair->str的字…

[蓝桥杯2024]-Reverse:rc4解析(对称密码rc4)

无壳 查看ida 这里应该运行就可以得flag&#xff0c;但是这个程序不能直接点击运行 按照伪代码写exp 完整exp&#xff1a; keylist(gamelab) content[0xB6,0x42,0xB7,0xFC,0xF0,0xA2,0x5E,0xA9,0x3D,0x29,0x36,0x1F,0x54,0x29,0x72,0xA8, 0x63,0x32,0xF2,0x44,0x8B,0x85,0x…

如何在 Visual Studio 中通过 NuGet 添加包

在安装之前要先确定Nuget的包源是否有问题。 Visual Studio中怎样更改Nuget程序包源-CSDN博客 1.图形界面安装 打开您的项目&#xff0c;并在解决方案资源管理器中选择您的项目。单击“项目”菜单&#xff0c;然后选择“管理 NuGet 程序包”选项。在“NuGet 包管理器”窗口中…

详解如何品味品深茶的精髓

在众多的茶品牌中&#xff0c;品深茶以其独特的韵味和深厚的文化底蕴&#xff0c;赢得了众多茶友的喜爱。今天&#xff0c;让我们一同探寻品深茶的精髓&#xff0c;品味其独特的魅力。 品深茶&#xff0c;源自中国传统茶文化的精髓&#xff0c;承载着世代茶人的智慧与匠心。这…

03-MVC执行流程-参数解析与Model

重要组件 准备Model&#xff0c;Controller Configuration public class WebConfig {ControllerAdvicestatic class MyControllerAdvice {ModelAttribute("b")public String bar() {return "bar";}}Controllerstatic class Controller1 {ResponseStatus(H…

windows环境下安装Apache

首先apache官网下载地址&#xff1a;http://www.apachelounge.com/download/按照自己的电脑操作系统来安装 这里我安装的是win64 主版本是2.4的apache。 然后解压压缩包到一个全英文的路径下&#xff01;&#xff01;&#xff01;一定一定不要有中文 中文符号也不要有&#xff…

ansible-copy用法

目录 概述实践不带目录拷贝带目录拷贝 概述 ansible copy 常用用法举例 不带目录拷贝&#xff0c;拷贝的地址要写全 带目录拷贝&#xff0c;拷贝路径不要写在 dest 路径中 实践 不带目录拷贝 # with_fileglob 是 Ansible 中的一个循环关键字&#xff0c;用于处理文件通配符匹…

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

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

数字文旅重塑旅游发展新格局:以数字化转型为突破口,提升旅游服务的智能化水平,为游客带来全新的旅游体验

随着信息技术的迅猛发展&#xff0c;数字化已成为推动各行各业创新发展的重要力量。在旅游业领域&#xff0c;数字文旅的兴起正以其强大的驱动力&#xff0c;重塑旅游发展的新格局。数字文旅以数字化转型为突破口&#xff0c;通过提升旅游服务的智能化水平&#xff0c;为游客带…

HarmonyOS Next从入门到精通实战精品课

第一阶段&#xff1a;HarmonyOS Next星河版从入门到精通该阶段由HarmonyOS Next星河版本出发&#xff0c;介绍HarmonyOS Next版本应用开发基础概念&#xff0c;辅助学员快速上手新版本开发范式&#xff0c;共计42课时 第一天鸿蒙NEXT Mac版、Windows版【编辑器】和【模拟器】&a…

BootStrap详解

Bootstrap简介 什么是BootStrap&#xff1f; BootStrap来自Twitter&#xff0c;是目前最受欢迎的响应式前端框Bootstrap是基于HTML、CSS、JavaScript的&#xff0c;它简洁灵活&#xff0c;使得Web开发更加快捷 为什么使用Bootstrap&#xff1f; 移动设备优先&#xff1a;自…

Kafka 3.x.x 入门到精通(07)——Java应用场景——SpringBoot集成

Kafka 3.x.x 入门到精通&#xff08;07&#xff09;——Java应用场景——SpringBoot集成 4. Java应用场景——SpringBoot集成4.1 创建SpringBoot项目4.1.1 创建SpringBoot项目4.1.2 修改pom.xml文件4.1.3 在resources中增加application.yml文件 4.2 编写功能代码4.2.1 创建配置…

机器人-轨迹规划

旋转矩阵 旋转矩阵--R--一个3*3的矩阵&#xff0c;其每列的值时B坐标系在A坐标系上的投影值。 代表B坐标系相对于A坐标系的姿态。 旋转矩阵的转置矩阵 其实A相对于B的旋转矩阵就相当于把B的列放到行上就行。 视频 &#xff08;将矩阵的行列互换得到的新矩阵称为转置矩阵。&…