数据科学工作的20个Pandas函数(备忘)

news2024/11/24 0:22:05

Pandas 是数据科学社区中使用最广泛的库之一,它是一个强大的工具,可以进行数据操作、清理和分析。 本文将提供最常用的 Pandas 函数以及如何实际使用它们的样例。我们将涵盖从基本数据操作到高级数据分析技术的所有内容,到本文结束时,你会深入了解如何使用 Pandas 并使数据科学工作流程更高效。

1、pd.read_csv ()

read_csv用于读取CSV(逗号分隔值)文件并将其转换为pandas DataFrame。

import pandas as pd
df = pd.read_csv('Popular_Baby_Names.csv')

在这个例子中,pd.read_csv函数读取文件' data.csv '并将其转换为一个DataFrame,它有许多选项,如sep, header, index_col, skiprows, na_values等。

df = pd.read_csv('Popular_Baby_Names.csv', sep=';', header=0, index_col=0, skiprows=5, na_values='N/A')

这个例子读取CSV文件data.csv,使用;作为分隔符,第一行作为标题,第一列作为索引,跳过前5行,将N/ a替换为NaN。

2、df.describe ()

df.describe()方法用于生成DataFrame的各种特征的汇总统计信息。它返回一个新的DataFrame,其中包含原始DataFrame中每个数值列的计数、平均值、标准差、最小值、第25百分位、中位数、第75百分位和最大值。

print(df.describe())

通过向方法传递适当的参数,还可以包括或排除某些列,比如排除非数值列。

df.describe(include='all') # include all columns

df.describe(exclude='number') # exclude numerical columns

3、df.info ()

df.info()可以获得DataFrame的简明摘要,包括每列中非空值的数量、每列的数据类型以及DataFrame的内存使用情况。

print(df.info())

4、df.plot ()

df.plot()可以从DataFrame创建各种类型的图。默认情况下,它在DataFrame中创建所有数值列的线状图。但是你也可以通过参数kind来指定你想要创建的图形类型。可选选项有line、bar、barh、hist、box、kde、density、area、pie、scatter和hexbin。

在下面的例子中,将使用.plot()方法绘制数值变量和分类变量。对于分类变量,将绘制条形图和饼状图,对于数值变量,将绘制箱形图。

df['Gender'].value_counts().plot(kind='bar')

df['Gender'].value_counts().plot(kind='pie')

df['Count'].plot(kind='box')

它还支持许多其他选项,如title,xlabel,ylabel,legend,grid,xlim,ylim,xticks,yticks等,df.plot()只是matplotlib的一个方便包装。所以matplotlib的参数都可以在df.plot中使用

5、df.iloc ()

.iloc()函数用于根据索引选择行和列

print(df.iloc[0])

print(df.iloc[:2])

print(df.iloc[:, 0])

print(df.iloc[:, :2])

print(df.iloc[1, 1])

在上面的例子中,df.Iloc[0]选择第一行,Iloc[:2]选择前两行,Iloc[:, 0]选择第一列,Iloc[:,:2]选择前两列,Iloc[1,1]选择位于(第二行,第二列)(1,1)位置的元素。

.iloc()只根据它们基于整数的索引选择行和列,所以如果您想根据它们的标签选择行和列,应该使用.loc()方法,如下所示。

6、df.loc ()

.loc()函数用于根据DataFrame中基于标签的索引选择行和列。它用于根据基于标签的位置选择行和列。

print(df.loc[:, ['Year of Birth', 'Gender']])

在上面的例子中,df.loc[:, ['Year of Birth', 'Gender']]选择名为'出生年份'和'性别'的列。

7、df.assign ()

.assign()函数用于根据现有列的计算向DataFrame添加新列。它允许您在不修改原始数据的情况下添加新列。该函数会返回一个添加了列的新DataFrame。

df_new = df.assign(count_plus_5=df['Count'] + 5)
df_new.head()

在上面的例子中,df.assign()第一次被用来创建一个名为'count_plus_5'的,值为count + 5的新列。

原始的df保持不变,返回新的df_new,并添加了新的列。.assign()方法可以在一个链中多次使用,可以在一行代码中添加多个新列。

