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

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

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库进行数据可视化,从而为进一步的机器学习应用做好必要的准备。

相关推荐

  1. 利用 Python 进行数据分析实验

    2024-04-28 06:22:02       61 阅读
  2. python pandas 数据预处理

    2024-04-28 06:22:02       56 阅读
  3. Python数据分析

    2024-04-28 06:22:02       38 阅读
  4. python数据处理分析库(

    2024-04-28 06:22:02       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-28 06:22:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-28 06:22:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-28 06:22:02       82 阅读
  4. Python语言-面向对象

    2024-04-28 06:22:02       91 阅读

热门阅读

  1. Phpstorm环境配置与应用

    2024-04-28 06:22:02       30 阅读
  2. 如何在 Mac 上配置一个本地 Web 服务器

    2024-04-28 06:22:02       28 阅读
  3. 安卓开发中服务(Service)的简单使用

    2024-04-28 06:22:02       31 阅读
  4. Kafka分区机制

    2024-04-28 06:22:02       36 阅读
  5. [iOS]APP优化

    2024-04-28 06:22:02       31 阅读