总结了14个Pandas函数,轻松进行数据处理

Pandas是Python数据分析的利器,也是各种数据建模的标准工具。本文带大家入门Pandas,将介绍Python语言、Python数据生态和Pandas的一些基本功能。

Pandas快速入门

1、安装导入

首先安装pandas库。打开“终端”并执行以下命令:

pip install pandas matplotlib
# 如网络慢,可指定国内源快速下载安装
pip install pandas matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple
# 引入 Pandas库,按惯例起别名pd
import pandas as pd

这样,我们就可以使用pd调用Pandas的所有功能了。

2、准备数据集

数据集(Data set或dataset),又称为资料集、数据集合或资料集合,是一种由数据组成的集合,可以简单理解成一个Excel表格。在分析处理数据时,我们要先了解数据集。对所持有数据各字段业务意义的理解是分析数据的前提。

总结了14个Pandas函数,轻松进行数据处理

这是学生季度成绩的汇总表(摘录),列如下所述。

  1. name:学生的姓名,这列没有重复值,一个学生一行,即一条数据,共100条。
  2. team:所在的团队、班级,这个数据会重复。
  3. Q1~Q4:各个季度的成绩,可能会有重复值。

3、读取数据

了解了数据集的意义后,我们将数据读取到Pandas里,变量名用df(DataFrame的缩写,后续会介绍),它是Pandas二维数据的基础结构。

import pandas as pd # 引入Pandas库,按惯例起别名pd

# 以下两种效果一样,如果是网址,它会自动将数据下载到内存
df = pd.read_excel('https://www.gairuo.com/file/data/dataset/team.xlsx')
df = pd.read_excel('team.xlsx') # 文件在notebook文件同一目录下
# 如果是CSV,使用pd.read_csv(),还支持很多类型的数据读取

总结了14个Pandas函数,轻松进行数据处理

在:

  • 自动增加了第一列,是Pandas为数据增加的索引,从0开始,程序不知道我们真正的业务索引,往往需要后面重新指定,使它有一定的业务意义;
  • 由于数据量大,自动隐藏了中间部分,只显示前后5条;
  • 行数和列数显示在底部。

4、查看数据

读取数据后,我们来查看数据:

df.head() # 查看前5条,括号里可以写明你想看的条数
df.tail() # 查看尾部5条
df.sample(5) # 随机查看5条

5、验证数据

拿到数据后,我们还需要验证数据是否加载正确,数据大小是否正常。下面是一些常用的代码,可以执行看看效果(一次一行):

df.shape # (100, 6) 查看行数和列数

df.info() # 查看索引、数据类型和内存信息

df.describe() # 查看数值型列的汇总统计

df.dtypes # 查看各字段类型

df.axes # 显示数据行和列名

df.columns # 列名

df.info()显示有数据类型、索引情况、行列数、各字段数据类型、内存占用等:

总结了14个Pandas函数,轻松进行数据处理

df.describe()会计算出各数字字段的总数(count)、平均数(mean)、标准差(std)、最小值(min)、四分位数和最大值(max):

总结了14个Pandas函数,轻松进行数据处理

6、建立索引

以上数据真正业务意义上的索引是name列,所以我们需要使它成为索引:

df.set_index('name', inplace=True) # 建立索引并生效

其中可选参数inplace=True会将指定好索引的数据再赋值给df使索引生效,否则索引不会生效。注意,这里并没有修改原Excel,从我们读取数据后就已经和它没有关系了,我们处理的是内存中的df变量。
将name建立索引后,就没有从0开始的数字索引了,如图4所示。

总结了14个Pandas函数,轻松进行数据处理

7、数据选取

接下来,我们像Excel那样,对数据做一些筛选操作。

(1)选择列

选择列的方法如下:

查看指定列

df['Q1']

df.Q1 # 同上,如果列名符合Python变量名要求,可使用

显示以下内容:

总结了14个Pandas函数,轻松进行数据处理

这里返回的是一个Series类型数据,可以理解为数列,它也是带索引的。之前建立的索引在这里发挥出了作用,否则我们的索引是一个数字,无法知道与之对应的是谁的数据。

您可以使用以下方法来选择多个列:

# 选择多列
df[['team', 'Q1']] # 只看这两列,注意括号
df.loc[:, ['team', 'Q1']] # 和上一行效果一样

