panads基础入门

news2024/11/16 6:45:22

目录

一、查看数据

 二、选择数据

1、选择单列

2、 用 [ ] 切片行:

3、标签选择

1、选择某列的某一行,如下是 A 列 第 5+1 行的值

2、B列与A列的数据相互替换

3、用标签选取多列

4、用标签切片,包含行与列结束点:

5、提取标量值:

6、布尔索引

6.1 用单列的值选择数据:

6.2 选择 DataFrame 里满足条件的值:

6.3 用 isin()筛选:

7 赋值

7.1 用索引自动对齐新增列的数据:


一、查看数据

import pandas as pd
import numpy as np

生成数据 :

df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))

1、查看 DataFrame 头部和尾部数据:

df.head()
                  A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
2013-01-05 -0.424972  0.567020  0.276232 -1.087401
 df.tail(3)
                   A         B         C         D
2013-01-04  0.721555 -0.706771 -1.039575  0.271860
2013-01-05 -0.424972  0.567020  0.276232 -1.087401
2013-01-06 -0.673690  0.113648 -1.478427  0.524988

 2、显示索引与列名:

 df.index
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
               '2013-01-05', '2013-01-06'],
              dtype='datetime64[ns]', freq='D')
 df.columns
Index(['A', 'B', 'C', 'D'], dtype='object')

 二、选择数据

1、选择单列

df['A']
2013-01-01    0.469112
2013-01-02    1.212112
2013-01-03   -0.861849
2013-01-04    0.721555
2013-01-05   -0.424972
2013-01-06   -0.673690
Freq: D, Name: A, dtype: float64

2、 用 [ ] 切片行:

df[0:3]
                   A         B         C         D
2013-01-01  0.469112 -0.282863 -1.509059 -1.135632
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
df['20130102':'20130104']
                   A         B         C         D
2013-01-02  1.212112 -0.173215  0.119209 -1.044236
2013-01-03 -0.861849 -2.104569 -0.494929  1.071804
2013-01-04  0.721555 -0.706771 -1.039575  0.271860

3、标签选择

dates = pd.date_range('1/1/2000', periods=8)

df = pd.DataFrame(np.random.randn(8, 4),index=dates, columns=['A', 'B', 'C', 'D'])

1、选择某列的某一行,如下是 A 列 第 5+1 行的值

s = df['A']
s[dates[5]]
-0.6736897080883706

2、B列与A列的数据相互替换

df[['B', 'A']] = df[['A', 'B']]
                   A         B         C         D
2000-01-01 -0.282863  0.469112 -1.509059 -1.135632
2000-01-02 -0.173215  1.212112  0.119209 -1.044236
2000-01-03 -2.104569 -0.861849 -0.494929  1.071804
2000-01-04 -0.706771  0.721555 -1.039575  0.271860
2000-01-05  0.567020 -0.424972  0.276232 -1.087401
2000-01-06  0.113648 -0.673690 -1.478427  0.524988
2000-01-07  0.577046  0.404705 -1.715002 -1.039268
2000-01-08 -1.157892 -0.370647 -1.344312  0.844885

3、用标签选取多列

df.loc[:, ['A', 'B']]
                   A         B
2022-01-01 -0.484042  0.071138
2022-01-02 -0.480833  0.706539
2022-01-03  2.071423  0.495800
2022-01-04  0.166673  0.390550
2022-01-05 -0.219285 -0.808867
2022-01-06  0.071547 -2.272539
2022-01-07 -0.701668  0.082397
2022-01-08 -1.551324 -0.368616

4、用标签切片,包含行与列结束点:

 df.loc['20220102':'20220104', ['A', 'B']]
                   A         B
2022-01-02  0.893689 -0.779383
2022-01-03  0.550630 -0.584050
2022-01-04  0.730872 -0.625639

5、提取标量值:

df.loc[dates[0], 'A']
2.2487601581112755

4、布尔索引

4.1 用单列的值选择数据:

df[df.A > 0]
                   A         B         C         D
2022-01-05  0.702815  0.239160  0.963091 -0.362987
2022-01-07  1.546928 -0.325164 -0.840244 -1.829160
2022-01-08  2.221970 -1.059052 -1.496134 -0.701362