8、df.query ()

.query()函数可以根据布尔表达式过滤数据。可以使用类似于SQL的查询字符串从DataFrame中选择行。该函数返回一个新的DataFrame,其中只包含满足布尔表达式的行。

df_query = df.query('Count > 30 and Rank < 20')
df_query.head()

df_query = df.query("Gender == 'MALE'")
df_query.head()

在上面的例子中,使用df.query()来选择Count大于30且Rank小于30的行,第二次使用df.query()来选择Gender为'MALE'的行。

原始的DataFrame df保持不变,df_query返回过滤后新的DataFrame。

.query()方法可以与任何有效的布尔表达式一起使用,当你希望基于多个条件筛选DataFrame,或者当条件复杂且难以使用标准索引操作符表示时,它非常有用。

另外请记住.query()方法很慢,所以如果性能很关键,应该尽量避免使用。

9、df.sort_values ()

.sort_values()函数可以按一列或多列对数据进行排序。它根据一个或多个列的值按升序或降序对DataFrame进行排序。该函数返回一个按指定列排序的新DataFrame。

df_sorted = df.sort_values(by='Count')
df_sorted.head()

df_sorted = df.sort_values(by='Rank', ascending=False)
df_sorted.head()

df_sorted = df.sort_values(by=['Count', 'Rank'])
df_sorted.head()

在上面的例子中,第一次使用df.sort_values()按“Count”升序对DataFrame排序,第二次使用按“Rank”降序排序,最后一次使用按多个列“Count”和“Rank”排序。

.sort_values()方法可用于DataFrame的任何列,当希望基于多个列对DataFrame进行排序时,或者当希望按列降序对DataFrame进行排序时,它非常有用。

10、df.sample ()

.sample()函数可以从数据帧中随机选择行。它返回一个包含随机选择的行的新DataFrame。该函数采用几个参数,可以控制采样过程。

df_sample = df.sample(n=2, replace=False, random_state=1)
df_sample

df_sample = df.sample(n=3, replace=True, random_state=1)
df_sample

df_sample = df.sample(n=2, replace=False, random_state=1, axis=1)
df_sample

在上面的例子中,第一次使用df.sample()随机选择2行,第二次使用df.sample()随机选择3行,最后一次使用df.sample()随机选择2列。

当希望随机选择数据子集进行测试或验证时,或者当希望随机选择行样本进行进一步分析时,.sample()方法非常有用。random_state参数对于再现性很有用,使用axis=1参数可以选择列。

11、df.isnull ()

isnull()方法返回一个与原始DataFrame形状相同的DataFrame,通过True或False值,指示原始DataFrame中的每个值是否缺失。缺失的值NaN或None,在结果的DataFrame中将为True,而非缺失的值将为False。

df.isnull()

12、df.fillna ()

fillna()方法用于用指定的值或方法填充DataFrame中的缺失值。默认情况下,它用NaN替换缺失的值,也可以指定一个不同的值来代替,一般情况下可以使用以下的参数:

  • value:指定用来填充缺失值的值。可以是标量值,也可以是不同列的值的字典。

  • method:指定用于填充缺失值的方法。可以是'ffill'(向前填充)或'bfill'(向后填充)或'interpolate'(插值值)或'pad'或'backfill'

  • axis:指定填充缺失值的轴。它可以是0(行)或1(列)。

  • inplace:是将缺失的值填充到位(修改原始的DataFrame),还是返回一个新的DataFrame。

  • limit:指定要填充的连续缺失值的最大数量。

  • downcast:指定一个值字典,用于向下转换列的数据类型。

df.fillna(0)

df.fillna(method='ffill')

df.fillna(method='bfill')

df.interpolate()

需要注意的是,fillna()方法返回一个新的DataFrame,并不修改原始的DataFrame。如果想修改原始的DataFrame,可以使用inplace参数并将其设置为True。

df.fillna(0, inplace=True)

13、df.dropna ()

df.dropna()可以从DataFrame中删除缺失值或空值。它从DataFrame中删除至少缺失一个元素的行或列。可以通过调用df.dropna()删除包含至少一个缺失值的所有行。

df = df.dropna()

