介绍

Python 是数据分析和数据科学中使用最广泛的语言之一。Python 很容易学习,拥有一个由学习者和讲师组成的优秀在线社区,并且拥有一些非常强大的以数据为中心的库。Pandas 是 Python 中用于数据分析和数据科学的最重要的库之一。

在本文中,我们将介绍 Python 中 13 个最重要和基本的 Pandas 函数以及每个数据分析师和数据科学家都必须了解的方法。

1.read_csv()

这是 Python 中最重要的 pandas 方法之一。read_csv() 函数有助于将逗号分隔值 (csv) 文件读取到 Pandas DataFrame 中。您所需要做的就是提及您希望其读取的文件的路径。它还可以读取由逗号以外的分隔符分隔的文件,例如 | 或选项卡。

# importing libraryimport pandas as pd
# reading the datasetdata_1 = pd.read_csv(r'blog_dataset.csv')

数据已从数据源读取到 Pandas DataFrame 中。您必须更改要读取的文件的路径。

to_csv() 函数的工作原理与 read_csv() 完全相反。它有助于将 Pandas DataFrame 或 Series 中包含的数据写入 csv 文件。read_csv() 和 to_csv() 是 Pandas 中最常用的函数之一,因为它们在从数据源读取数据时使用,并且了解它们非常重要。

2.head()

head(n) 用于返回数据集的前 n 行。默认情况下,df.head() 将返回 DataFrame 的前 5 行。如果您想要更多/更少的行数,可以将 n 指定为整数。

data_1.head(6)

输出:

姓名 年龄 城市 状态 出生日期 性别 城市温度 薪水
0 阿拉姆 29 印多尔 中央邦 1991年11月20日 男性 35.5 50000
1 罗希特 23 新德里 德里 1997年9月19日 男性 39.0 85000
2 比姆拉 35 罗赫塔克 哈里亚纳邦 1985年9月1日 女性 39.7 20000
3 拉胡尔 25 加尔各答 西孟加拉邦 1995年9月19日 男性 36.5 40000
4 查曼 32 钦奈 泰米尔纳德邦 1988年3月12日 男性 41.1 65000
5 维韦克 38 古鲁格拉姆 哈里亚纳邦 1982年6月22日 男性 38.9 35000

前 6 行(索引 0 到 5)按照预期作为输出返回。

tail() 与 head() 类似,返回数据集的最后 n 行。head() 和 tail() 帮助您快速浏览数据集,并检查数据是否已正确读入 DataFrame。

3. describe()

describe() 用于生成 Pandas DataFrame 或 Series 中数据的描述性统计数据。它总结了数据集的集中趋势和离散度。describe() 有助于快速概览数据集。

data_1.describe()

输出:

年龄 城市温度 薪水
数数 9.000000 8.000000 9.000000
意思是 32.000000 38.575000 44444.444444
标准 5.894913 1.771803 21360.659582
分钟 23.000000 35.500000 18000.000000
25% 29.000000 38.300000 35000.000000
50% 32.000000 38.950000 40000.000000
75% 38.000000 39.175000 52000.000000
最大限度 39.000000 41.100000 85000.000000

describe() 列出了数据集中所有数字列的不同描述性统计度量。通过为 include 属性分配值“all”,我们可以获得包含所有列的描述,包括那些包含分类信息的列。

4.memory_usage() 

memory_usage() 返回一个 Pandas Series,其中包含 Pandas DataFrame 中每列的内存使用情况(以字节为单位)。通过将 deep 属性指定为 True,我们可以了解每列实际占用的空间。

data_1.memory_usage(deep=True)

输出:

指数80
名称 559
72岁
城市578
州 584
出生603
性别553
城市温度 72
工资 72
数据类型:int64

每列的内存使用情况已作为 Pandas Series 的输出给出。了解 DataFrame 的内存使用情况非常重要,这样您就可以解决 Python 中的 MemoryError 等错误.

5.astype()

astype() 用于将 Python 对象转换为特定数据类型。如果您的数据未以正确的格式(数据类型)存储,它可能是一个非常有用的功能。例如,如果浮点数被 Python 误解为字符串,您可以使用 astype() 将它们转换回浮点数。或者,如果要将对象数据类型转换为类别,可以使用 astype()。

data_1['Gender'] = data_1.Gender.astype('category')

您可以通过使用 dtypes 属性查看数据集中所有列的数据类型来验证数据类型的更改。

6. loc[:]

loc[:] 有助于根据我们的要求访问数据集中的一组行和列,即数据集的一部分。例如,如果我们只想要数据集的最后 2 行和前 3 列,我们可以借助 loc[:] 访问它们。我们还可以根据标签而不是行号和列号来访问行和列。

data_1.loc[0:4, ['Name', 'Age', 'State']]

输出:

姓名 年龄 状态
0 阿拉姆 29 中央邦
1 罗希特 23 德里
2 比姆拉 35 哈里亚纳邦
3 拉胡尔 25 西孟加拉邦
4 查曼 32 泰米尔纳德邦

上面的代码将返回前 5 条客户记录的“Name”、“Age”和“State”列。请记住,Python 中的索引从 0 开始,并且 loc[:] 包含提到的两个值。因此 0:4 表示索引 0 到 4,两者都包括在内。

