Pandas Dataframe 的学习笔记

Pandas Dataframe 的学习笔记

  • 0. Pandas 简介
  • 1. 为什么要用 Pandas?
  • 2. Series
  • 3. DataFrame
    • 3-1. 创建 DataFrame
    • 3-2. 选择数据
    • 3-3. 数据过滤
    • 3-4. 修改 DataFrame
    • 3-5. 数据清洗
    • 3-6. 数据合并
    • 3-7. info()
    • 3-8. head()
    • 3-9. tail()
    • 3-10. fillna()

0. Pandas 简介

想象一下,你有一张超级大的餐桌,上面放满了各种各样的食物。Pandas 就像是这张餐桌,帮你整理和处理你所有的数据(食物)。Pandas 有两种特别的容器:Series(一行或一列食物)和 DataFrame(整张餐桌的食物)。

1. 为什么要用 Pandas?

  • 整理数据:就像把食物按类型放在不同的盘子里一样,Pandas 帮你把数据整理得井井有条。
  • 方便的数据操作:想吃哪个盘子里的食物,只需伸手拿过来。Pandas 让数据分析就这么简单。
  • 强大的数据分析工具:就像有了厨师,不仅食物摆好了,还能做出你想要的任何味道。

2. Series

Series 就像是餐桌上的一列食物。它有一个主要的成分(数据)和一个标签列表(索引)。

import pandas as pd# 创建一个 Series
s = pd.Series([3, 6, 9, 12])
print(s)

这就像是你有一列食物,分别是三文鱼、六个寿司、九片烤肉和十二个饺子。

3. DataFrame

3-1. 创建 DataFrame

DataFrame 是整张餐桌,上面摆满了各种食物。它由多列 Series 组成,每列都有自己的名字。

import pandas as pd# 使用字典创建 DataFrame
data = {"Fruits": ["Apple", "Banana", "Cherry"],"Quantity": [5, 6, 7],"Price": [1.00, 0.50, 1.50]
}
df = pd.DataFrame(data)
print(df)

这就好比餐桌上有三种水果:苹果、香蕉和樱桃,每种水果都有对应的数量和价格。

3-2. 选择数据

选择数据就像是客人从自助餐桌上挑选他们想要的食物。

# 选择一列
print(df["Fruits"])# 选择多列
print(df[["Fruits", "Price"]])# 选择行
print(df.iloc[1])  # 选择第二行

这就像是客人决定只吃水果,然后又特别想知道每种水果的价格。

3-3. 数据过滤

过滤操作就像是在自助餐桌上找到所有价格大于0.8的选项,非常直接和简单。

# 过滤出所有价格大于0.8
print(df[df["Price"] > 0.8])

使用 query 方法过滤,

# 使用 query 方法过滤
print(df.query("Price > 0.8"))

使用 isin 方法进行过滤,

# 使用 isin 方法过滤
print(df[df["Fruits"].isin(["Apple", "Cherry"])])

3-4. 修改 DataFrame

有时候你可能需要更换餐桌上的某些食物,或者添加更多的美味佳肴。在Pandas中,修改DataFrame也很简单。

# 修改元素
df.at[0, "Quantity"] = 10  # 将苹果的数量改为10# 添加一列
df["Origin"] = ["USA", "Ecuador", "Turkey"]
print(df)# 添加一行
df = df.append({"Fruits": "Mango", "Quantity": 3, "Price": 1.75, "Origin": "India"}, ignore_index=True)
print(df)

这就好比你决定增加苹果的数量,同时在桌上新增了一种来自印度的芒果。

3-5. 数据清洗

在准备自助餐时,有时你会发现一些食物不够新鲜,需要被替换或删除。Pandas提供了多种方法来清洗DataFrame中的数据。

# 删除一行
df = df.drop(0)  # 删除第一行# 删除一列
df = df.drop("Price", axis=1)
print(df)

这就像是你决定把不够新鲜的苹果从餐桌上拿走,同时也决定不再展示食物的价格。

3-6. 数据合并

如果你有两张自助餐桌,想把它们的食物合并到一张桌子上,Pandas的合并功能可以帮你做到。

# 创建另一个 DataFrame
data2 = {"Vegetables": ["Tomato", "Cucumber", "Pepper"],"Quantity": [8, 4, 5]
}
df2 = pd.DataFrame(data2)# 合并两个 DataFrame
df_merged = pd.concat([df, df2], axis=1) 
# 或者
# df_merged = pd.merge(df, df2, left_index=True , right_index=True)
print(df_merged)

这就好比你决定将蔬菜也加入到自助餐桌上,让客人有更多的选择。

3-7. info()

info()方法就像是给你一份菜单,上面列出了自助餐厅里所有的菜品(数据集中的列),每种菜品的主要成分(列的数据类型),以及是否有菜品没准备好(缺失值)。

