惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
有赞技术团队
有赞技术团队
www.infosecurity-magazine.com
www.infosecurity-magazine.com
大猫的无限游戏
大猫的无限游戏
爱范儿
爱范儿
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Threatpost
V
Visual Studio Blog
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - Franky
人人都是产品经理
人人都是产品经理
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Cloudflare Blog
N
News and Events Feed by Topic
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
AWS News Blog
AWS News Blog
S
SegmentFault 最新的问题
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Spread Privacy
Spread Privacy
J
Java Code Geeks
博客园 - 聂微东
T
Tor Project blog
宝玉的分享
宝玉的分享
博客园 - 叶小钗
Webroot Blog
Webroot Blog
博客园 - 【当耐特】
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Heimdal Security Blog
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
I
InfoQ
Security Latest
Security Latest
Martin Fowler
Martin Fowler
Hacker News: Ask HN
Hacker News: Ask HN
P
Privacy International News Feed
C
CERT Recently Published Vulnerability Notes
Latest news
Latest news
雷峰网
雷峰网
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cisco Blogs
H
Help Net Security
L
LINUX DO - 最新话题
L
LINUX DO - 热门话题

WSH

凑数日子 2026年,大概将会是最后一个人口保持在14亿以上的年份 感谢之人 数字经济中的注意力交易 突然的噩耗 一株洋瓜藤 再见到姑妈 港澳掠影 Miniflux 中文搜索能力增强 慢慢吹~~~轻轻送~~~ 房子梦 探索云南-大理 证书过期导致的错误 过年被追问工资 在秋天开始 水里的鱼 斩断联系1 云南壮族婚恋 我有一颗乳牙 世界的底色是争,抢,偷 无题4 无题3 人来人往 AI见闻 无题2 滇池掠影 WebGIS 三维空间分析之参考超图实现的天际线分析 我原来是个同步单线程 往事如烟1 净月潭之行 一万次悲伤 开源丑闻的碎碎念 提高开发幸福感所做的举措之构建前端基础设施 浏览器标签页进程引发的性能问题 山的那边 想回到过去去去去去去去去去去去去~ WebGIS开发之glsl支持 WebGIS三维空间分析之坡度计算 WebGIS 三维分析之阴影率分析 幸福(或我的女儿叫波兰) 最后一课 Markdown解析高亮及Mermaid 上海掠影 Cesium/QGIS加载图新地球LRC自定义图层 端午粽子 如何清晰地写作 清明扫墓 自编写,自用的开源工具 饮食 AI在GIS领域的实践之QGIS-MCP 燕南飞 WebGIS 三维空间分析之剖面线分析 WebGIS三维开发中的面积量测 WebGIS空间分析之坡向分析的实现 收藏自由-新的书签工具 月夜杂谈 花海,指弹版 三维之Cesium分屏显示 请验证您是真人 GIS数据转换——从点到栅格 自定义「ONE · 一个」订阅源 西湖美人峰徒步 给开源RSS服务应用Miniflux添加「标题翻译」 五一青山湖骑行 将chatGPT集成到微信机器人 动手更换旧手机——google pixel3的电池 Vue组件检测无效属性 ArcGIS复杂插件处理 两件关于博客网站变更的事情 Vue开发个人守则 账户注销后遗症 《纳瓦尔宝典 财富与幸福》前两章的一些摘录 听一首黄歌—Yellow 坏事总是成双 出差消小记 cesium-控高分析 当你孤单你会想起谁 穿越城市-青山湖 Harry Browne关于个人金融安全17条黄金守则—财富之道 批量裁剪矢量数据的几种途径 小而美的软件 想回到过去 热!热!热! 那么近,又那么远——遥望 为什么win笔记本触摸板没有mac好用呢 一只猫 二月份的检讨 自定义Cesium缩放控件 线段简化的几种算法 今天看球了吗? HDF转为GeoTIFF QGIS插件编写 乐高风格地图 基于Python的遥感可视化记录 使用Python提取遥感影像中的土壤线 QQ音乐评论可视化 拆分-应用-联合 阳光打在我身上 淘宝商品信息可视化
接触pandas
WSH · 2021-05-01 · via WSH

目录

    • Series
      • 创建 Series对象
      • 属性
      • 数据访问
        • 下标
        • loc和iloc
    • DataFrame
      • 创建⼆维ndarray对象
    • 属性
      • 数据操作
    • 关于⼴播
      • 规则
    • 算数运算⽅法
    • 摘要
    • ⽂件读写

pandas是Python编程语⾔的⽤于数据操纵和分析的软件库。特别是它提供操纵数值表格和时间序列的数据结构和运算操作。pandas是在三条款BSD许可证下发⾏的⾃由软件,其名字衍⽣⾃术语“⾯板数据”(panel data),这是计量经济学的数据集术语,它包括了对同⼀个体的在多个时期上的观测。