loc[:] 是 Pandas 中最强大的函数之一,是所有数据分析师和数据科学家必须了解的。

iloc[:] 的工作方式类似,只是 iloc[:] 不包含这两个值。因此 iloc[0:4] 将返回索引为 0、1、2 和 3 的行,而 loc[0:4] 将返回索引为 0、1、2、3 和 4 的行。

7. to_datetime()

to_datetime() 将 Python 对象转换为日期时间格式。它可以采用整数、浮点数、列表、Pandas Series 或 Pandas DataFrame 作为参数。当数据集具有时间序列值或日期时,to_datetime() 非常强大。

data_1['DOB'] = pd.to_datetime(data_1['DOB'])

DOB 列现已更改为 Pandas 数据时间格式。所有日期时间函数现在都可以应用于此列。

8. value_counts()

value_counts() 返回包含唯一值计数的 Pandas Series。考虑一个数据集,其中包含有关公司 5,000 名客户的客户信息。value_counts() 将帮助我们识别系列中每个唯一值的出现次数。它可以应用于包含州、就业行业或客户年龄等数据的列。

data_1['状态'].value_counts()

输出:

哈里亚纳邦 3
德里 2
西孟加拉邦 1
泰米尔纳德邦 1
比哈尔邦 1
中央邦 1
名称:状态,数据类型:int64

正如预期的那样,数据集中每个状态的出现次数已在输出中返回。value_counts() 还可用于绘制分类数据和序数数据的条形图。

data_1['State'].value_counts(normalize=True).plot(kind='bar', title='State')

9. drop_duplicates()

drop_duplicates() 返回删除了重复行的 Pandas DataFrame。即使在重复项中,也可以选择保留重复项的第一次出现(记录)或最后一次出现。您还可以指定 inplace 和ignore_index 属性。

data_1.drop_duplicates(inplace=True)

inplace=True 确保更改应用于原始数据集。您可以通过查看原始数据集的形状和修改后的数据集(删除重复项后)来验证更改。您会注意到行数已从 9 行减少到 8 行(因为删除了 1 个重复项)。

10. groupby()

groupby() 用于按 1 列或多列对 Pandas DataFrame 进行分组,并对其执行一些数学运算。groupby() 可以用来以简单的方式汇总数据。

data_1.groupby(by='State').Salary.mean()

输出:

状态
比哈尔邦 18000
德里 68500
哈里亚纳邦 27500
中央邦 50000
泰米尔纳德邦 65000
西孟加拉邦 40000
名称:工资,dtype:int64

上面的代码将按“州”列对数据集进行分组,并将返回各州的平均年龄。

11. merge()

merge() 用于在公共列(字段)上合并 2 个 Pandas DataFrame 对象或一个 DataFrame 和一个 Series 对象。如果你熟悉SQL中JOIN的概念,合并功能与此类似。它返回合并的 DataFrame。

data_1.merge(data_2, on='Name', how='left')

12. sort_values() 

sort_values() 用于按升序或降序对 Pandas DataFrame(或 Pandas Series)中的列进行排序。通过将inplace属性指定为True,可以直接在原始DataFrame中进行更改。

data_1.sort_values(by='Name', inplace=True)

输出:

姓名 年龄 城市 状态 出生日期 性别 城市温度 薪水
0 阿拉姆 29 印多尔 中央邦 1991-11-20 男性 35.5 50000
2 比姆拉 35 罗赫塔克 哈里亚纳邦 1985-09-01 女性 39.7 20000
4 查曼 32 钦奈 泰米尔纳德邦 1988-12-03 男性 41.1 65000
6 查鲁 29 新德里 德里 1992-03-18 女性 39.0 52000
7 加内什 39 巴特那 比哈尔邦 1981-07-12 男性 18000
3 拉胡尔 25 加尔各答 西孟加拉邦 1995-09-19 男性 36.5 40000
1 罗希特 23 新德里 德里 1997-09-19 男性 39.0 85000
5 维韦克 38 古鲁格拉姆 哈里亚纳邦 1982年6月22日 男性 38.9 35000

您可以看到记录的顺序现在已更改。记录现在按名称的字母顺序列出。sort_values() 还有许多其他可以指定的属性。

与sort_values()类似的是sort_index()。它用于按索引而不是列值对 DataFrame 进行排序。

13. fillna() 

通常,在大型数据集中,您会发现多个被 Python 标记为 NaN 的条目。NaN 代表“不是数字”,表示原始数据源中未填充的条目。在填充 DataFrame 中的值时,Pandas 确保用户可以单独识别这些条目。

fillna() 通过将这些缺失值替换为更合适的值,帮助替换 DataFrame 或 Series 中的所有 NaN 值。

data_1['City temp'].fillna(38.5, inplace=True)

上面的代码将用 38.5 替换所有空白的“City temp”条目。缺失值可以用平均值、中位数、众数或其他值来估算。我们为我们的案例选择了均值。

以上就是本次分享的内容,感谢大家支持。您的点赞、收藏、关注是我创作的动力。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