数据处理与统计分析篇-day05-Pandas详解

创建DaraFrame对象

概述

  • DataFrame是一个表格型的==结构化==数据结构,它含有一组或多组有序的列(Series),每列可以是不同的值类型(数值、字符串、布尔值等)。

  • DataFrame是Pandas中的最基本的数据结构对象,简称df;可以认为df就是一个二维数据表,这个表有行有列有索引

  • DataFrame是Pandas中最基本的数据结构,Series的许多属性和方法在DataFrame中也一样适用.

创建方式

字典方式创建
# 定义字典, 记录: 数据
my_dict = {'id': [1, 2, 3],'name': ['张三', '李四', '王五'],'age': [23, 21, 25]
}
# 将字典 => DataFrame对象
df1 = pd.DataFrame(my_dict)
print(df1)
print(type(df1))  # <class 'pandas.core.frame.DataFrame'>

列表+元组方式创建
# 定义列表, 记录: 数据
my_list = [(1, '张三', 23),      # 列表内嵌套的(元组或列表)是一行数据(2, '李四', 1),(3, '王五', 25)
]
# 将列表 => DataFrame对象
# columns: 指定列的顺序
# index: 指定索引的值
df3 = pd.DataFrame(data=my_list,columns=['id', 'name', 'age'],index=['x', 'y', 'z']
)
print(df3)
print(type(df3))  # <class 'pandas.core.frame.DataFrame'>

index与columns属性
# 定义字典, 记录: 数据
my_dict = {'id': [1, 2, 3],'name': ['张三', '李四', '王五'],'age': [23, 21, 25]
}
# 将字典 => DataFrame对象
# columns: 指定列的顺序
# index: 指定索引的值
df2 = pd.DataFrame(data=my_dict,columns=['name', 'id', 'age'],index=['x', 'y', 'z']
)
print(df2)
print(type(df2))  # <class 'pandas.core.frame.DataFrame'>

属性

# 读取文件, 获取df对象
df = pd.read_csv('data/scientists.csv')
df
​
print(df.shape)         # 维度(8, 5)
print(df.size)          # 元素个数
print(df.values)        # df对象 => ndarray
print(type(df.values))  # <class 'numpy.ndarray'>
print(df.dtypes)        # 各列元素的类型
print(df.ndim)          # 维度, 2
print(df.index)         # 获取所有的索引列(的值)
print(df.columns)       # 列名

函数

print(len(df))                  # 8, 行数
print(df.head())                # 默认前5行
print(df.head(n=2))             # 前2行
print(df.tail())                # 默认最后5行
print(df.tail(n=2))             # 后2行
​
df.info()                                   # 查看详细信息
print(df.describe())                        # 查看格列的统计信息(默认只查看数值列)
print(df.describe(include='all'))           # 查看格列的统计信息(查看所有列)
print(df.describe(include=['int', 'float']))# 查看整型和浮点型
​
print(df.count())       # 查看各列非空值
print(df.max())         # 查看各列最大值
print(df.min())         # 查看各列最小值
​
# print(df.mean())    # 报错, 只针对2020版conda环境有效(平均)
print(df.Age.mean())

布尔索引

# 过滤出df对象中, Age列大于平均年龄的行
# df[Age列 > Age列的平均值]
print(df.Age.mean())
# df[df.Age > df.Age.mean()]  # df对象的布尔值操作
df.Age[df.Age > df.Age.mean()]  # Series对象的布尔值操作
​
# 过滤出前5行中的, 第1, 3, 4行 => 索引:0, 2, 3
df.head()[[True, False, True, True, False]]     # 传入的是布尔列表

计算

# 场景1: df和数值计算(数值会和df对象的每个元素计算)
df * 2
​
# 场景2: df和df对象计算(优先参考索引)
df + df
​
df[:4]  # 类似切片, 获取前4行
df + df[:4]

索引和列名相关操作

设置和取消索引列

Pandas中99%关于DF和Series调整的API, 都会默认在副本上进行修改, 调用修改的方法后, 会把这个副本返回

这类API都有一个共同的参数: inplace, 默认值是False

如果把inplace的值改为True, 就会直接修改原来的数据, 此时这个方法就没有返回值了