特征

  • DataFrame对象,⽤于数据操纵并具有集成的索引。

  • 在内存中数据结构和不同的⽂件格式之间读写数据的⼯具。

  • 数据对齐和集成的缺失数据处理。

  • 数据集的再成形(reshape)和选择(pivot)。

  • ⼤数据集的基于标签的分⽚、fancy索引和⼦集。

  • 数据结构列的插⼊和删除。

  • 按引擎(engine)分组,允许在数据集上的分离-应⽤-合并(split-applycombine)运算操作。

  • 数据集的归并和连接。

  • 层级轴索引,以低维数据结构⼯作在⾼维数据上。

  • 时间序列-功能:数据范围⽣成和频率转换,移动窗⼝统计,移动窗⼝线性回归,数据转移(shift)和滞后(lag)。 提供数据过滤。

这个库对性能进⾏了⾼度优化,具有关键代码路径⽤Cython或C写成。

——来⾃维基百科:https://zh.wikipedia.org/wiki/Pandas

两种数据类型

Series

定义 由⼀组数据及与之相关的数据索引组成

img

上述定义⼀个序列,指定索引为⼀个由字符构成的列表,可以看到字符和值⼀⼀对应

创建 Series对象

  • Python列表

    指定索引时,索引元素需与列表元素⼀致

  • 标量值

    标量值创建,如未指定索引index,则默认创建⼀个元素

  • 字典

    使⽤字典创建Series对象时,默认其键为索引,当然也可以指定索引,但是如果指定的索引与键不匹配,将⾃动填充NaN值

    image-20231112151748056

  • ndarray对象

    数据值和索引皆可由ndarray创建其他函数,如range()函数

属性

.name 获取数据序列name

.index.name 获取索引name

.index 获取索引

.values 获取数据集

image-20231112151809707

上述代码由字典创建⼀个Series对象,并设置其name,index.name等属性,然后获取其他相应属性

数据访问

下标

Series对象拥有两种索引,⾃动索引和⾃定义索引,它的操作类似数组和字典,可以使⽤切

⽚、下标、.get()等⽅式获取数据集,也可以使⽤保留字in对其遍历

img

注:Series在运算时,会⾃动对其不同索引的数据,可以使⽤df[col][row]⽅法获取指定单个元素数据

loc和iloc

另外可使⽤loc和iloc选择数据

  1. df.loc[val] 选择单列或者多列
  2. df.loc[:,val] 选择单列或者多列
  3. df.loc[val1,val2] 选择⾏列中的⼀部分
  4. df.iloc[where] 根据整数选择单⾏或者多⾏
  5. df.iloc[:,where] 根据整数选择单列或者多列
  6. df.at[label1,label2] 根据标签选择单个标量值

image-20231112152100620

上述创建两个Series对象,后两个索引d,e没有对其,也就是s2中没有,Series会⾃动将其值填充为NaN后进⾏运算,NaN与其他数据运算结果仍未NaN

DataFrame

定义 由共⽤相同索引的⼀组列组成,它是⼀个表格型的数据,每列值类型可以不同,具有列索引和⾏索引,通常⽤于表达⼆维数据,也可表达多维数据

创建⼆维ndarray对象

由⼀维ndaaray、列表、字典、元组或Series构成的字典

  • 当使⽤字典创建DataFrame时,默认外层键作为列索引,内层键作为⾏索引Series对象

  • 其他DataFrame

image-20231112152247849

属性

index.names 返回所有索引名称 index 返回索引 columns 返回列明

数据操作

重新索引 reindex() 可以改变或重排Series和DataFrame索引

参数

  1. index,columns 新的⾏列⾃定义索引
  2. fill_value 填补缺失的值
  3. method 填充⽅法,ffill/bfill:先前/后填充
  4. limit Y⼤填充量
  5. copy bool ⽣成新的对象,False时,新旧相等不复制

image-20231112152321610

set_index() 将⼀个列转变为索引,并创建⼀个新的DataFrame,默认情况下要转变为索引的列将被移除。

img

层次化索引 在⼀个轴上拥有多个索引,简⽽⾔之就是以低维度处理⾼维度数据。指定索引和列头是传⼊多个参数,当参数间标签值相同时,分为同⼀个级别。

image-20231112152420291

重排分级 swaplevel(class1,class2) 返回⼀个交换了级别的对象,但原数据不会改变

img

删除元素 drop()⽅法可删除指定Series和DataFrame列或⾏数据,删除列数据时,参数

axis值为1

img

算数运算

根据⾏列索引,补⻬后运算,默认产⽣浮点数结果

补⻬是缺失项填充NaN

⼆维和⼀维,⼀维和零维间为⼴播运算

采⽤+-*/符号的⼆元运算将产⽣新的对象

img

关于⼴播