# 使用 info() 查看 DataFrame 信息
df.info()

执行这段代码后,你会得到一个概览,告诉你有哪些列,每列的数据类型是什么,以及是否有缺失的数据。

3-8. head()

进入自助餐厅后,你可能会先尝一尝每种菜的前几口来决定是否喜欢。head()方法正是做这个用的,它默认展示DataFrame中的前5行数据,当然,你也可以指定展示更多或更少的行。

# 使用 head() 查看前几行数据
print(df.head())  # 默认展示前5行# 查看前3行数据
print(df.head(3))

3-9. tail()

# 使用 tail() 查看最后几行数据
print(df.tail())  # 默认展示最后5行# 查看最后2行数据
print(df.tail(2))

这就相当于在离开餐厅前,你回头看了一眼那些你可能错过的美味,以便下次来的时候可以直接品尝。

3-10. fillna()

想象你在自助餐厅的餐盘里,某些菜品已经被别人取完了,留下了空位。你肯定不希望看到自己的餐盘有空缺,所以你可能会用其他的菜来填满这些空位。fillna()方法就像是用来填满这些“空位”的工具,其中的“空位”指的是数据中的缺失值(NaN值)。

# 使用 fillna 填充缺失值
df_filled = df.fillna("Missing")
print(df_filled)

这就好比你把那些空缺的位置用“Missing”这个标签填满了,这样你的餐盘看起来就完整多了。

你可能想对不同的列使用不同的填充值,比如对于水果名称的缺失使用“Unknown Fruit”,对于价格的缺失使用平均值。

# 对 "Fruits" 列填充 "Unknown Fruit"
df["Fruits"].fillna("Unknown Fruit", inplace=True)# 对 "Price" 列填充平均值
df["Price"].fillna(df["Price"].mean(), inplace=True)
print(df)

这就像是对于没拿到的水果,你决定用“未知水果”这个标签,而对于没有标价的,你查看了一下其他水果的平均价格,然后用这个平均值来填充。

fillna()还允许你使用不同的方法来填充缺失值,例如ffill(前向填充)和bfill(后向填充)。

# 前向填充
df_filled_ffill = df.fillna(method='ffill')# 后向填充
df_filled_bfill = df.fillna(method='bfill')print("前向填充结果:")
print(df_filled_ffill)
print("\n后向填充结果:")
print(df_filled_bfill)

前向填充就像是你用前一道菜来填充后一道空缺的菜位,而后向填充则是用后一道菜来填充前一道空缺的菜位。

完结!

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

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

相关文章

C# 随机打乱数组

Fisher-Yates 洗牌算法是一种高效地将有限序列的元素进行随机洗牌的算法。这个算法在本地进行,不需要额外的内存开销。其基本思想是从最后一个元素开始,每次从未被选中的元素中随机选择一个与当前位置的元素交换,直到到达序列的开始。 这个算…

数据分析 — Pandas 数据处理

目录 一、简介1、概念2、特点3、引用 二、数据结构1、Series2、DataFrame 三、常见操作1、数据合并2、数据删除3、创建多层索引4、数据对齐5、排序6、DataFrame 和 Series 之间的运算 四、应用 一、简介 1、概念 Pandas(Python Data Analysis Library)…

前端秘法进阶篇之事件循环

目录 一.浏览器的进程模型 1.进程 2.线程 二.浏览器的进程和线程 1. 浏览器进程 2. 网络进程 3. 渲染进程 三.渲染主线程 四.异步 五.优先级 1. 延时队列: 2.交互队列: 3.微队列: 六.JS 的事件循环 附加:JS 中的计时器能做到精…

java 宠物在线商城系统Myeclipse开发mysql数据库web结构jsp编程servlet计算机网页项目

一、源码特点 java 宠物在线商城系统是一套完善的java web信息管理系统 servletdaobean mvc模式,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S 模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&…

性能测试监控指标及分析调优

目录 一、哪些因素会成为系统的瓶颈? 1.1 CPU 1.2 内存 1.3 磁盘 I/O 1.4 网络 1.5 数据库 二、哪些指标做为衡量系统的性能 2.1 TPS 吞吐量 2.1.1 磁盘吞吐量 2.1.2 网络吞吐量 2.2 资源使用率 2.2.1 CPU 使用率 2.2.2 内存使用率 2.2.3 磁盘 I/O …

10.什么是 JavaScript 中的包装类型

在 JavaScript 中,基本类型是没有属性和方法的,但是为了便于操作基本类型的值,在调用基本类型的属性或方法时 JavaScript 会在后台隐式地将基本类型的值转换为对象,如: const a "abc"; a.length; // 3 a.t…

open ai api 国内配置代理指南(网上最全)

1.配置须知 open ai 作为这一波AI浪潮的推动者,opne ai的gpt 系列产品在使用和体验上绝对是最强大的,现在对于开发者来说要在代码中访问open ai api是不可用的。所以本文就主要解决这个问题。我们要了解open ai 的网站gpt的访问和api的访问收费是分开来…