4.2 选择 DataFrame 里满足条件的值:

df[df > 0]
                   A         B         C         D
2022-01-01       NaN       NaN  0.081784  0.456902
2022-01-02       NaN  0.753491  0.642349  0.525562
2022-01-03       NaN  2.173797       NaN       NaN
2022-01-04  3.266260       NaN  0.146531  0.856028
2022-01-05       NaN       NaN  0.717119       NaN
2022-01-06  0.889771       NaN       NaN       NaN
2022-01-07       NaN  0.194099  0.528841  1.283849
2022-01-08  0.957554       NaN  0.455982  0.277592

4.3 用 isin()筛选:

import numpy as np
dates = pd.date_range('1/1/2022', periods=8)
df = pd.DataFrame(np.random.randn(8, 4),index=dates, columns=['A', 'B', 'C', 'D'])
df2 = df.copy()
print(df2)
df2['E'] = ['one', 'one', 'two', 'three', 'two', 'three','four', 'three']
print(df2

df2[df2['E'].isin(['two', 'four'])]

 

5 赋值

5.1 用索引自动对齐新增列的数据:

df2['F']  = pd.Series([1, 2, 3, 4, 5, 6,7,8], index=pd.date_range('20220102', periods=8))
print(df2)

 

 5.2 按标签赋值:

df2.at[dates[0], 'A'] = 0
print(df2)

 5.3 按位置赋值:

df2.iat[0, 1] = 0
print(df2)

 5.4 用 where 条件赋值:

dates = pd.date_range('1/1/2022', periods=8)
df = pd.DataFrame(np.random.randn(8, 4),index=dates, columns=['A', 'B', 'C', 'D'])
df2 = df.copy()
df2[df2 > 0] = -df2
print(df2)

6、缺失值

Pandas 主要用 np.nan 表示缺失数据。 计算时,默认不包含空值。

6.1 重建索引(reindex)可以更改、添加、删除指定轴的索引,并返回数据副本,即不更改原数据。

df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])
df1.loc[dates[0]:dates[1], 'E'] = 1

 6.2  删除所有含缺失值的行:

df1.dropna(how='any')

 6.3 填充缺失值:

df1.fillna(value=5)

6.4 对于DataFrame,可以按列指定单个值替换:

df2.replace({"E": 'two','F':5}, 100)

 6.5 字符串/正则表达式替换

df2.replace("one", np.nan)

df2.replace(r"^o", '啊', regex=True)

df2.replace([r"^f", r"(e)"], ["dot", r"\1stuff"], regex=True)

df2.replace({"E": "one"}, {"E": np.nan})

6.6 其他正则替换方法

df.replace({"b": r"\s*\.\s*"}, {"b": np.nan}, regex=True)
df.replace(regex=[r"\s*\.\s*", r"a|b"], value=np.nan)
df.replace({"b": r"\s*(\.)\s*"}, {"b": r"\1ty"}, regex=True)
df.replace(regex={"b": {r"\s*\.\s*": np.nan}})
df.replace({"b": {"b": r""}}, regex=True)
df.replace({"b": r"\s*\.\s*"}, {"b": np.nan}, regex=True)

7、连接对象

7.1 pd.contact

pd.concat(objs,axis=0,join="outer",ignore_index=False,keys=None,levels=None,names=None,verify_integrity=False,copy=True)

objs:

 Series或  DataFrame 对象的序列或映射。如果dict被传递,排序的键将被用作keys参数,除非它被传递,在这种情况下,值将被选择。任何None对象都将被静默删除,除非它们都是None,在这种情况下将引发ValueError。

axis:{0,1,…},默认为0。要连接的轴。

join:{'inner ',' outer'},默认为' outer '。如何处理其他轴上的索引。外部用于并集,内部用于交集。