如果只想删除包含至少一个缺失值的列,可以使用df.dropna(axis=1)

df = df.dropna(axis=1)

你还可以设置thresh参数,只保留至少具有阈值非na /null值的行/列。

df = df.dropna(thresh=2)

14、df.drop ()

df.drop()可以通过指定的标签从DataFrame中删除行或列。它可以用于删除一个或多个基于标签的行或列。

你可以通过调用df.drop()来删除特定的行,并传递想要删除的行的索引标签,并将axis参数设置为0(默认为0)。

df_drop = df.drop(0)

这将删除DataFrame的第一行。

也可以通过传递一个索引标签列表来删除多行:

df_drop = df.drop([0,1])

这将删除DataFrame的第一行和第二行。可以通过传递想要删除的列的标签并将axis参数设置为1来删除列:

df_drop = df.drop(['Count', 'Rank'], axis=1)

15、pd.pivot_table ()

pd.pivot_table()可以从DataFrame创建数据透视表。透视表是一种以更有意义和更有组织的方式总结和聚合数据的表。在下面的例子中,将创建一个以Ethnicity为索引的透视表,并汇总计数的总和。这用于了解数据集中每个Ethnicity的计数。

pivot_table = pd.pivot_table(df, index='Ethnicity', values='Count', aggfunc='sum')
pivot_table.head()

通过指定多个索引和值参数,可以在透视表中包含更多列,还可以包括多个aggfunc函数。

pivot_table = pd.pivot_table(df, index=['Ethnicity','Gender'], values= 'Count' , aggfunc=['sum','count'])
pivot_table.head(20)

16、df.groupby ()

df.groupby()用于根据一个或多个列对DataFrame的行进行分组。并且可以对组执行聚合操作,例如计算每个组中值的平均值、和或计数。

df.groupby()返回一个GroupBy对象,然后可以使用该对象对组执行各种操作,例如计算每个组中值的和、平均值或计数。

grouped = df.groupby('Gender')
print(grouped.mean())

grouped = df.groupby(['Gender', 'Ethnicity'])
print(grouped.sum())

17、df.transpose ()

df.transpose()用于转置DataFrame的行和列,这意味着行变成列,列变成行。

df_transposed = df.transpose()
df_transposed.head()

也可以使用df上的T属性来实现。df.T和df.transpose()是一样的。

18、df.merge ()

df.merge()可以根据一个或多个公共列组合两个dataframe。它类似于SQL join。该函数返回一个新的DataFrame,其中只包含两个DataFrame中指定列中的值匹配的行。

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
'value': [5, 6, 7, 8]})

merged_df = df1.merge(df2, on='key')
print(merged_df)

两个df通过key列进行了合并,相同的列名会被添加x和y。

你也可以通过分别传递how = ' left '、how = ' right '或how = ' outer '来使用左连接、右连接和外连接。

还可以通过将列列表传递给on参数来合并多个列。

merged_df = df1.merge(df2, on=['key1','key2'])

还可以使用left_on和right_on参数指定要合并的不同列名。

merged_df = df1.merge(df2, left_on='key1', right_on='key3')

merge()函数有许多选项和参数,可以控制合并的行为,例如处理缺失的值,保留所有行还是只保留匹配的行,合并哪些列等等。

19、df.rename ()

df.rename()可以更改DataFrame中一个或多个列或行的名称。可以使用columns参数更改列名,使用index参数更改行名。

df_rename = df.rename(columns={'Count': 'count'})
df_rename.head()

也可以使用字典一次重命名多个列:

df_rename = df.rename(columns={'Count': 'count', 'Rank':'rank'})
df_rename.head()

重命名索引:

df_rename = df.rename(index={0:'first',1:'second',2:'third'})
df_rename.head()

20、df.to_csv ()

df.to_csv()可以将DataFrame导出到CSV文件。与上面的Read_csv作为对应。调用df.to_csv()将DataFrame导出到CSV文件:

df.to_csv('data.csv')

可以通过传递sep参数来指定CSV文件中使用的分隔符。默认情况下,它被设置为“,”。

df.to_csv('path/to/data.csv', sep='\t')