# 在pandas中, 某个函数如果有 inplace参数, 则该函数大概率 是默认返回新的副本, 把该参数设置为true, 则在原始对象中修改
# 1. 演示读完设置索引列
movie = pd.read_csv('data/movie.csv')
movie.head()
​
# 设置 movie_title为索引列(分步)
movie.set_index('movie_title')              # 默认返回新的副本
movie.head()        
​
new_movie = movie.set_index('movie_title')  # 默认返回新的副本
new_movie.head()        
​
movie.set_index('movie_title', inplace=True)  # 在原始对象中修改
movie.head()    # 多次运行会报错 "None of ['movie_title'] are in the columns"
​
# 2. 演示读时设置索引列
movie = pd.read_csv('data/movie.csv', index_col='movie_title')
movie.head()
​
# 3. 重置索引列
movie.reset_index(inplace=True)
movie.head()

修改列名和行名

rename()
df = pd.read_csv('data/movie.csv', index_col='movie_title')
df.head()
​
# 手动设置行名(索引列) 和 列名
idx_name = {'Avatar':'阿凡达', "Pirates of the Caribbean: At World's End":'加勒比'}
col_name = {'color':'颜色', 'director_name':'导演名'}
​
# 通过rename函数, 修改行名和列名
df.rename(index=idx_name, columns=col_name, inplace=True)
df.head()
index和columns属性
df = pd.read_csv('data/movie.csv', index_col='movie_title')
df.head()
​
# 获取所有行名 和 列名
idx_list = df.index.to_list()
col_list = df.columns.to_list()
​
# 修改行名和列名
# 索引列
idx_list[0] = '阿凡达'
idx_list[1] = '加勒比'
# 列名
col_list[0] = '颜色'
col_list[1] = '导演名' 
​
# 把修改后的行名和列名设置为新的索引列 和 列名
df.index = idx_list
df.columns = col_list
​
df.head()

添加列

末尾添加
# df = pd.read_csv('data/movie.csv', index_col='movie_title')
df = pd.read_csv('data/movie.csv')
df.head()
#%%
# 1. 添加列: df对象[列名] = 值
df['has_seen'] = 1
# 总点赞数 = 导演点赞数 + 演员的点赞数
df['daafl'] = df['director_facebook_likes'] + df['actor_1_facebook_likes'] + df['actor_2_facebook_likes']
df.head()
指定位置插入
# 在索引为1的位置, 插入1列, 总利润 = 总收入 - 总预算
# insert()函数在原对象中修改
df.insert(loc=1, column='profix', value=df['gross'] - df['budget'])
df.head()

删除列

# df.drop('has_seen', inplace=True, axis='columns')
​
df.head().drop([0, 1])      # [索引值列表]

进阶-获取指定的数据

导出

# 细节: 如果使用Excel文件, 记得先装3个包, xlwt, openyxl, xlrd
​
# 1. 读取文件, 获取df对象.
df = pd.read_csv('data/scientists.csv')
df
#%%
# 2. 演示导出数据到文件中.  
# 要求: 导出文件到 当前项目下的 output 文件夹下.   
# 导出的格式: df.to_文件格式()
​
# 前提: output文件夹必须存在.
df.to_pickle('output/scientists.pickle')        # pickle文件 一般用于存储 pandas的 中间结果. 
df.to_csv('output/scientists.csv')              # 细节: 索引列也会导出
df.to_csv('output/scientists_noindex.csv', index=False)   # 细节: 不导出索引列
df.to_csv('output/scientists_noindex.tsv', index=False, sep='\t')   # sep: 分隔符
​
df.to_excel('output/scientists.xlsx')
df.to_excel('output/scientists_noindex.xlsx', index=False, sheet_name='ai21')
print('导出成功!')

导入

# 1. 读取文件, 获取df对象
# df = pd.read_pickle('output/scientists.pickle')# df = pd.read_csv('output/scientists.csv')
# df = pd.read_csv('output/scientists_noindex.csv')
# df = pd.read_csv('output/scientists_noindex.tsv', sep='\t') # 读取tsv的时候, 指定分隔符
​
# df = pd.read_excel('output/scientists.xlsx')
​
# 如果不写表名, 则默认读取第1个表, 如果写了, 则读取指定的表. 可以是一张表, 也可以是多张表.
# 1张表的情况下, 返回的是: df对象.
# 多张表的情况下, 返回的是: 字典, 即: 表名做键, 该表的df对象做值.
df = pd.read_excel('output/scientists_noindex.xlsx', sheet_name=['pandas_dara', 'Sheet1'])
​
#%%
# 2. 查看结果
df          # 字典
df['Sheet1']  # df对象

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

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

