python数据分析——pandas DataFrame基础知识1

参考资料:活用pandas库

1、加载数据集

        通常调用read_csv函数来加载CSV数据文件。若是.tsv文件也是用read_csv函数。

# 导入库
import pandas as pd
# 默认情况下,read_csv函数会读取逗号分隔文件
# Gapminder数据使用制表符分隔
# 可以吧sep参数设置为\t,显示指明使用制表符分隔
df=pd.read_csv(r"..\data\gapminder.tsv",sep="\t")
# 调用head()方法,默认显示前5行
print(df.head())

      可以使用python内置的type函数来检查read_csv返回的是否是DataFrame。

        每个DataFrame对象都有一个shape属性,用来指明DataFrame的行数和列数。shape属性会返回一个元组,其中第一个值是行数,第二个值是列数。

        通过DataFrame的columns属性来得到df的列名。

        pandas的DataFrame对象和其他语言(比如R)中的DataFrame对象相似,每列的类型必须相同,而每行可以包含混合类型。可以使用DataFrame的dtypes属性或info方法进行查询每列的数据类型。

# 获取每列的dtype
print(df.dtypes)
# 分割线
print("-"*50)
# 获取每列更多的数据信息
print(df.info())

2、查看列、行和单元格

(1)获取指定列的数据子集

# 只获取country列,并将其保存在一个变量中
country_df=df["country"]
print(country_df.head())

# 同时获取多列数据需要将多列的名称作为列表
# 查看country、continent、year列
subset=df[["country","continent","year"]]
print(subset.head())

(2)获取指定行的数据子集

# python是从0开始计数的
# 获取第一行数据
print(df.loc[0])
print(df.head(1))
# 获取第100行数据
print(df.loc[99])
# 获取最后一行的数据
# 通过shape属性的第一个值获取行数
num_of_rows=df.shape[0]
# 行数减去1即可得到最后一个索引值
last_row_index=num_of_rows-1
# 传入最后一行的索引获取最后一行
print(df.loc[last_row_index])
print(df.tail(1))

        请注意,head()、tail()和loc是以不同的方式输出结果的。

subset_loc=df.loc[0]
subset_head=df.head(n=1)
# 使用loc获取一行数据时返回Series类型
print(type(subset_loc))
# 使用head获取一行数据时返回DataFrame类型
print(type(subset_head))

        loc也可以获取多行,如下:

# 获取第2、101、1001行数据
print(df.loc[[1,100,1000]])

        iloc和loc功能相同,但它使用行索引号来获取行。在当前的示例中,iloc和loc的行为完全相同,因为索引标签就是行号。但请注意索引标签不限于行号。

# 使用iloc获取第二行
print(df.iloc[1])
# 使用iloc获取第100行
print(df.iloc[99])
# 使用iloc获取最后一行,请注意:
# 使用illoc使时,可以传入-1来获取最后一行的数据
# 而loc则不能这么操作
print(df.iloc[-1])
# 用iloc获取第1,100,1000行数据
print(df.iloc[[0,99,999]])

(3)混合

        loc和iloc属性可用于获取列、行或二者的子集。语法如下:

df.loc[[行],[列]]   或   df.iloc[[行],[列]]

        在python切片育种中,如果只用一个冒号:,表示取出所有数据。

# 使用loc获取列子集
# 请注意冒号的位置
# 此处冒号用于选择所有行
subset=df.loc[:,["year","pop"]]
print(subset.head())

# 使用iloc获取列子集
# iloc支持使用整数来获取列
# 此处-1表示选取最后一列
subset=df.iloc[:,[2,4,-1]]
print(subset.head())

        可以使用python内置的range函数创建一个值范围,来获取指定范围的列子集

# 获取0-4列的数据集
small_range=list(range(5))
print(small_range)
# 使用range取DataFrame子集
subset=df.iloc[:,small_range]
print(subset.head())
# 获取3-5列的数据集
small_range=list(range(3,6))
print(small_range)
subset=df.iloc[:,small_range]
print(subset.head())

        使用切片语法与range函数语法类似。使用range函数时,用逗号把起始值、结束值和步长隔开,而在切片语法中使用冒号来分隔。range函数可用于创建生成器并转换成一个值列表,但切片的冒号语法仅做切片和取子值时才有意义,它本身没有内在意义。