配置Juniper虚墙vSRX基于策略的IPsec VPN(WEB方式)

正文共:1444 字 18 图,预估阅读时间:2 分钟 关于IPsec VPN,我们已经有一个合集了(IPsec VPN)。之前接触比较多的是H3C的IPsec VPN,后来接触的厂家多了,才发现大家的模型或者叫法还是…

数据卷的常见命令,如何创建Nginx容器,修改nginx容器内的html目录下的index.html文件

数据卷 什么是数据卷 数据卷(volume)是一个虚拟目录,是容器内目录与宿主机**目录**之间映射的桥梁。 以Nginx为例,我们知道Nginx中有两个关键的目录: html:放置一些静态资源 conf:放置配置文…

文心一言4.0 VS ChatGPT4.0哪家强?!每月60块的文心一言4.0值得开吗?

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

Python在手机芯片

Python在手机芯片的智能化芯片研发开发中具有重要性。首先,Python作为一种高级编程语言,具有简洁、易读、易写的特点,使得芯片开发人员能够更加快速地编写和调试代码。这对于芯片研发过程中的迭代和优化至关重要。 其次,Python拥…

微服务设计:Spring Cloud 链路追踪概述

Spring Cloud 链路追踪是指在分布式系统中追踪请求路径的技术。它可以帮助开发者了解请求在各个微服务之间是如何流转的,以及每个微服务处理请求所花费的时间。链路追踪可以用于解决以下问题: 性能分析: 识别性能瓶颈,优化微服务性能。故障排…

AI短视频一键换脸小程序源码/带流量主

微信云开发AI一键视频换脸小程序源码是由极客二改后发布的,小程序增加了广告控制,插屏广告,激励广告和原生广告,由于采用了微信云开发没有后台,所以不需要域名和服务器也可以正常搭建使用,所有的配置都可以…

C++,stl,函数对象,谓词,内建函数对象

目录 1.函数对象使用 2.谓词 1.一元谓词 2.二元谓词 3.内建函数对象 1.算术仿函数 2.关系仿函数 3.逻辑仿函数 1.函数对象使用 #include<bits/stdc.h> using namespace std;class add { public:int operator()(int v1,int v2){return v1 v2;} };class print { p…

comfyui视频转绘学习笔记

算法方案 ComfyUIAnimateDiffcontrolnet 目录 依赖项&#xff1a; 楚门的ai世界 森森star AI_空杯心_47 依赖项&#xff1a; AnimateDiff for ComfyUI 需要去github下载模型 ComfyUI-Impact-Pack git clone https://github.com/ltdrdata/ComfyUI-Impact-Pack.git htt…

【Java中文乱码浅析及解决方案——详细讲解】

Java中文乱码浅析及解决方案 1. 介绍2. 原因分析3. 解决方案4. 环境配置5. 测试 1. 介绍 Java中文乱码通常发生在字符串在不同编码之间转换时&#xff0c;导致编码与解码使用的字符集不一致&#xff0c;或者是平台默认编码与数据的实际编码不一致&#xff0c;这可能在文件读写…

MyBatis之Like模糊查询的两种实现方式

MyBatis之Like模糊查询的两种方式 文章目录 MyBatis之Like模糊查询的两种方式1. Mybatis中Like模糊查询1. 传递参数值时直接拼接%%2. Mapper.xml中绑定标签 1. Mybatis中Like模糊查询 有两种方式&#xff1a; 在Java代码中传递参数值时直接拼接 %%mapper.xml中利用数据库内置拼…

从C向C++8——多态

一.多态基础 面向对象程序设计语言有封装、继承和多态三种机制&#xff0c;这三种机制能够有效提高程序的可读性、可扩充性和可重用性。 “多态&#xff08;polymorphism&#xff09;”指的是同一名字的事物可以完成不同的功能。多态可以分为编译时的多态和运行时的多态。前者主…

Unity(单元测试)在STM32上的移植与应用

概述 Unity Test是一个为C构建的单元测试框架。本文基于STM32F407为基础&#xff0c;完全使用STM32CubeIDE进行开发&#xff0c;移植和简单使用Unity。 单片机型号&#xff1a;STM32F407VET6 软件&#xff1a;STM32CubeIDE Version: 1.14.1 Unity Version&#xff1a;2.…

儿童护眼台灯哪个值得推荐?推荐专业的儿童护眼台灯

现在的孩子很多都存在视力问题&#xff0c;而且年龄也越来越早&#xff0c;不少还为上学的孩子都早已戴上小眼镜。虽说这可能存在家族近视遗传的可能性&#xff0c;不过更多的还是后天导致的。长时间玩耍电子产品、缺乏运动、不良用眼习惯、不合适的光线等等都是导致孩子近视的…