指 NumPy 在算术运算期间处理不同形状的数组的能⼒。对数组的算术运算通常在相应的元素上进⾏。如果两个阵列具有完全相同的形状,则这些操作被⽆缝执⾏。如果两个数组的维数不相同,则元素到元素的操作是不可能的。然⽽,在 NumPy 中仍然可以对形状不相似的数组进⾏操作,因为它拥有⼴播功能。较⼩的数组会⼴播到较⼤数组的⼤⼩,以便使它们的形状可兼容。

如果满⾜以下条件之⼀,那么数组被称为可⼴播的。

数组拥有相同形状。

数组拥有相同的维数,且某⼀个或多个维度⻓度为 1 。

数组拥有极少的维度,可以在其前⾯追加⻓度为 1 的维度,使上述条件成⽴

规则

如果两个数组的维度数不相同,那么⼩维度数组的形状将会在Y左边补 1。

如果两个数组的形状在任何⼀个维度上都不匹配,那么数组的形状会沿着维度 为

1 的维度扩展以匹配另外⼀个数组的形状。

如果两个数组的形状在任何⼀个维度上都不匹配并且没有任何⼀个维度等于 1,那么会引发异常。

image-20231112152729412

数组乘以标量也是属于⼴播

image-20231112152754847

算数运算⽅法

add() 加法运算 sub() 减法运算 mul() 乘法运算 div() 除法运算

参数为df,**kwargs

image-20231112152811617

上述df1和df2进⾏相加运算,由于维度不⼀致,df1的缺失项以0填充后进⾏运算

摘要

摘要是有损地提取数据特征的过程,对于⼀组数据,对其进⾏摘要后,形成基本统计(含排序)

分布/累计统计数据特征(相关性,周期……)

数据挖掘(形成知识、经验)

数据排序 sort_index()⽅法可在指定轴上根据索引进⾏排序

参数:

  1. axis 指定轴,0为⾏,1为列
  2. ascending bool 指定升序或降序,默认升序

image-20231112152829523

sort_values() 可在指定轴上根据数值进⾏排序,默认升序参数:

  1. axis 同上
  2. ascencindg 同上
  3. by 指定列/⾏

image-20231112152840108

注意:以上排序会忽略NaN值,将其放置在末尾处

基本统计函数

.sum() 计算数据总和
.count() 计算⾮NaN值的数量
.mean/.median() 计算数据算数平均值、中位数
.var/std() 计算数据⽅差、标准差
.min/max() 计算数据Y⼤、⼩值

默认在0轴操作,适⽤于Series和DataFrame

可传递level级别作分组统计

image-20231112152903355

.argmin/argmax() 计算Y⼤/⼩值所在位置的⾃动索引
.idxmin/max() 计算Y⼤/⼩值所在位置的⾃定义索引

仅适⽤于Series

describe()⽅法可针对0轴上的数据作统计汇总(包含表⼀的所有值)

image-20231112152923706

累计统计

.cumsum() 依次给出前n个的和
.cumprod() 依次给出前n个的积
.cummin() 依次给出前n个的Y⼩值
.cummax() 依次给出前n个的Y⼤值

image-20231112152944542

滚动计算

.rolling(w).sum() 依次计算相邻w个元素的和
.rolling(w).mean() 依次计算相邻w个元素的算术平均数
.rolling(w).var() 依次计算相邻w个元素的⽅差
.rolling(w).std() 依次计算相邻w个元素的标准差
.rolling(w).min/max() 依次计算相邻w个元素的Y⼤/⼩

image-20231112152955730

相关分析

.cov() 计算协⽅差矩阵
.corr() 计算相关系数矩阵,Pearson/Spearman/Kendall等系数

image-20231112153006972

⽂件读写

pandas提供read_csv、read_table、read_fwf以及read_clipboard函数读取数据,但在这

⾥我主要记录如何读取csv⽂件

read_csv() 从url、⽂件、⽂件型对象中读取带有分隔符的数据,默认分隔符为逗号','

参数

  1. path 指定读取⽂件的绝对路径
  2. header 指定列明,为None时pandas将⾃动分配
  3. nrows 指定读取列数
  4. index_col 指定索引,传⼊列表时将此件层次化索引
  5. skiprows 指定跳过⾏
  6. na_values 指定缺失值的字符串,也可⽤字典
  7. chunksize 逐块读取

df.to_csv() 将数据写⼊csv⽂件

参数

  1. path 同上
  2. sep 分隔符
  3. na_rep NaN值替换字符
  4. index bool是否写⼊索引
  5. headr bool是否写⼊列头
  6. cols 指定写⼊列

参考资料

北京理⼯⼤学.嵩天.Python数据分析与展示

https://zh.wikipedia.org/wiki/Pandas

徐敬⼀.利⽤Pyhton进⾏数据分析[M].机械⼯业出版社.2018

Wes McKinney,Pandas Development Team.pandas:powerful Python data nanalysis toolkit[DK].2021-02-09