# 使用切片语法获取前三列
subset=df.iloc[:,:3]
print(subset.head())
# 使用切片语法获取第4到6列
subset=df.iloc[:,3:6]
print(subset.head())
# 获取第1、3、5列
subset=df.iloc[:,0:6:2]
# 同range(0,6,2)
print(subset.head())

        在loc属性和iloc属性中,要选择特定行或特定列,可以把要选的行放在逗号左边,把要选的列放在逗号右边。但要注意loc和iloc的区别。

# 使用loc
print(df.loc[42,"country"])
# 使用iloc
print(df.iloc[42,0])

        当然也可以同时获取多行,多列的数据。在实际工作中,建议尽量传入实际的列名,这样做可以使代码更易读。阅读这样的代码时,无须查看列名向量就能知道所调用的索引。

# 获取第1、100、1000行
# 获取第1,4,6列
print(df.iloc[[0,99,999],[0,3,5]])
print(df.loc[[0,99,999],["country","lifeExp","gdpPercap"]])

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网络协议】----IPv6协议报文、地址分类

【网络协议】----IPv6协议简介 【网络协议】----IPv6协议简介IPv6特点IPv4 和 IPv6报文结构IPv6报文格式-拓展报头 IPv6地址分类IPv6地址表示IPv6单播地址可聚合全球单播地址链路本地地址唯一本地地址特殊地址补充 接口标识(主机位)生成方法通过EUI-64规…

网络层协议之 IP 协议

IP 协议格式 4 位版本:此处的取值只有两个,4(IPv4)和 6(IPv6),即指定 IP 协议的版本。 4 位首部长度:描述了 IP 报头多长,IP 报头是变长的,因为报头中的选项部…

信息系统项目管理师0094:项目管理过程组(6项目管理概论—6.4价值驱动的项目管理知识体系—6.4.3项目管理过程组)

点击查看专栏目录 文章目录 6.4.3项目管理过程组1.适应型项目中的过程组2.适应型项目中过程组之间的关系6.4.3项目管理过程组 项目管理过程组是为了达成项目的特定目标,对项目管理过程进行的逻辑上的分组。项目管理过程组不同于项目阶段:①项目管理过程组是为了管理项目,针对…

WebRTC 采集音视频数据

WebRTC 采集音视频数据 WebRTC 采集音视频数据getUserMedia API 简介浏览器兼容性getUserMedia 接口格式MediaStreamConstraintsMediaTrackConstraints 采集音频数据MediaStream 和 MediaStreamTrack本地视频预览切换摄像头显示参考 WebRTC 采集音视频数据 getUserMedia API 简…

C语言 | Leetcode C语言题解之第77题组合

