Python数据分析最重要的13个Pandas函数

本文详细介绍了Python中Pandas库的13个核心函数,如读写CSV、数据描述、数据清洗、数据处理等,帮助数据分析师和科学家高效处理和分析数据。
摘要由CSDN通过智能技术生成

介绍

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.550000
1罗希特23新德里德里1997年9月19日男性39.085000
2比姆拉35罗赫塔克哈里亚纳邦1985年9月1日女性39.720000
3拉胡尔25加尔各答西孟加拉邦1995年9月19日男性36.540000
4查曼32钦奈泰米尔纳德邦1988年3月12日男性41.165000
5维韦克38古鲁格拉姆哈里亚纳邦1982年6月22日男性38.935000

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

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

3. describe()

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

data_1.describe()

输出:

年龄城市温度薪水
数数9.0000008.0000009.000000
意思是32.00000038.57500044444.444444
标准5.8949131.77180321360.659582
分钟23.00000035.50000018000.000000
25%29.00000038.30000035000.000000
50%32.00000038.95000040000.000000
75%38.00000039.17500052000.000000
最大限度39.00000041.10000085000.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.550000
2比姆拉35罗赫塔克哈里亚纳邦1985-09-01女性39.720000
4查曼32钦奈泰米尔纳德邦1988-12-03男性41.165000
6查鲁29新德里德里1992-03-18女性39.052000
7加内什39巴特那比哈尔邦1981-07-12男性18000
3拉胡尔25加尔各答西孟加拉邦1995-09-19男性36.540000
1罗希特23新德里德里1997-09-19男性39.085000
5维韦克38古鲁格拉姆哈里亚纳邦1982年6月22日男性38.935000

您可以看到记录的顺序现在已更改。记录现在按名称的字母顺序列出。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”条目。缺失值可以用平均值、中位数、众数或其他值来估算。我们为我们的案例选择了均值。

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值