df1 = pd.DataFrame(
    {
        "A": ["A0", "A1", "A2", "A3"],
        "B": ["B0", "B1", "B2", "B3"],
        "C": ["C0", "C1", "C2", "C3"],
        "D": ["D0", "D1", "D2", "D3"],
    },
    index=[0, 1, 2, 3],
)
df2 = pd.DataFrame(
    {
        "A": ["A4", "A5", "A6", "A7"],
        "B": ["B4", "B5", "B6", "B7"],
        "C": ["C4", "C5", "C6", "C7"],
        "D": ["D4", "D5", "D6", "D7"],
    },
    index=[4, 5, 6, 7],
)
df3 = pd.DataFrame(
    {
        "A": ["A8", "A9", "A10", "A11"],
        "B": ["B8", "B9", "B10", "B11"],
        "C": ["C8", "C9", "C10", "C11"],
        "D": ["D8", "D9", "D10", "D11"],
    },
    index=[8, 9, 10, 11],
)
frames = [df1, df2, df3]
result = pd.concat(frames)
print(result)

 8、读取写入文件

1、读取csv

df.to_csv('foo.csv')

2、读取excel

pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA'])

读取某列

# 读取 name 列 和 content 列
df = pd.read_excel('Names4.xlsx',usecols=["name","content"])
print(df)

 3、写入excel

df.to_excel('foo.xlsx', sheet_name='Sheet1')

 9、迭代

9.1  itertuples()  永远不要修改迭代的内容,这种方式不能确保所有操作都能正常运作。基于数据类型,迭代器返回的是复制(copy)的结果,不是视图(view),这种写入可能不会生效!

itertuples()

迭代 DataFrame 或 Series 里的每一行数据。这个操作返回一个迭代器,生成索引值及包含每行数据的 Series:

 panads 教程  文档 MultiIndex / advanced indexing — pandas 1.5.2 documentation

 

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

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

相关文章

传奇列表格式怎么上传以及公告小窗口皮肤如何设置

相信各位新手小白GM在架设传奇配置登录器的时候都会遇到列表格式的问题,接下来我来教各位登录器的这个列表格式该怎么上传,列表上传地址:传奇常用引擎免费单机列表格式-传奇入门GOM-GEE引擎教学 我们版本是什么引擎我们就用什么引擎的列表格式…

基于Zookeeper实现高可用架构

Zookeeper高可用相关特性 Zookeeper介绍 ZooKeeper is a distributed, open-source coordination service for distributed applications It exposes a simple set of primitives that distributed applications can build upon to implement higher level services for sync…

分布式协调系统ZooKeeper实践与原理剖析

基础的一些知识,高阶知识后续看看补充 第一章 ZooKeeper概述 1.1 介绍 What is ZooKeeper? Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination ZooKeeper is…

EasyX图形库的下载安装与Dev-C++配置

1.下载Dev-Cpp 6.3版本(红色logo) 下载地址:Download Dev-C for Windows 10/8/7 from SourceForge.netA fast, portable, simple, and free C/C IDEhttps://sourceforge.net/projects/embarcadero-devcpp/files/v6.3/Embarcadero_Dev-Cpp_6.3…

详细介绍百度ERNIE 2.0:A Continual Pre-Training Framework for Language Understanding

阅读更多:详细介绍百度ERNIE:Enhanced Representation through Knowledge Integration 文章目录ERNIE 2.0简介相关工作语言表征的无监督学习持续学习ERNIE2.0 框架持续的预训练预训练任务的构建持续的多任务学习针对应用任务的微调ERNIE 2.0模型模型结构…

【Java八股文总结】之消息队列

文章目录消息队列一、消息队列常见面试题1、什么是消息队列?2、为什么要用消息队列?3、使用消息队列存在的问题4、JMS vs AMQP(一)JMSQ:什么是JMS?Q:JMS两种消息模型Q:JMS五种不同消…

Lucid EDI需求分析及项目注意事项

Lucid Motors路西德汽车,是一家美国电动汽车制造商,总部位于美国加利福尼亚州纽瓦克。除了电动汽车,Lucid还有储能技术和代工生产等业务。公司成立于2007年。 截至2021年9月,其第一辆汽车Lucid Air已投入生产,于2021年…

使用arduino编写mqtt客户端连接emqx服务器

摘要:mqtt客户端可以有很多种,本文介绍一种使用arduino d1(esp8266)制作的客户端,连接emqx服务器的方法。 首先需要配置开发环境,配置方法可以参考文章 (1条消息) 使用arduino开发esp8266和esp32时首选项设…

