Pandas是Python中一个强大的数据分析库,它从数据操作到数据分析的多个阶段都有应用。Pandas 得到了NumPy和Matplotlib这两个重要的Python包的支持。本文将探索Pandas包及其在收入数据集上的各种函数。这些函数的使用将有效帮助进行数据探索。
在Pandas中,每个数据集都以表格格式表示,称为DataFrame。每个列中的值都有相同的数据类型,可以是文本或数字,但不同的列可以包含不同的数据类型。以下是将在本文中讨论的一些Pandas函数。
当第一次接收到一个新的数据集时,希望快速探索它并了解其内容。Pandas提供了几种方法来实现这一点。首先是head函数,它返回DataFrame的前几行。head函数用于查看数据集的前几行。
income_data.head()
输出结果展示了数据集中的前几行,包括姓名、年龄、性别、职业、收入和支出等列。
info函数突出显示数据集中的总行数、列名、它们的数据类型以及任何缺失值。它用于打印DataFrame的摘要。
income_data.info()
info函数显示了每列的非空值计数、数据类型等信息,这对于了解数据的性质非常重要。
describe方法计算数值列的一些摘要统计数据,如均值和中位数。“count”是非空值的数量。describe对于快速概览数值变量非常有用。
income_data.describe()
输出结果提供了年龄、收入和支出的统计摘要,包括均值、标准差、最小值、四分位数和最大值。
DataFrame的shape属性包含一个元组,其中包含行数和列数。由于这是一个属性而不是方法,不需要加括号。
income_data.shape
输出结果为(7,6),表示数据集有7行和6列。
DataFrame还有两个组成部分,即列和行的标签。columns属性包含列名,index属性包含行号或行名。
income_data.columns
income_data.index
输出结果展示了列名和行索引。
如果想将Python对象转换为特定的数据类型,可以使用astype()函数。当数据没有以正确的格式存储时,这个函数非常有用。
income_data['Income'] = income_data['Income'].astype('int')
执行后,收入列现在是整数列。
可以通过对行进行排序来改变行的顺序,使得最有趣的数据位于DataFrame的顶部。可以使用sort_values方法,传入想要排序的列名。
income_data.sort_values(['Age', 'Income'], ascending=[False, True]).head()
输出结果展示了按年龄和收入排序后的数据集的前几行。
value_counts()用于查看不同列中唯一值的计数。
income_data['Income'].value_counts()
输出结果展示了不同收入值的出现次数。
drop_duplicates()从数据集中移除重复的行。当数据集包含大量重复值时,这个函数非常重要。
income_data.drop_duplicates(inplace=True)
inplace=True意味着更改将应用于原始数据集。
有时可能只想选择一列。可以使用DataFrame的名称,后跟方括号和列名来实现。要选择多列,需要两对方括号。
idata_subsetcol = income_data[['Name', 'Age', 'Occupation']]
输出结果展示了所选列的子集。
在DataFrame中添加列可以通过多种方式实现,包括变异DataFrame、转换DataFrame和特征工程。
income_data['Savings'] = income_data['Income'] - income_data['Expenses']
执行后,创建了一个新的“储蓄”列,计算公式为(收入-支出)。
如果想将数据集中的任何列转换为其索引,可以通过set_index实现。
income_data_ind = income_data.set_index('Name')
执行后,将“姓名”列设置为索引列。
如果想移除索引,可以使用reset_index。
income_data_ind = income_data.reset_index()
执行后,将索引添加为一列。
使用loc和iloc,可以在DataFrame上执行几乎所有的数据选择操作。loc基于标签,意味着必须根据它们的行和列标签来指定行和列。iloc基于整数索引,所以必须通过它们的整数索引来指定行和列。
idata_loc = income_data.loc[(income_data.Age >= 32) & (income_data.Gender == 'Male')]
输出结果展示了满足条件的行。
Pandas的groupBy()函数用于根据某些预定义的标准将数据分割成组。
income_agg = income_data.groupby("Age")["Income"].mean()
inc_pivot = income_data.pivot_table('Age', index='Gender', columns='Occupation')