pandas数据分析:十分钟快速入门重点函数速查

news2025/7/11 9:50:58

文章目录

  • 前言
  • 一、生成Series对象和DataFrame对象
  • 二、查看数据
  • 三、获取数据
    • 3.1 获取单列数据
    • 3.2 按照标签选择数据:loc函数
    • 3.2 按照位置选择数据:iloc函数
    • 3.3 布尔索引
    • 3.4 赋值
  • 四、缺失值
  • 五、运算
  • 六、merge:合并DataFrame
    • 6.1 concat函数
    • 6.2 merge函数:数据库join操作
    • 6.3 append追加:追加一行DataFrame
  • 七、group分组
  • 八、reshape:重塑
  • 九、数据透视表
  • 十、时间序列
  • 十一、类别类型
  • 十二、可视化
  • 十三、文件读写


前言

pandas入门学习笔记,方便以后查询使用。


首先引入依赖库

import numpy as np
import pandas as pd

一、生成Series对象和DataFrame对象

生成Series对象:

#生成一般Series对象
s1=pd.Series([1,2,3,6,np.nan,6,8])
#生成日期Series对象
s2=pd.date_range("20221120",periods=6)

生成DataFrame对象:

#生成索引为日期的DataFrame:index行;columns列
df1=pd.DataFrame(np.random.randn(6, 4),index=s2,columns=list("ABCD"))
#利用 Series 字典对象生成DataFrame
df2=pd.DataFrame(
    {
        'A':np.arange(5),
        'B':pd.Series([10,20,30,40,50]),
        'C':"foo",
        'D':pd.Categorical(["test", "train", "test", "train","other"]),
    }
)

二、查看数据

#查看头部数据
df1.head(2)
#查看尾部数据
df1.tail(3)
#查看索引(行)
df1.index
#查看列名
df2.columns
#输出底层numpy数据对象:若df中每一列的类型不相同,则消耗资源多;反之,每一列都是float,则执行很迅速
df2.to_numpy()
#查看统计行描述
df1.describe()
#转置数据
df1.T
#按轴排序:axis:若为1,则按照列名称排序;若为0,则按照行名称排序。ascending:True则正序排序;False则逆序排序
df2.sort_index(axis=1, ascending=False)
#按值排序:by:列名;ascending:True则正序排序;False则逆序排序
df1.sort_values(by='C',ascending=False)

三、获取数据

3.1 获取单列数据

#获取单列:df.列名或df["列名"] ,返回Series
df1["A"]# df1.A
#切片获取行
df1[0:3]#第0行到第2行的数据(共3行)【索引切片:不包含结束点】
df1["20221120":"20221124"]#20221120-20221124的数据(共5行)【标签切片:包含行与列结束点】

3.2 按照标签选择数据:loc函数

#按照标签获取一行的数据,返回Series对象
df1.loc["20221124"]
df2.loc[3]
#用标签选择多列数据:前面通过切片获取行;后面通过列表获取列
df1.loc["20221120":"20221124",['A', 'B']]
df2.loc[1:3,['C','D']]
#获取某一行的某几列数据,返回Series
df1.loc['20221124', ['A', 'B']]
#获取标量值
df2.loc[1, 'C']
df1.loc["20221124",'B']

3.2 按照位置选择数据:iloc函数

#选择某一行的数据,返回Series
df1.iloc[2]#选择第2行数据
#选择某几行,某几列的数据,返回DataFrame,采用切片
df1.iloc[3:5, 0:2]#利用切片
df1.iloc[[0,1,2],[2,3]]#利用列表作为切片
#显式整行切片
df1.iloc[1:3,:]
#显示整列切片
df1.iloc[:,1:3]
#显示提取标量
df1.iloc[1, 1]
df1.iat[1, 1]

3.3 布尔索引

#单列的值选择数据,返回DataFrame
df1[(df1.A > 0) & (df1.A<0.5)]
#选择 DataFrame 里满足条件的值
df1[df1>0]#不满足条件的值变为NAN
#isin进行筛选
df2[df2["D"].isin(["test","other"])]

3.4 赋值

