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

目录


一、实验目的与要求

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下载地址:下载数据集

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

python 复制代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

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

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

python 复制代码
chipo = pd.read_csv("chipotle.csv")
chipo.head(10)

2、获取chipo数据框中每列的数据类型

python 复制代码
chipo.dtypes

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

python 复制代码
chipo['quantity'].sum()
复制代码
4972

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

python 复制代码
chipo['order_id'].nunique()
复制代码
1834

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

python 复制代码
chipo[chipo['quantity'] > 3][['order_id', 'quantity', 'item_name']]

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

python 复制代码
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个订单

python 复制代码
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字段缺失的商品名称及其订单编号

python 复制代码
chipo[chipo['choice_description'].isnull()][['order_id','item_name']]

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

python 复制代码
chipo['item_price'] = chipo['item_price'].apply(lambda x: float(x[1:]))
chipo.head()

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

python 复制代码
# 计算单价(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
python 复制代码
# 计算总销售额最多的前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、找出单价最高的商品

python 复制代码
chipo.sort_values(by='item_price', ascending=False).iloc[0]

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

python 复制代码
average_prices = chipo.groupby('item_name')['item_price'].mean()
print(average_prices.nlargest(1))

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

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

python 复制代码
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、通过直方图统计幸存者中各年龄段中的人数

python 复制代码
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字段值表示舱位等级) 的存活率并通过柱形图加以展示

python 复制代码
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、以数据透视表形式展示不同等级舱位、不同性别的遇难者/幸存者人数

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

四、实验体会

  在本次实验中,我学习了如何使用Pandas和Matplotlib库进行数据预处理和可视化分析。通过完成各种任务,我掌握了使用Pandas读取CSV文件并将数据加载到DataFrame中,如何查看DataFrame中每列的数据类型以及如何获取数据的基本统计信息。学会了如何对数据进行筛选、查询和统计分析,例如计算订单数量、查询特定条件下的订单等。了解了如何处理缺失值,并将数据类型转换为适合分析的格式。

  使用Matplotlib库绘制了各种类型的图表,包括扇形图、直方图和柱形图,用于更直观地展示数据分布和关系。通过数据透视表的形式对数据进行了多维度的汇总和分析,帮助我更深入地理解数据之间的关联性。

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

相关推荐
YangYang9YangYan15 分钟前
2026年二本电子工程与信息技术专业就业数据分析实用指南
数据挖掘·数据分析
简~76821 分钟前
python for in循环不能遍历整数怎么解决
python·大学生
aiqianji38 分钟前
垂直专业的AI短篇小说写作软件有哪些特点?
人工智能·python
aqi001 小时前
15天学会AI应用开发(十三)上下文与RAG的阶段性总结
人工智能·python·大模型·ai编程·ai应用
程序员杰哥1 小时前
接口测试知识总结
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
大海变好AI1 小时前
专业的智能体算力架构高性价比品牌公司
python
江华森2 小时前
深入理解 Flask 实现原理
后端·python·flask
FriendshipT2 小时前
Ultralytics:解读SPPF模块
人工智能·pytorch·python·深度学习·目标检测
AOwhisky2 小时前
Python 基础语法(上篇 + 下篇)——综合自测题
linux·windows·python