题目: 题解: int** combine(int n, int k, int* returnSize, int** returnColumnSizes) {int* temp malloc(sizeof(int) * (k 1));int tempSize 0;int** ans malloc(sizeof(int*) * 200001);int ansSize 0;// 初始化// 将 temp 中 [0, k - 1] 每个…

跟我学做零售数据分析报表-商品滞销分析

商品滞销的情况很常见,因此商品滞销分析也是基本属于零售数据分析标配内容之一。那么,商品滞销分析报表该怎么做?要做计算哪些指标,怎么分析滞销趋势?别急,奥威BI零售数据分析方案预设了一张BI商品滞销分析…

C语言 | Leetcode C语言题解之第76题最小覆盖子串

题目&#xff1a; 题解&#xff1a; char* minWindow(char* s, char* t) {int tLen strlen(t);int hash[256] { 0 };for (int i 0; i < tLen; i)hash[t[i]];for (int i 0; i < 256; i) {if (0 hash[i])hash[i] INT_MIN;}int left, right, count, start, minLen, s…

Java | Leetcode Java题解之第75题颜色分类

题目&#xff1a; 题解&#xff1a; class Solution {public void sortColors(int[] nums) {int n nums.length;int p0 0, p2 n - 1;for (int i 0; i < p2; i) {while (i < p2 && nums[i] 2) {int temp nums[i];nums[i] nums[p2];nums[p2] temp;--p2;}i…

【OceanBase 系列】—— OceanBase v4.3 特性解读:查询性能提升之利器列存储引擎

原文链接&#xff1a;OceanBase 社区 对于分析类查询&#xff0c;列存可以极大地提升查询性能&#xff0c;也是 OceanBase 做好 HTAP 和 OLAP 的一项不可缺少的特性。本文介绍 OceanBase 列存的实现特色。 OceanBase从诞生起就一直坚持LSM-Tree架构&#xff0c;不断打磨功能支…

web API设计笔记

Hello , 我是小恒。今晚就讲讲我在开发维护API后的经验分享&#xff0c;当然我知识有限&#xff0c;暂时也不会写实际操作。GitHub项目仓库有一堆还在前期开发&#xff0c;我的时间很多时间投在了开源上。 推荐书籍 我认为一个好的 API 设计是面向用户的&#xff0c;充分隐藏底…

java项目之校园失物招领系统(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园失物招领系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 校园失物招领系统的主要…

UML类图之间的关系及其符号表示

UML是什么 UML&#xff08;Unified Modeling Language&#xff0c;统一建模语言&#xff09;是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言。UML分静态图和动态图两种&#xff0c;常用的静态图有&#xff1a;用例图、类图、包图、对象图、部署图&#…

基于BP神经网络的16QAM解调算法matlab性能仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ........................................................... % 第一部分&#xff1a;加载并…

C++聊天服务器数据库创建

创建数据库chat show databases&#xff1a;展示所有的数据库 create database chat&#xff1a;创建一个数据库chat use chat&#xff1a;使用数据库 创建表User、Friend、AllGroup、GroupUser、OfflineMessage 表User包含&#xff1a;用户id、用户名、用户密码、当前登录…

安卓自定义View

部分效果如下&#xff1a; 完整项目地址&#xff1a;https://download.csdn.net/download/qq_41733851/89282771?spm1001.2101.3001.9500

itext5.5.13 PDF预览权限问题

PdfUtils.htFile.createNewFile&#xff08;&#xff09; createNewFile 创建文件错误错误原因方式一方式二实例代码-生成PDF表格数据 createNewFile 创建文件错误 ht getResourceBasePath() "\\templates\\ht.pdf"; htFile new File(ht);代码含义是创建源文件路…

LeetCode例题讲解:快乐数

编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&#xff0c…

Linux 操作系统网络编程1

目录 1、网络编程 1.1 OSI 网络七层模型 1.1.1 OSI 参考模型 1.1.2 网络数据传输过程 2 传输层通信协议 2.1 TCP 2.1.1 TCP的3次握手过程 2.1.2 TCP四次挥手过程 2.2 UDP 3 网络编程的IP地址 4 端口 5 套接字 1、网络编程 1.1 OSI 网络七层模型 1.1.1 OSI 参考模型…

日志审计系统在提高网络安全方面具有哪些重要的作用

随着信息技术的飞速发展&#xff0c;我们正处于一个高度互联、数据驱动的网络时代。在这个时代&#xff0c;日志审计系统作为网络安全和信息管理的重要工具&#xff0c;发挥着至关重要的作用。下面德迅云安全就详细介绍下关于日志审计系统在当今网络时代的重要性。 一、什么是日…

第41天:WEB攻防-ASP应用HTTP.SYS短文件文件解析Access注入数据库泄漏

第四十一天 一、ASP-SQL注入-Access数据库 1.解释 ACCESS数据库无管理帐号密码&#xff0c;顶级架构为表名&#xff0c;列名&#xff08;字段&#xff09;&#xff0c;数据&#xff0c;所以在注入猜解中一般采用字典猜解表和列再获取数据&#xff0c;猜解简单但又可能出现猜解…