也可以通过将列名列表传递给columns参数来只保存DataFrame的特定列,通过将布尔掩码传递给索引参数来只保存特定的行。

df.to_csv('path/to/data.csv', columns=['Rank','Count'])

还可以使用index参数指定在导出的CSV文件中包含或不包含dataframe的索引。

df.to_csv('path/to/data.csv', index=False)

使用na_rep参数将导出的CSV文件中缺失的值替换为指定的值。

df.to_csv('path/to/data.csv', na_rep='NULL')

总结

以上这20个pandas函数,绝对可以帮助我们万行80%以上的任务,我们这里只是简单的总结,想group,merge等参数比较多并且常用的函数可以通过pandas的文档进一步熟悉,这将对我们的工作有很大的帮助。

详细内容取自这里,如侵吾删

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1304506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Fnac、Darty跨境利用利用自养号测评补单提升销量和排名

Fnac是法国最有名字的零售商之一&#xff0c;成立于1954年&#xff0c;也是欧洲增长最快的平台之一&#xff0c;2016年&#xff0c;Fnac并购Darty&#xff0c;同时在自己的网站上添加了Darty板块&#xff0c;FnacDarty集团正式成立 国内的产品在Fnac&#xff0c;Darty平台上还…

使用shell脚本将一台虚拟机上面数据分发到其他虚拟机上面xsync

目录 1&#xff0c;功能2&#xff0c;注意点3&#xff0c;shell脚本介绍4&#xff0c;bash内容 1&#xff0c;功能 使用shell脚本将一台虚拟机上面数据分发到其他虚拟机上面。 2&#xff0c;注意点 需要修改的地方&#xff1a;hadoop250 hadoop251 hadoop252 hadoop253 hado…

【Redis】深入理解 Redis 常用数据类型源码及底层实现(1.结构与源码概述)

在文章【Redis】不卡壳的 Redis 学习之路&#xff1a;从十大数据类型开始入手中我们介绍了Redis常用的10大数据类型&#xff0c;这10大数据类型可并不是直接在底层通过代码实现的&#xff0c;而是通过不同的底层数据结构组合起来的&#xff0c;这篇我们介绍下Redis常用数据类型…

多域名和通配符SSL证书的区别

域名SSL证书和通配符SSL证书都是SSL数字证书中用一张证书保护多个域名站点的证书产品&#xff0c;这两种类型的SSL数字证书各自有各自的特色&#xff0c;今天就随SSL盾小编了解多域名SSL证书和通配符SSL证书的区别。 1.保护的域名类型不同&#xff1a;多域名SSL证书默认保护3-…

从视频中提取图片,轻松制作专属视频封面

你是否曾经为如何制作一个吸引人的视频封面而烦恼&#xff1f;现在&#xff0c;我们将向你展示如何从视频中提取图片&#xff0c;并轻松制作专属的视频封面。无论你是视频编辑新手&#xff0c;还是经验丰富的专业人士&#xff0c;这个技巧都能够帮助你快速提升你的视频品质。 …

外包干了3年,技术退步太明显了。。。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了差不多3年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能…

4fiddler抓包工具的使用

一、定义 1.1 抓包的定义 说明&#xff1a;客户端向服务器发送请求以及服务器响应客户端的请求&#xff0c;都是以数据包来传递的。 抓包(packet capture)&#xff1a;通过工具拦截客户端与服务器交互的数据包 1.2 fiddler的介绍 Fiddler是一个http协议调试代理工具&#…

黄油市场调研:预计2028年将达到717亿美元

黄油富含矿物质和维生素&#xff0c;奶油主要为脂肪和蛋白质组成&#xff0c;黄油主要用于涂抹面包和煎牛排等&#xff0c;随着西餐认可度提升&#xff0c;国内需求持续上行。黄油营养成分为乳制品之首&#xff0c;脂肪含量更高。 黄油主要用于涂抹面包和煎牛排等&#xff0c;随…

二叉树的所有路径

257. 二叉树的所有路径 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 样例输入 示例 1&#xff1a; 输入&#xff1a;root […

以太坊:前世今生与未来

