Python数据分析作业二:Pandas库的使用


一、前言

  Pandas(Python Data Analysis Library)是基于是基于 NumPy 的数据分析模块,它提供了大量标准数据模型和高效操作大型数据集所需的工具,可以说 Pandas 是使得 Python 能够成为高效且强大的数据分析环境的重要因素之一。

  Pandas 有三个基本对象:Series、DataFrame 和 Index。其中,Series 和 DataFrame 是 Pandas 中最常用的两个对象,分别对应于一维和二维数据的处理(Pandas 还有对三维甚至多维数据处理的 Panel 对象,但不太常用)。而 Index 对象则用于为数据建立索引以方便数据操作。

:数据集“超市营业额2.xlsx”下载地址:
链接:https://pan.quark.cn/s/04f3970ec85e
提取码:h9Hd

二、题目及答案解析

1、读取“超市营业额2.xlsx”中的数据,存入一个名为df的DataFrame对象中并显示前5行数据

import pandas as pd
df = pd.read_excel('超市营业额2.xlsx')
df.head()

在这里插入图片描述

2、查看交易额数据的总体统计情况

df['交易额'].describe()

描述性统计信息describe()方法通常包括总数、平均值、标准差、最小值、25th、50th(中位数)、75th 百分位数和最大值。

在这里插入图片描述

3、查看第1、3、5行中第2、4、6列的数据

df.iloc[[0,2,4],[1,3,5]]

使用位置索引.iloc方法从 DataFrame 中选择特定的行和列。[0, 2, 4]是行的索引,表示选择第1、第3和第5行,[1, 3, 5]是列的索引,表示选择第2、第4和第6列。

在这里插入图片描述

4、显示李四销售化妆品的情况

df.loc[(df['姓名']=='李四') & (df['柜台']=='化妆品'),:]
# df[(df['姓名'] == '李四') & (df['柜台'] == '化妆品')]

使用loc标签索引,且使用了花式索引,:表示所有列。

在这里插入图片描述

5、统计张三的上班次数

df.loc[df['姓名']=='张三','时段'].count()
# df[df['姓名']=='张三']['时段'].count()

使用.loc方法基于条件选择姓名为 ‘张三’ 的所有行,并且仅选择这些行中的 “时段” 列。然后,.count()方法用于计算满足条件的行数,即姓名为 ‘张三’ 的行中非空的 “时段” 列的数量。

38

6、统计上半月的总交易额

df.loc[df['日期'].between('2019-03-01','2019-03-15'),'交易额'].sum()
# df[(df['日期']>='2019-03-01') & (df['日期']<='2019-03-15')]['交易额'].sum()

使用.loc方法基于日期列的值在 ‘2019-03-01’ 和 ‘2019-03-15’ 之间的条件,选择相应的行。然后,它从这些行中的 “交易额” 列中提取数值,并使用.sum()方法计算这些值的总和。

161393.0

7、使用df中的数据分组统计每个人的交易额平均值(保留2位小数),将统计结果放入dff变量中并显示该结果

dff = df.groupby('姓名')['交易额'].mean().round(2)
dff

对 DataFrame 根据 “姓名” 列进行分组,并计算每个姓名对应的 “交易额” 列的平均值。然后,使用.round(2)方法将平均值保留两位小数。最后,将结果存储在新的 Series 对象dff中。dff是一个包含每个姓名对应的平均交易额的 Series,其中索引是姓名,值是平均交易额。

在这里插入图片描述

8、对dff中的交易额平均值进行降序排列

dff.sort_values(ascending=False)

在这里插入图片描述

9、使用df中的数据按类别统计每个人的交易总额

df.pivot_table(index='姓名', columns='柜台', values='交易额', aggfunc='sum')

使用pivot_table方法创建一个透视表,其中 “姓名” 列作为行索引,“柜台” 列作为列索引,“交易额” 列的值按照指定的聚合函数进行汇总。在这个例子中,使用的聚合函数是'sum',表示对 “交易额” 进行求和。

在这里插入图片描述

10、统计df中缺失值的个数

df.isnull().sum().sum()

使用.isnull()方法检查 DataFrame 中的每个单元格是否为空,并返回一个布尔值的 DataFrame,其中 True 表示相应的单元格为空,False 表示不为空。然后,使用.sum()方法两次对这个布尔值的 DataFrame 进行求和,第一次对每列求和,第二次对每行的结果再求和。

3

11、读取超市营业额2.xlsx中Sheet3中的数据,并与df中的数据合并,然后分类统计每人的交易额如下面所示

df2 = pd.read_excel('超市营业额2.xlsx',sheetname=2)    # sheetname='Sheet3'
df.merge(df2).groupby(['姓名','职级'])['交易额'].sum()

首先使用pd.read_excel函数从 Excel 文件中读取第三个工作表(或称为"Sheet3")的数据,并将其存储在名为df2的 DataFrame 中。然后,使用merge方法将dfdf2 DataFrame 进行合并,根据共同的列进行匹配。默认情况下,merge方法会根据两个 DataFrame 中的共同列进行内连接。最后,使用groupby方法将合并后的 DataFrame 按照 “姓名” 和 “职级” 进行分组,并计算每个组中 “交易额” 列的总和。

结果是一个包含姓名、职级和对应交易额总和的 Series,其中索引是多级索引,包括 “姓名” 和 “职级”,值是交易额的总和。

在这里插入图片描述

  • 32
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Francek Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值