相关文章

CRM客户管理系统如何帮你做好客户分类

CRM客户管理系统通过一系列功能和策略帮助企业有效地进行客户分类&#xff0c;从而优化资源配置&#xff0c;提升客户满意度和忠诚度&#xff0c;进而推动业务增长。 以下是CRM系统如何帮助企业做好客户分类的详细阐述&#xff1a; 一、全面数据收集与整合 CRM系统能够全面收…

通过知识图谱自动生成和丰富加速医学知识发现 - 哈佛大学等

KGGPT Accelerating Medical Knowledge Discovery through Automated Knowledge Graph Generation and Enrichment 摘要 知识图谱&#xff08;KGs&#xff09;作为组织和表示结构化知识的强大工具&#xff0c;广受认可。尽管它们的实用性广泛被认可&#xff0c;但在自动化和完…

“码”上中秋 · 与 豆包 MarsCode 共赏家乡月

《水调歌头》(宋苏轼) (丙辰中秋&#xff0c;欢饮达旦。大醉&#xff0c;作此篇&#xff0c;兼怀子由) 明月几时有? 把酒问青天。 不知天上宫阙&#xff0c;今夕是何年。 我欲乘风归去&#xff0c;又恐琼楼玉宇&#xff0c;高处不胜寒。 起舞弄清影&#xff0c;何似在人间? 转…

VR全景摄影制作中的常见问题及解决方案

随着VR全景摄影技术的普及&#xff0c;越来越多的摄影师和企业开始尝试使用这种方式来展示产品、场景或服务。虽然VR全景摄影有着强大的视觉表现力和沉浸式体验&#xff0c;但在制作过程中也会遇到各种挑战。为了帮助大家更好地掌握VR全景摄影的制作技巧&#xff0c;今天给分享…

Hi3559A/C V100 集成了双核 A73 和双核 A53,支持 8K30/4K120 视频录制

1.1 概述 Hi3559AV100 是专业的 8K Ultra HD Mobile Camera SOC &#xff0c;它提供了 8K30/4K120 广播级图像质量的数字视频录制&#xff0c;支持多路 Sensor 输入&#xff0c;支持 H.265 编码输出或影视 级的 RAW 数据输出&#xff0c;并集成高性能 ISP 处理&…

上架谷歌安卓APP完整图文流程

本节包含以下内容&#xff1a; 第一步&#xff1a;登录Google play开发者后台第二步&#xff1a;创建应用第三步&#xff1a;设置应用第四步&#xff1a;开启通知第五步&#xff1a;发布应用第六步&#xff1a;查看审核结果第七步&#xff1a;配置app支付参数第八步&#xff1…

windows环境安装Elasticsearch和图形化界面head插件

废话少说ES相关的用法可以参考文档&#xff1a;https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html 注意&#xff1a;elasticsearch是使用java开发的&#xff0c;且本版本的ES需要的jdk版本要是1.8以上&#xff0c;所以安装elasticsearch之前保证jdk1.8以…

换个手机IP地址是不是不一样?

在当今这个信息爆炸的时代&#xff0c;手机已经成为我们生活中不可或缺的一部分。而IP地址&#xff0c;作为手机连接网络的桥梁&#xff0c;也时常引起我们的关注。你是否曾经好奇&#xff0c;换个手机&#xff0c;IP地址会不会也跟着变呢&#xff1f;本文将深入探讨这个问题&a…

关于实时数仓的几点技术分享

一、实时数仓建设背景 业务需求的变化&#xff1a;随着互联网和移动互联网的快速发展&#xff0c;企业的业务需求变得越来越复杂和多样化&#xff0c;对数据处理的速度和质量要求也越来越高。传统的T1数据处理模式已经无法满足企业的需求&#xff0c;实时数据处理成为了一种必…

【Python爬虫】学习Python必学爬虫,这篇文章带您了解Python爬虫,Python爬虫详解!!!

Python爬虫详解 Python爬虫是一种用于从网站获取数据的自动化脚本。它使用Python编程语言编写&#xff0c;并利用各种库和模块来实现其功能。以下是Python爬虫的详细讲解&#xff0c;包括基本概念、常用库、基本流程和示例代码。 基本概念 HTTP请求&#xff1a;爬虫通过向目…

9-----MTK专用工具 MTKpro解锁 读取分区 备份nv 檫除nv 工具预览与步骤解析

以上工具包含原版与汉化版工具。根据上面图示 可以看到此工具可以刷写mtk机型,包含有刷机的各个加载选项以及刷写方式。其中动画界面演示了无需加载任何引导。联机就可以读取到当前机型分区的演示。 工具功能选项 ★★★★★不需要任何引导直接读取mtk分区 备份 檫除 写入分…

【深度学习】(3)--损失函数

文章目录 损失函数一、L1Loss损失函数1. 定义2. 优缺点3. 应用 二、NLLLoss损失函数1. 定义与原理2. 优点与注意3. 应用 三、MSELoss损失函数1. 定义与原理2. 优点与注意3. 应用 四、BCELoss损失函数1. 定义与原理2. 优点与注意3. 应用 五、CrossEntropyLoss损失函数1. 定义与原…

在Python中快速获取HTML中<span>标签的内容

在Python中&#xff0c;要获取HTML中<span>标签的内容&#xff0c;通常我们会使用像BeautifulSoup这样的库&#xff0c;它提供了方便的方法来解析HTML和XML文件&#xff0c;并从中提取数据。下面是一个使用BeautifulSoup来获取<span>标签内容的简单示例。 首先&am…

地图API配置错误漏洞导致的key或者ak泄露

0x1 前言 哈喽&#xff0c;师傅们&#xff01; 这篇文章主要是带师傅们掌握下地图API配置错误漏洞导致的key或者ak泄露&#xff0c;然后进行使用我们总结的payload进行打一个漏洞利用。下面也会给师傅们举例我挖到的部分地图API漏洞&#xff0c;其中企业src部分企业会收这个漏…

营销必不可少的神器:邮件群发系统

对于企业推广而言&#xff0c;电子邮件群发工具是网络营销的利器&#xff0c;无论是产品宣传、客户维护&#xff0c;还是发送通知、节日问候等都离不开它。这些工具操作简便&#xff0c;只需轻轻一点&#xff0c;就能将信息迅速送达客户的邮箱。特别是对外贸企业来说&#xff0…

转行AI产品经理入门指南(非常详细)零基础入门到精通,收藏这一篇就够了

AI产品经理和传统产品经理有哪些不同&#xff1f;薪资前景怎么样?应当以怎样的姿势入行&#xff1f; 这篇干货回答将告诉你AI产品经理具体做什么、有哪些分类、需要哪些技能、以及具体的学习路线&#xff0c;帮助你开启你的转行旅程。 作为从业人员&#xff0c;非常负责任的…

计算机考研408-计算机网络

【题33】下列选项中&#xff0c;不属于网络体系结构所描述的内容是&#xff08;&#xff09; A.网络的层次 B.每一层使用的协议 C.协议的内部实现细节 D.每一层必须完成的功能 解析&#xff1a; 本题考查的是网络体系结构相关的概念。 图1描述了网络的7层架构以及每一层所要完成…

[Linux]远程登录

公司正式上线的项目是运行在公网, 因此需要远程登录到Linux进行项目管理或者开发 运行登录工具使用Xshell6 和 Xfttp6 xhell安装 Xshell是远程登录Linux的工具, 流畅的速度并且解决了中文乱码的问题 Xshell是一个强大的安全终端模拟软件, 支持SSH1, SSH2, 以及Microsoft Wi…

Docker本地部署Chatbot Ollama搭建AI聊天机器人并实现远程交互

文章目录 前言1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址 前言 本文主要分享如何在群晖NAS本地部署并运行一个基于大语言模型Llama 2的个人本地聊天机器人并结合内网穿透工具…

macos macport软件包管理工具 sudo port install xxx 安装的软件的路径 与 brew install xxx 软件安装路径总结

macos下优秀的软件包管理工具 macport 和brew 安装软件后他们的安装路径是有区别的&#xff0c; macport包管理工具的 sudo port install xxx安装的软件的路径一般位于 /opt/local路径下的 bin, include, lib, share 文件夹内&#xff0c;而 通过brew install xxx 安装后的软件…