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

news2024/11/20 7:28:38

参考资料:活用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"]])

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

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

相关文章

计算机组成原理网课笔记

无符号整数的表示与运算 带符号整数的表示与运算 原反补码的特性对比 移码

推荐非常方便的初始配置nginx的开源工具

官网 https://www.digitalocean.com/community/tools/nginx?global.app.langzhCN直接复制base64字符串在 /etc/nginx 目录执行,会自动生成配置文件,最后执行 使用tar解压新的压缩配置 tar -xzvf nginxconfig.io-xxx.com.tar.gz | xargs chmod 0644在…

中国结(科普)

中国结是一种手工编织工艺品,它身上所显示的情致与智慧正是汉族古老文明中的一个侧面。 [1]它原本是由旧石器时代的缝衣打结,后推展至汉朝的仪礼记事,再演变成今日的装饰手艺。周朝人随身的佩戴玉常以中国结为装饰,而战国时代的铜…

Golang | Leetcode Golang题解之第78题子集

题目: 题解: func subsets(nums []int) (ans [][]int) {set : []int{}var dfs func(int)dfs func(cur int) {if cur len(nums) {ans append(ans, append([]int(nil), set...))return}set append(set, nums[cur])dfs(cur 1)set set[:len(set)-1]df…

Java 11 到 Java 8 的兼容性转换

Java 11 到 Java 8 的兼容性转换 欲倚绿窗伴卿卿,颇悔今生误道行。有心持钵丛林去,又负美人一片情。 静坐修观法眼开,祈求三宝降灵台,观中诸圣何曾见?不请情人却自来。 入山投谒得道僧,求教上师说因明。争奈…

从离线到实时:无锡锡商银行基于 Apache Doris 的数据仓库演进实践

作者:武基鹏,无锡锡商银行 大数据技术经理 编辑整理:SelectDB 技术团队 导读:为实现数据资产的价值转化以及全面数字化、智能化的风险管理,无锡锡商银行大数据平台经历从 Hive 离线数据仓库到 Apache Doris 实时数据仓…

ifconfig命令找不到 command not found

问题 今天解决虚拟机的网络问题后,使用ifconfig发现报错命令未找到 解决方案 输入yum install ifconfi的程序安装包 yum install ifconfig 如果显示没有可用软件包 ifconfig,错误:。 就输入yum search ifconfig匹配安装包程序 yum searc…

数仓开发,分层(ods,dw,app层)

1、从数据源中导入源数据,到ODS表,作为事实表的数据 2、可以根据自己的开发设计,是否单独分支出来一个维度表,帮助和协助处理源数据表ODS层 和需求层ADS(APP)层 3、现在我们有了一个事实ODS层&#xff0…

力扣每日一题119:杨辉三角||

题目 简单 给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0 输出: [1]示例 3: 输入: rowIndex 1 输出…

基于SSM的“小型企业人事管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“小型企业人事管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 登录界面 个人信息页面 用户打卡页面 扣…

C++贪心算法

关于string的系统函数! (注:以下函数只可用于string,不适用其他类型的变量) ① a.size(); 这个系统函数是用来获取这个string变量的长度的,我们通常会新建一个变量来保存他,以便之后使用。 …

跨协议通讯无缝对接:Modbus-BACnet楼宇智能转换器深度解析

在现代化的建筑群里,智能楼宇管理系统如同神经系统,协调着各设备的运行。某大型商业综合体,集购物中心、办公区、酒店于一体,面对着来自不同供应商的设备,如何实现统一管理和高效通讯成了首要挑战。特别是其内部既有采…

区块链 | NFT 水印:Review on Watermarking Techniques(一)

🍍原文:Review on Watermarking Techniques Aiming Authentication of Digital Image Artistic Works Minted as NFTs into Blockchains 1 应用于 NFT 的水印技术 常见的水印技术类型可以分为: 可见 v i s i b l e \mathsf{visible} visi…

STM32快速入门(串口传输之USART)

STM32快速入门(串口传输之USART) 前言 USART串口传输能实现信息在设备之间的点对点传输,支持单工、半双工、全全双工,一般是有三个引脚:TX、RX、SW_RX(共地)。不需要一根线来同步时钟。最大优…

C++ list介绍(迭代器失效)

一、常用接口 reverse逆置 sort排序&#xff08;默认升序&#xff09; 仿函数greater<int> merge合并&#xff0c;可以全部合并&#xff0c;也可以一部分合并 unique&#xff1a;去重&#xff08;先排序&#xff0c;再去重&#xff09; remove&#xff1a;删除e值&#…

Hive SQL Join连接操作用法详解

Hive SQL Join连接操作 1.Hive join语法规则 基本语法&#xff1a; SELECT column_list FROM table1 JOIN table2 ON table1.column_name table2.column_name;JOIN类型&#xff1a; 在JOIN语句中&#xff0c;你可以使用不同类型的JOIN操作&#xff0c;包括INNER JOIN、LEFT O…

水面垃圾清理机器人的视觉算法研究

卷积神经网络是一种分层的数据表示模型&#xff0c;通常由数据输入层、卷积层、池化层、 非线性激活函数、全连接层以及输出结果预测层等组成&#xff0c;其中卷积层、池化层和非线 性激活函数是卷积神经网络中的重要组成部分。此外&#xff0c;有些模型会增加其他的层(归一 化…

C#贪吃蛇

C#贪吃蛇 文章目录 Program.csText1Game.csISceneUpdate.csText2BeginScene.csBegionOrEndScene.csEndScene.csGameScene.csText3GameObject.csIDraw.csPosition.csText4Food.csSnakeBody.csWall.csText5Map.csText6Snake.csProgram.cs using 贪吃蛇.Text1;Game game = new Ga…

pinia持久化出现store和storage的数据不一致的问题

问题描述 突然发现menu的store异常&#xff0c;pinia中查看到store数据正确&#xff0c;但是localstorage中的数据始终没有同步&#xff0c;但user的store没问题&#xff0c;具体如下&#xff1a; menu的store&#xff1a; user的store&#xff1a; 问题原因 进入系统…

[嵌入式系统-72]:RT-Thread-组件:单元测试框架utest

目录 utest 测试框架 ​编辑 测试用例定义 测试单元定义 utest 应用框图 2. utest API assert 宏 测试单元函数运行宏 测试用例导出宏 测试用例 LOG 输出接口 3. 配置使能 4. 应用范式 5. 测试用例运行要求 6. 运行测试用例 测试结果分析 7. 测试用例运行流程 …