(2)选择行

以下是选择行的方法:

# 用指定索引选取

df[df.index == 'Liver'] # 指定姓名

# 用自然索引选择,类似列表的切片
df[0:3] # 取前三行
df[0:10:2] # 在前10个中每两个取一个
df.iloc[:10,:] # 前10个

(3)指定行和列

给定行和列显示范围:

df.loc['Ben', 'Q1':'Q4'] # 只看Ben的四个季度成绩

df.loc['Eorge':'Alexander', 'team':'Q4'] # 指定行区间

(4)条件选择

按一定条件显示数据:

# 单一条件
df[df.Q1 > 90] # Q1列大于90的
df[df.team == 'C'] # team列为'C'的
df[df.index == 'Oscar'] # 指定索引即原数据中的name

# 组合条件
df[(df['Q1'] > 90) & (df['team'] == 'C')] # and关系
df[df['team'] == 'C'].loc[df.Q1>90] # 多重筛选

8、排序

Pandas的排序非常方便,示例如下:

df.sort_values(by='Q1') # 按Q1列数据升序排列
df.sort_values(by='Q1', ascending=False) # 降序
df.sort_values(['team', 'Q1'], ascending=[True, False]) # team升序,Q1降序

9、分组聚合

我们可以实现类似SQL的groupby那样的数据透视功能:

df.groupby('team').sum() # 按团队分组对应列相加
df.groupby('team').mean() # 按团队分组对应列求平均

# 不同列不同的计算方法
df.groupby('team').agg({'Q1': sum,  # 总和

                        'Q2': 'count', # 总数

                        'Q3':'mean', # 平均

                        'Q4': max}) # 最大值

统一聚合执行后的效果如图5所示。

总结了14个Pandas函数,轻松进行数据处理

10、数据转换

对数据表进行转置,对类似图6中的数据以A-Q1、E-Q4两点连成的折线为轴对数据进行翻转,效果如图7所示,不过我们这里仅用sum聚合。

df.groupby('team').sum().T

总结了14个Pandas函数,轻松进行数据处理

你也可以试试下面的代码看看有什么效果:

df.groupby('team').sum().stack()

df.groupby('team').sum().unstack()

11、增加列

用Pandas增加一列非常方便,就与新定义一个字典的键值一样。

df['one'] = 1 # 增加一个固定值的列

df['total'] = df.Q1 + df.Q2 + df.Q3 + df.Q4 # 增加总成绩列

# 将计算得来的结果赋值给新列

df['total'] = df.loc[:,'Q1':'Q4'].apply(lambda x:sum(x), axis=1)

df['total'] = df.sum(axis=1) # 可以把所有为数字的列相加

df['avg'] = df.total/4 # 增加平均成绩列

12、统计分析

根据您的数据分析目标,尝试使用以下函数,看看您能得出什么结论。

df.mean() # 返回所有列的均值

df.mean(1) # 返回所有行的均值,下同

df.corr() # 返回列与列之间的相关系数

df.count() # 返回每一列中的非空值的个数

df.max() # 返回每一列的最大值

df.min() # 返回每一列的最小值

df.median() # 返回每一列的中位数

df.std() # 返回每一列的标准差

df.var() # 方差

s.mode() # 众数

13、绘图

Pandas利用plot()调用Matplotlib快速绘制出数据可视化图形。注意,第一次使用plot()时可能需要执行两次才能显示图形。如图8所示,可以使用plot()快速绘制折线图。

import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('team.xlsx')
plt.plot(df['Q1'])
plt.show()

总结了14个Pandas函数,轻松进行数据处理

各Team四个季度总成绩趋势

df = pd.read_excel('team.xlsx')
plt.plot(df.groupby('team').sum().T)
plt.show()

总结了14个Pandas函数,轻松进行数据处理

各组人数比较

df = pd.read_excel('team.xlsx')
plt.pie(df.groupby('team').count()['Q1'])
plt.show()

总结了14个Pandas函数,轻松进行数据处理

14、导出

可以非常轻松地导出Excel和CSV文件。

df.to_excel('team-done.xlsx') # 导出 Excel文件
df.to_csv('team-done.csv') # 导出 CSV文件

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
社会演员多的头像社会演员多普通用户
上一篇 2022年4月10日 下午6:43
下一篇 2022年4月10日 下午6:59

相关推荐