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
方法将df
和df2
DataFrame 进行合并,根据共同的列进行匹配。默认情况下,merge
方法会根据两个 DataFrame 中的共同列进行内连接。最后,使用groupby
方法将合并后的 DataFrame 按照 “姓名” 和 “职级” 进行分组,并计算每个组中 “交易额” 列的总和。
结果是一个包含姓名、职级和对应交易额总和的 Series,其中索引是多级索引,包括 “姓名” 和 “职级”,值是交易额的总和。