Pandas 数据科学库的实用操作

Pandas 是Python中一个广受欢迎且功能强大的数据科学库。对于任何倾向于使用Python进行编码的有抱负的数据科学家来说,它可以被视为一块垫脚石。尽管这个库很容易上手,但它确实能够执行各种数据操作。这使得Pandas成为开发者社区中最方便的数据科学库之一。Pandas基本上允许对大型数据集和数据框进行操作。它也可以被认为是用于表格数据数学计算的最高效的统计工具之一。

今天,将介绍一些在Pandas中最常用和反复出现的操作。不要误会,Pandas有大量的实现和前景。这里只尝试覆盖一些值得注意的方面。将使用2020年欧洲杯的类比来完成这个教程。将从创建自己的最小数据集开始。

创建小型数据集

让开始创建一个小型样本数据集,尝试使用Pandas进行各种操作。在这个教程中,将创建一个足球数据框,存储来自2020年欧洲杯决赛选手——英格兰和意大利的各4名球员的记录。

import pandas as pd # 创建球队数据 data_england = {'Name': ['Kane', 'Sterling', 'Saka', 'Maguire'], 'Age': [27, 26, 19, 28]} data_italy = {'Name': ['Immobile', 'Insigne', 'Chiellini', 'Chiesa'], 'Age': [31, 30, 36, 23]} # 创建数据框 df_england = pd.DataFrame(data_england) df_italy = pd.DataFrame(data_italy)

英格兰数据框看起来像这样,意大利数据框看起来像这样。

concat() 函数

让开始合并两个数据框。“concatenate”这个词意味着“串联在一起”。现在已经创建了两个数据框,让尝试将它们“concat”在一起。通过实现concat()函数来做到这一点。

frames = [df_england, df_italy] both_teams = pd.concat(frames) both_teams

结果看起来像这样:一个类似的操作也可以使用append()函数完成。试试这样做:

df_england.append(df_italy)

会得到相同的结果!现在,想象一下想要用这些球员所属的国家来标记原始数据框。可以通过为数据框设置特定的键来做到这一点。试试这样做:

pd.concat(frames, keys=["England", "Italy"])

结果看起来像这样:

在Pandas中设置条件

条件语句基本上为数据框列定义了条件。可能有这样的情况,必须通过应用某些列条件(数值或非数值)来过滤各种数据。例如:在一个员工数据框中,可能需要列出一批薪水超过50000卢比的人。也可能想要过滤住在新德里的人,或者名字以“A”开头的人。让看一个实践例子。

想象一下想要从队伍中过滤出经验丰富的球员。假设想要过滤那些年龄大于或等于30岁的球员。在这种情况下,试试这样做:

both_teams[both_teams["Age"] >= 30]

看起来意大利人更有经验的家伙。现在,让尝试做一些字符串过滤。想要过滤那些名字以“S”开头的球员。这个实现可以通过pandas的startswith()函数来完成。试试这样做:

both_teams[both_teams["Name"].str.startswith('S')]

令人印象深刻!

添加新列

让尝试向df_england数据框添加更多数据。

club = ['Tottenham', 'Man City', 'Arsenal', 'Man Utd'] # 'Associated Club'是新列名 df_england['Associated Clubs'] = club df_england

这将在英格兰的数据框中添加一个名为‘Associated Club’的新列。

填充NaN与字符串

现在,如果不想用NaN,而是想包含一些其他文本怎么办?试试添加“没有找到记录”而不是NaN值。

both_teams['Associated Clubs'].fillna('No Data Found', inplace=True) both_teams

很酷!

在Pandas中排序操作是直接的。排序基本上允许数据框按数字或字母(无论是升序还是降序)排序。让尝试根据球员的名字排序。

both_teams.sort_values('Name')

通过实现sort_values()函数,按球员的名字对数据框进行了排序。让按年龄排序:

both_teams.sort_values('Age')

啊,是的!阿森纳的Bukayo Saka是最年轻的家伙!

也可以按最年长的球员排序吗?当然可以!

both_teams.sort_values('Age', ascending=False)

Pandas “groupby”

分组可以说是Pandas最重要的特性。groupby()函数简单地对某一列进行分组。让通过创建一个新的数据框来看一个简单的例子。

a = { 'UserID': ['U1001', 'U1002', 'U1001', 'U1001', 'U1003'], 'Transaction': [500, 300, 200, 300, 700] } df_a = pd.DataFrame(a) df_a

注意,有两个列——UserID和Transaction。也可以看到一个重复的UserID(U1001)。让对它应用groupby()函数。

df_a.groupby('UserID').sum()

函数将相似的UserID分组,并计算这些ID的总和。如果想解开一个特定的UserID,只需通过get_group()提到值名即可。

df_a.groupby('UserID').get_group('U1001')

就是这样分组UserID,还检查了一个特定的ID名。

本文提到的内容只是冰山一角。正如所提到的,Pandas是一个功能强大且全面的库,拥有大量的功能。可以查看重要的Pandas备忘单或者遇到一个全面的文章。

关于:好!叫Akash,已经作为Python开发者工作了4年多。在职业生涯中,最初是尼泊尔最大的求职门户网站Merojob的初级Python开发者。后来,参与了尼泊尔第一家拼车公司Tootle的数据分析和研究。目前,一直在积极参与一些有趣的数据科学以及Web开发项目。至于Web框架,这些天大多使用Django。

可以在GitHub上找到其他项目:,或者在LinkedIn上联系:。电子邮件: | 。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485