一、引言 以太坊&#xff0c;这个在区块链领域大放异彩的名字&#xff0c;似乎已经成为了去中心化应用&#xff08;DApps&#xff09;的代名词。从初期的萌芽到如今的繁荣发展&#xff0c;以太坊经历了一段曲折而精彩的旅程。让我们一起回顾一下以太坊的前世今生&#xff0c;以…

protobuf基础学习

部分内容出自&#xff1a;https://blog.csdn.net/baidu_32237719/article/details/99723353 proto文件来预先定义的消息格式。数据包是按照proto文件所定义的消息格式完成二进制码流的编码和解码。proto文件&#xff0c;简单地说&#xff0c;就是一个消息的协议文件&#xff0c…

【WinRAR】为什么右键没有压缩选项?

我们安装了WinRAR之后想要压缩文件&#xff0c;但是右键点击文件之后发现并没有WinRAR压缩选项&#xff0c;这应该如何设置才能出现右键带有压缩选项呢&#xff1f;方法如下&#xff1a; 首先打开WinRAR&#xff0c;在上面功能中点击选项 – 设置 然后我们在设置界面中切换到集…

Guardrails for Amazon Bedrock 基于具体使用案例与负责任 AI 政策实现定制式安全保障(预览版)

作为负责任的人工智能&#xff08;AI&#xff09;战略的一部分&#xff0c;您现在可以使用 Guardrails for Amazon Bedrock&#xff08;预览版&#xff09;&#xff0c;实施专为您的用例和负责任的人工智能政策而定制的保障措施&#xff0c;以此促进用户与生成式人工智能应用程…

parser

"typescript-eslint/parser": "5.56.0", "vue-eslint-parser": "9.1.0", 代码来自ruoyi-plus vue-eslint-parser是一个专门用于解析Vue.js单文件组件&#xff08;.vue文件&#xff09;的ESLint插件。ESLint是一个用于检查和修复Java…

陪诊软件开发|北京陪诊系统功能介绍

随着互联网技术的不断发展&#xff0c;医疗行业也日新月异。在这个数字化时代&#xff0c;陪诊软件成为了重要的创新工具&#xff0c;为患者和医生提供了全新的医疗服务体验。本文将探讨陪诊软件开发的关键要点及其功能&#xff0c;为您揭示医疗行业的又一面向未来的重要突破口…

【Linux】线程的概念理解,从感知理解到全面深入

1.初始线程概念 在伟大的”计算机哲学“操作系统这本书中&#xff0c;一般给出线程的概念为&#xff1a;是在进程内部运行的一个执行分支&#xff08;执行流&#xff09;&#xff0c;属于进程的一部分&#xff0c;粒度要比进程更加细腻和轻量化。大家对这一概念一看而过既可以…

高频交易双柜台系统如何开通?

市面上的量化系统很多&#xff0c;快速通道也很多&#xff0c;但是可以满足双柜台系统的这个确实是很少的。能满足双柜台系统的&#xff0c;那恐怕只有华锐双柜台系统可以&#xff01;我们先简单来了解下双柜台系统&#xff1a; 华锐双柜台系统&#xff08;SST&#xff09;是…

外贸行业怎么跟进客户?

外贸行业怎么跟进客户&#xff1f; 建立一个完善的跟进系统需要人性化关怀和高效的技术支持。 人性化关怀是指以客户为中心&#xff0c;关注客户的需求和情感&#xff0c;建立真诚、个性化的关系&#xff1b;高效的技术支持则是指利用技术和工具来提高跟进效率和服务质量&#…

QT用户管理效果预览

用户管理效果 QT 用户管理 GITHUB网站 QT版本 CMakeList.txt find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Sql REQUIRED) target_link_libraries(tableView PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Sql)GitHub代码获取链接 GitHub代码获取链接

《码农的噩梦与修电脑的奇幻之旅》

故事从一个充满梦想的码农学习计算机编程开始。他对编写程序充满了热情&#xff0c;认为自己就像是一位能够编织魔法的巫师&#xff0c;能够创造出炫酷的虚拟世界。 然而&#xff0c;这个充满幻想的故事在码农入门的第一天就遭遇了突如其来的挫折。电脑故障了&#xff01;所有…