#用索引自动对齐新增列的数据
s3=pd.Series([1,2,3,4,5,6],index=pd.date_range("20221120",periods=6))
df1["E"]=s3
#按照标签赋值
df1.loc["20221120","A"]=0.1
#按照位置赋值
df1.iloc[0,0]=0.2
#用条件赋值
df1[df1<0]=-df1

四、缺失值

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

#删除包含空值所在的行
df1.iloc[0,0]=np.nan
df1=df1.dropna(how="any")
#填充空值
df1=df1.fillna(value=5)
#提取DataFrame中空值
pd.isna(df1)

五、运算

运算:一般运算排除空缺值

#计算平均值
df1.mean()#按照列
df1.mean(1)#按照行
#apply:调用函数
df1.apply(np.cumsum)#按照行累加
df1.apply(lambda x: x.max() - x.min(),axis=1)#每一行计算最大值-最小值
#直方图:统计Series对象的每个数出现次数
s1.value_counts()

六、merge:合并DataFrame

6.1 concat函数

Concat:连接 Pandas 对象

df3=pd.DataFrame(np.random.randn(10,4))
temp_df1=df3.loc[:,[2,3]]
temp_df2=df3.loc[:,[0]]
res_df=pd.concat([temp_df1,temp_df2],axis=1)#axis=1按照列合并;axis=0按照行合并

6.2 merge函数:数据库join操作

#join:数据库风格链接
left=pd.DataFrame({"key":"test","numLeft":[1,2]})
right=pd.DataFrame({"key":"test","numRight":[3,4]})
res=pd.merge(left,right,on="key")#笛卡尔积

6.3 append追加:追加一行DataFrame

df3=pd.DataFrame(np.random.randn(5,4),columns=list("ABCD"))
df3.append(df3.iloc[3],ignore_index=True)#将第3行的数据追加到df3的最后一行

七、group分组

“group by” 指的是涵盖下列一项或多项步骤的处理流程:
分割:按条件把数据分割成多组;
应用:为每组单独应用函数;
组合:将处理结果组合成一个数据结构。

df5 = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',
                          'foo', 'bar', 'foo', 'foo'],
                    'B': ['one', 'one', 'two', 'three',
                       'two', 'two', 'one', 'three'],
                   'C': np.random.randn(8),
                   'D': np.random.randn(8)})
df5.groupby("A").sum()
df5.groupby(["A","B"]).sum()

八、reshape:重塑

stack函数和unstack函数

#stack 把 DataFrame 列压缩至一层:
tuples = list(zip(*[['bar', 'bar', 'baz', 'baz',
                     'foo', 'foo', 'qux', 'qux'],
                   ['one', 'two', 'one', 'two',
                    'one', 'two', 'one', 'two']]))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B'])
stacked=df.stack()
#stack的逆运算为unstack,默认消除多级索引中最后一级索引
stacked.unstack()

九、数据透视表

df = pd.DataFrame({ 'A':['one', 'one', 'two', 'three']*3,
                    'B':['A','B','C'] * 4,
                    'C':['foo', 'foo', 'foo', 'bar', 'bar' , 'bar'] *2,
                    'D':np.random.randn(12),
                    'E':np.random.randn( 12)})
res=pd.pivot_table(df,index=['A',"B"],values=["D"],aggfunc=[np.sum,np.mean],columns=["C"])

在这里插入图片描述

十、时间序列

# Pandas 频率转换;如:将秒级的数据转换为 5 分钟为频率的数据
rng = pd.date_range('1/1/2012', periods=100, freq='S')
ts = pd.Series(np.random.randint(0, 500, len(rng)), index=rng)
ts.resample('5Min').sum()

#时区转换
rng = pd.date_range('3/6/2012 00:00', periods=5, freq='D')
ts = pd.Series(np.random.randn(len(rng)), rng)
ts_utc = ts.tz_localize('UTC')
ts_utc.tz_convert('US/Eastern')

十一、类别类型

"""
类别:Pandas 的 DataFrame 里可以包含类别数据
"""
df = pd.DataFrame({"id": [1, 2, 3, 4, 5, 6],
                   "raw_grade": ['a', 'b', 'b', 'a', 'a', 'e']})
