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)
英格兰数据框看起来像这样,意大利数据框看起来像这样。
让开始合并两个数据框。“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"])
结果看起来像这样:
条件语句基本上为数据框列定义了条件。可能有这样的情况,必须通过应用某些列条件(数值或非数值)来过滤各种数据。例如:在一个员工数据框中,可能需要列出一批薪水超过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值。
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上联系:。电子邮件: | 。