美容美发店会员管理系统开发_分享美容美发店做会员管理系统的好处

为什么都在做美容美发店会员管理系统? 最主要的目的就是将新客留住,并通过各种会员福利发展成愿意多次消费的长期会员。 美容美发店作为服务类行业,吃的大部分都是回头客的盈利,而回头客的消费意愿,也普遍会比新客要…

Executor接口实现线程池管理

从JDK5开始,在java.util.concurrent包下增加了Executor接口及其子类,允许使用线程池技术来管理线程并发问题。Executor接口提供了一个常用的ExecutorService子接口,通过该子接口可以很方便地进行线程池管理。 通过Executor接口实现线程池管理…

LeetCode 0529. 扫雷游戏

【LetMeFly】529.扫雷游戏 力扣题目链接:https://leetcode.cn/problems/minesweeper/ 让我们一起来玩扫雷游戏! 给你一个大小为 m x n 二维字符矩阵 board ,表示扫雷游戏的盘面,其中: M 代表一个 未挖出的 地雷&am…

【前端】博客系统——简单的页面设计

前端 传送门【前端】HTML入门 —— HTML的常见标签 【前端】CSS(1) —— CSS的基本语法和一些简单的选择器 博客系统 (简单的页面设计)目录页面介绍效果预览代码实现实现博客列表页实现导航栏 版心实现导航栏 部分版心样式实现列表页版心样式实现博客正文页实现导航栏 版心…

基于ghOSt用户调度器的环境搭建

文章目录ghOSt环境搭建编译安装ghOSt内核使用ghOSt用户空间组件ghOSt环境搭建 资源: ghOSt-kernel:https://github.com/google/ghost-kernelghOSt-userspace:https://github.com/google/ghost-userspace论文原文:https://dl.acm.org/doi/abs/10.1145/3477132.348354…

[网络] https是什么?https是怎么保障我们信息传输的安全的?

文章目录前言HTTPs是什么?TLS是什么?协议栈对比:HTTPs vs HTTP万能的TLS协议TLS如何保障我们的通信安全的?对称加密和非对称加密的优缺点对称加密方式密钥易泄露的问题改良版之混合加密TLS中混合加密的应用附:有时候会…

pytorch的buffer学习整理

pytorch模型中的buffer 这段时间忙于做项目,但是在项目中一直在模型构建中遇到buffer数据,所以花点时间整理下模型中的parameter和buffer数据的区别💕 1.torch.nn.Module.named_buffers(prefix‘‘, recurseTrue) 贴上pytorch官网对其的说…

sqli-labs/Less-52

这一关输入几次rand()页面发生了改变 说明这一关的注入类型属于数字型注入 接着尝试一下报错注入 输入如下 sortupdatexml(1,if(11,concat(0x7e,database(),0x7e),1),1)-- 发现没有回显 显然不能使用报错注入 只能使用盲注了 这一关我们通过rand()函数的形式来实现盲注 首先…

HTML+CSS+JavaScript仿京东购物商城网站 web前端制作服装购物商城 html电商购物网站

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

SPC5777CDK3MMO4 IC MCU 32BIT,SPC5777CDK3MME3

MPC5777C Power Architecture 微控制器是一款高性能多核MCU,优化用于要求先进性能、计时系统、安全性和功能性安全能力的工业和汽车控制应用。MPC5777C设有两个独立的Power Architecture z7内核(运行速度高达300MHz)以及一个z7内核&#xff0…

搜索技术——盲目与启发

如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔空间 搜索是人工智能中的一个基本问题,并与推理密切相关。搜索策略的优劣将直接影响到智能系统的性能与推理效率。 一:搜索的基本概念 搜索:根据问题的实际…

Linux openvino 环境搭建遇见的问题

1.编译openvino源码,报错(PythonLibsNew) 通过报错路径结合cmakeLists.txt发现,有个文件夹内容为空导致的,因此需要单独下载对应的文件(这个文件夹藏的比较深,之前没有注意到,只关注openvino/thridparty下&…