#将raw_grade中值作为类型生成新的列
df["grade"] = df["raw_grade"].astype("category")
#将category的类型重命名
df["grade"].cat.categories = ["very good", "good", "very bad"]
#重新排序各类别,并添加缺失类
df["grade"] = df["grade"].cat.set_categories(["very bad", "bad", "medium","good", "very good"])
#类别排序:按照类别的优先级排序
df.sort_values(by="grade")
#类别分组统计,当类别为空时,也会显示0
df.groupby("grade").size()

十二、可视化

#Series可视化
ts=pd.Series(np.random.randn(1000),index=pd.date_range("20221125",periods=1000))
ts = ts.cumsum()
#DataFrame可视化
dfPlot=pd.DataFrame(np.random.randn(1000,4),index=pd.date_range("20221125",periods=1000),columns=list("ABCD"))
dfPlot.cumsum().plot()

十三、文件读写

df.to_csv('foo.csv')
pd.read_csv('foo.csv')

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

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

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

相关文章

体系结构31_机群计算机

目前流行的高性能并行计算机系统结构通常可以分成五类&#xff1a;并行向量处理机&#xff08;PVP&#xff09;、对称多处理机&#xff08;SMP&#xff09;、大规模并行处理机&#xff08;MPP&#xff09;、分布共享存储&#xff08;DSM&#xff09;多处理机和机群&#xff08;…

现代密码学导论-13-归约证明

目录 3.3.2 Proofs by Reduction 最后来理一遍&#xff1a; 3.3.2 Proofs by Reduction 如果我们希望证明一个给定的构造&#xff08;例如&#xff0c;加密方案&#xff09;在计算上是安全的&#xff0c;那么——除非该方案在信息理论上是安全的——我们必须依赖于未经证明的…

影像匹配基本算法(摄影测量)

影像匹配实质上是在两幅(或多幅)影像之间识别同名点&#xff0c;它是计算机视觉及数字摄影测量的核心问题。由于早期的研究一般使用相关技术解决影像匹配问题&#xff0c;所以影像匹配常常被称为影像相关。 根据影像匹配过程中匹配基元选择的不同&#xff0c;影像匹配方法可分…

iptables应用大全

iptables四表五链&#xff1a; 1、“四表”是指 iptables 的功能 ——filter 表&#xff08;过滤规则表&#xff09;&#xff1a;控制数据包是否允许进出及转发 ——nat 表&#xff08;地址转换规则表&#xff09;&#xff1a;控制数据包中地址转换 ——mangle&#xff08;修改…

【C++笔试强训】第三十天

&#x1f387;C笔试强训 博客主页&#xff1a;一起去看日落吗分享博主的C刷题日常&#xff0c;大家一起学习博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a;夜色难免微凉&#xff0c;前方必有曙光 &#x1f31e;。 &#x1f4a6;&a…

计算机网络——应用层重点协议【HTTP协议】

目录 1、HTTP是什么 抓包工具Fidder的下载及使用 2、HTTP协议工作过程 3、HTTP协议格式 HTTP请求&#xff1a; HTTP响应&#xff1a; 协议格式总结&#xff1a; 4、HTTP请求 4.1、URL / URI 4.1.1、URL(I)基本格式 4.1.2、URL encode 4.2、认识“方法” 4.2.1、GET…

五、ROS2接口及其使用

接口&#xff0c;即interface&#xff0c;其实是一种规范。 举个例子&#xff0c;不同厂家生产出不同类型的激光雷达&#xff0c;每种雷达的驱动方式&#xff0c;扫描速率都不相同。 当机器人进行导航时&#xff0c;需要激光雷达的扫描数据&#xff0c;假如没有统一接口&#x…

Nginx (6):nginx防盗链配置

先说一下含义&#xff0c;就是想让nginx里的静态资源只供它反向代理连接的内部服务器去访问&#xff0c;其他人想访问&#xff0c;就不给。比如01虚拟机充当nginx服务器&#xff0c;它里面存了很多静态资源&#xff0c;04虚拟机proxy_pass到01虚拟机&#xff0c;想访问它的页面…

Linux--信号量共享内存

1.基础知识&#xff1a; &#xff08;1&#xff09;共享内存是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间的数据传递不再涉及内核&#xff0c;即进程不再通过执行进入内核的系统调用来传递彼此的数据。 &#xff08;2&#xff09;共享…

MySQL浅析之架构概览

MySQL主要分为Server层&#xff0c;跟存储引擎层。 Server层负责“逻辑处理”&#xff0c;包括连接器、分析器、优化器、执行器以及所有内置函数。所有跨存储引擎的功能都在这一层实现&#xff0c;比如存储过程、触发器、视图等。 存储引擎层跟文件系统交互&#xff0c;负责数…

bug探索之路:List<Map>get取出元素却是String?

一、bug初现峥嵘 有一说一我定义的List<Map>对吧&#xff0c;我get(0)取出的元素也应该是Map类型没问题吧。不行&#xff0c;编译器告诉我&#xff0c;java.lang.String cannot be cast to java.util.Map。 这个意思就是说&#xff0c;你这个就是String类型&#xff0c;…

Spring Cloud Gateway夺命连环10问?

这篇文章介绍下微服务中的一个重要角色&#xff1a;网关&#xff0c;对于网关如何选择&#xff0c;由于阿里系暂时未出网关&#xff0c;当然是选择了Spring cloud Gateway&#xff0c;毕竟是亲儿子。 文章目录如下&#xff1a; ​ 编辑切换为居中 添加图片注释&#xff0c;不…

[附源码]java毕业设计智能超市导购系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【科学文献计量】RC.networkBibCoupling()中的参数解释

RC.networkBibCoupling中的参数解释 1 数据2 RC.networkBibCoupling()中的参数解释2.1 测试weighted参数2.2 测试fullInfo参数2.3 测试addCR参数1 数据 使用web of science中的数据,借助metaknowledge库读入到python中,然后截取2020-2021年的数据构建网络 2 RC.networkBib…

CrystalNet ADO.Net VCL for Delphi

CrystalNet ADO.Net VCL for Delphi ADO。用于Delphi的Net DAC被描述为数据库的最快和最可靠的连接&#xff0c;以及使用ADO技术的虚拟和数据库的替代方案。NET在Delphi。它能够为用户和开发人员提供对信息源的数据访问&#xff0c;这些信息源不喜欢SQL Server、Oracle、Vista…

Flutter高仿微信-第42篇-创建群

Flutter高仿微信系列共59篇&#xff0c;从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图&#xff1a; 实现代码&#xff1a; /*** Author : wangning* Email : maoning20080809163.c…

ARM S5PV210的启动过程

一、内存 SRAM 静态内存 特点就是容量小、价格高&#xff0c;优点是不需要软件初始化直接上电就能用。DRAM 动态内存 特点就是容量大、价格低&#xff0c;缺点就是上电后不能直接使用&#xff0c;需要软件初始化后才可以使用。 单片机中&#xff1a;内存需求量小&#xff0c;而…

秉持技术普惠的华为,致力于无处不在的联接

编辑 | 阿冒 设计 | 沐由经济学家托马斯弗里德曼在《世界是平的》一书中曾经指出&#xff1a;“科技和通信领域如闪电般迅速的进步&#xff0c;使全世界的人们可以空前地彼此接近。”然而&#xff0c;在世界各国和地区的政府工作报告中&#xff0c;“数字鸿沟”一词出现的频…

致敬最美逆行者网页设计作品 大学生抗疫感动专题网页设计作业模板 疫情感动人物静态HTML网页模板下载

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【Matlab代码】基于遗传算法和蚂蚁优化算法的路径优化问题

目录 1 概述 2 Matlab代码 3 运行结果 1 概述 在1959年&#xff0c;Dantzing 和 Ramser在经过实验和思考后&#xff0c;首次提出配送车辆路径优化问题。在物流运输中配送是重要的环节&#xff0c;准确选择配送车辆路径能有效缩短运输时间、降低运输成本、满足顾客需求等目的…