Polars基本操作-1

Polars是一个Python数据处理库,介绍可以看官网,也可以看看 Pandas有了平替Polars-CSDN博客

Polars基本操作

1. Series 和 Dataframe

import polars as pl# 创建一个Polars DataFrame
data = {"A": [1, 2, 3, 4, 5],"B": ["a", "b", "c", "d", "e"],"C": [True, False, True, False, True],"D": [1.1, 2.2, 3.3, 4.4, 5.5]
}
df = pl.DataFrame(data)# 创建一个Polars Series
series = pl.Series("E", [6, 7, 8, 9, 10])# 查看DataFrame的前几行
print(df.head())# 添加新的列
df = df.with_column(pl.col("A") * 2, "A_doubled")# 选择特定的列
selected_cols = df.select(["A", "B"])
print(selected_cols)# 过滤数据
filtered_df = df.filter(pl.col("C") == True)
print(filtered_df)# 排序数据
sorted_df = df.sort("D", reverse=True)
print(sorted_df)# Series与DataFrame进行运算
new_series = series + df["A"]
print(new_series)# 将Series添加到DataFrame
df_with_series = df.with_column(new_series.rename("F"))
print(df_with_series)

对比一下实现类似功能的Pandas

import pandas as pd# 创建一个Pandas DataFrame
data = {"A": [1, 2, 3, 4, 5],"B": ["a", "b", "c", "d", "e"],"C": [True, False, True, False, True],"D": [1.1, 2.2, 3.3, 4.4, 5.5]
}
df = pd.DataFrame(data)# 创建一个Pandas Series
series = pd.Series([6, 7, 8, 9, 10], name="E")# 查看DataFrame的前几行
print(df.head())# 添加新的列
df["A_doubled"] = df["A"] * 2# 选择特定的列
selected_cols = df[["A", "B"]]
print(selected_cols)# 过滤数据
filtered_df = df[df["C"] == True]
print(filtered_df)# 排序数据
sorted_df = df.sort_values("D", ascending=False)
print(sorted_df)# Series与DataFrame进行运算
new_series = series + df["A"]
print(new_series)# 将Series添加到DataFrame
df_with_series = df.assign(F=new_series)
print(df_with_series)

2. Expressions
Polars库中的Expressions操作可以用于对DataFrame的列进行复杂的计算和转换。看下面例子:

import polars as pl# 创建一个Polars DataFrame
data = {"A": [1, 2, 3, 4, 5],"B": ["a", "b", "c", "d", "e"],"C": [True, False, True, False, True],"D": [1.1, 2.2, 3.3, 4.4, 5.5]
}
df = pl.DataFrame(data)# 使用Expressions操作创建新的列
expr = pl.when(pl.col("C")) \.then(pl.col("A") * 2) \.otherwise(pl.col("A") / 2)
df = df.with_column(expr.alias("New_Column"))# 查看新的DataFrame
print(df)# 对新的列进行条件筛选
filtered_df = df.filter(pl.col("New_Column") > 3)
print(filtered_df)# 对新的列进行聚合操作
aggregated_df = df.groupby("B").agg(pl.col("New_Column").sum().alias("Sum"))
print(aggregated_df)

上述示例 使用when表达式创建了一个新的列,根据C列的值进行条件判断,如果为True,则将A列的值乘以2,否则将A列的值除以2。然后,对新的列进行了条件筛选和聚合操作。

如果同样功能用pandas恐怕单独很难完成,不过配上numpy,以笔者的粗浅理解,可以这么做:

import pandas as pd
import numpy as np# 创建一个Pandas DataFrame
data = {"A": [1, 2, 3, 4, 5],"B": ["a", "b", "c", "d", "e"],"C": [True, False, True, False, True],"D": [1.1, 2.2, 3.3, 4.4, 5.5]
}
df = pd.DataFrame(data)# 使用numpy的条件函数和apply方法创建新的列
df["New_Column"] = np.where(df["C"], df["A"] * 2, df["A"] / 2)# 查看新的DataFrame
print(df)# 对新的列进行条件筛选
filtered_df = df[df["New_Column"] > 3]
print(filtered_df)# 对新的列进行聚合操作
aggregated_df = df.groupby("B")["New_Column"].sum().reset_index(name="Sum")
print(aggregated_df)

3. 拼接(join)
在Polars中,可以使用join方法进行DataFrame的拼接操作。

import polars as pl# 创建两个Polars DataFrame
data1 = {"A": [1, 2, 3],"B": ["a", "b", "c"],
}
df1 = pl.DataFrame(data1)data2 = {"C": [4, 5, 6],"D": ["d", "e", "f"],
}
df2 = pl.DataFrame(data2)# 使用join方法进行内连接
joined_df = df1.join(df2, left_on="A", right_on="C", how="inner")# 查看拼接后的DataFrame
print(joined_df)

Pandas中,貌似没有join方法,可以用merge来做,看起来差不多

import pandas as pd# 创建两个Pandas DataFrame
data1 = {"A": [1, 2, 3],"B": ["a", "b", "c"],
}
df1 = pd.DataFrame(data1)data2 = {"C": [3, 4, 5],"D": ["c", "d", "e"],
}
df2 = pd.DataFrame(data2)# 使用merge方法进行内连接
joined_df = df1.merge(df2, left_on="A", right_on="C", how="inner")# 查看拼接后的DataFrame
print(joined_df)

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

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

相关文章

Vue项目Nginx代理F5刷新出现404问题解决

一.背景 项目用户反馈,F5刷新后,浏览器出现404。最近公司加强网络管理,我记得之前可以刷新,有点怀疑是跟加强网络管理有关。具体原因没有时间去深度跟踪,先百度找到了解决方法,记录一下。 二.解决办法 主…

mac安装k8s环境

安装kubectl brew install kubectl 确认一下安装的版本 kubectl version --client 如果想在本地运行kubernetes 需要安装minikube brew install minikube 需要注意安装minikube需要本地的docker服务是启动的 启动 默认连接的是google的仓库 minikube start 指定阿…

Flink实时电商数仓之DWS层

需求分析 关键词 统计关键词出现的频率 IK分词 进行分词需要引入IK分词器&#xff0c;使用它时需要引入相关的依赖。它能够将搜索的关键字按照日常的使用习惯进行拆分。比如将苹果iphone 手机&#xff0c;拆分为苹果&#xff0c;iphone, 手机。 <dependency><grou…

如何在uniapp中编写云函数

UniApp 是一个使用 Vue.js 开发所有前端应用的框架&#xff0c;开发者编写一次代码&#xff0c;可发布到iOS、Android、H5以及各种小程序。如果你想在 UniApp 中操作云数据库&#xff0c;你可能需要使用云开发的功能。 以下是在 UniApp 中操作云数据库的一般步骤&#xff1a; …

编程笔记 html5cssjs 011 HTML页面划分

编程笔记 html5&css&js 011 HTML页面划分 HTML的框架、区块和布局是什么&#xff0c;它们之前的关系是怎样的&#xff1f;框架注意 接下来要看一下网页内的划分。通过框架、区块及布局等方式&#xff0c;将网页从一个长方形整体划分为若干个部分&#xff0c;以合理展示…

MIT线性代数笔记-第31讲-线性变换及对应矩阵

目录 31.线性变换及对应矩阵打赏 31.线性变换及对应矩阵 线性变换相当于是矩阵的抽象表示&#xff0c;每个线性变换都对应着一个矩阵 例&#xff1a; 考虑一个变换 T T T&#xff0c;使得平面上的一个向量投影为平面上的另一个向量&#xff0c;即 T : R 2 → R 2 T:R^2 \to R…

用ChatGPT挑选钻石!著名珠宝商推出-珠宝GPT

根据Salesforce最新发布的第五版《互联网购物报告》显示&#xff0c;ChatGPT等生成式AI的出现、快速发展&#xff0c;对零售行业和购物者产生了较大影响。可有效简化业务流程实现降本增效&#xff0c;并改善购物体验。 著名珠宝商James Allen为了积极拥抱生成式AI全面提升销售…

软件测试/测试开发丨Python闭包函数和计时器学习笔记

闭包函数 闭包的内部函数中&#xff0c;对外部作用域的变量进行引用闭包无法修改外部函数的局部变量闭包可以保存当前的运行环境 # 普通方法实现 def output_student(name, gender, grade1):print(F"新学期开学啦&#xff0c;学生{name}是{gender}&#xff0c;他是{grad…

mysql事务的注意

mysql默认自动提交&#xff0c;开启一个事务的时候也就是 set autocommit 0&#xff1b; 关闭了自动提交&#xff0c; 我们有时候会在执行一个操作的时候&#xff0c;显式的进行锁表操作 比如显式的 写锁表&#xff1a; lock table aaa write &#xff1b; 这个时候 需要…

AI时代下,如何看待“算法利维坦”?

ChatGPT的浪潮从2022年袭来后&#xff0c;至今热度不减&#xff0c;呈现出蓬勃发展的趋势。AI家居、医疗、教育、金融、公益、农业、艺术......AI真的已经走进了生活的方方面面&#xff0c;我们仿佛已经进入了AI时代&#xff0c;势不可挡。人工智能水平如此之高&#xff0c;不禁…

websocket 方法封装

export default class WS {constructor(listener) {this.keepAlive 8000; // 心跳检测保活时间this.dogFood 0; // 心跳检测标志位this.watchDog -1; // 心跳检测定时器this.timeout -1; // 连接超时定时器this.ws null;this.url null;this.listener li…

OpenCV-Python(21):OpenCV中的轮廓性质

3.轮廓的性质 本文我们将主要学习基于轮廓来提取一些经常使用的对象特征。 3.1 长宽比 边界矩形的宽高比&#xff1a; x,y,w,h cv2.boundingRect(cnt) aspect_ratio float(w)/h 3.2 Extent 轮廓面积与边界矩形面积的比。 area cv2.contourArea(cnt) x,y,w,h cv2.bounding…

自己动手写自旋锁

自旋锁以其高效闻名。顾名思义&#xff0c;自旋即如果无法成功锁住锁资源则会一直循环尝试锁&#xff0c;这与互斥锁的行为较为不同&#xff08;互斥锁如果无法锁住则会挂起等待&#xff09;。但其特性也决定了其使用场景&#xff0c;对于简单几步即可完成对共享资源操作的场景…

K8S Ingress-Nginx导出TCP端口

ingress-nginx导出TCP端口 Exposing TCP and UDP services - Ingress-Nginx Controllerhttps://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/exposing-tcp-udp-services.md helm upgrade ingress-nginx导出redis 6379端口&#xff08;这种方式最简单&…

王道考研计算机网络——应用层

如何为用户提供服务&#xff1f; CS/P2P 提高域名解析的速度&#xff1a;local name server高速缓存&#xff1a;直接地址映射/低级的域名服务器的地址 本机也有告诉缓存&#xff1a;本机开机的时候从本地域名服务器当中下载域名和地址的对应数据库&#xff0c;放到本地的高…

C语言实现RSA算法加解密

使用c语言实现了RSA加解密算法&#xff0c;可以加解密文件和字符串。 rsa算法原理 选择两个大素数p和q&#xff1b;计算n p * q;计算φ(n)(p-1)(q-1)&#xff1b;选择与φ(n)互素的整数d&#xff1b;由de1 mod φ(n)计算得到e&#xff1b;公钥是(e, n), 私钥是(d, n);假设明…

Microsoft .NET Framework 4.5.1 离线安装包

Microsoft .NET Framework 4.5.1 安装包&#xff1a; 一、离线安装包&#xff1a; 百度网盘 链接: https://pan.baidu.com/s/1IGEYT1vyruY6KFu6XEmerA 提取码: m6ix 离线安装包官方地址&#xff1a; https://www.microsoft.com/zh-cn/download/details.aspx?id40779 二、在…

如何在VSCode搭建ESP-IDF开发ESP32

文章目录 概要安装VScode安装ESP-IDF插件使用官方例程小结 概要 ESP-IDF(Espressif IoT Development Framework) 即乐鑫物联网开发框架&#xff0c;它基于 C/C 语言提供了一个自给自足的 SDK&#xff0c;可为在 Windows、Linux 和 macOS 系统平台上开发 ESP32 应用程序提供工具…

跳跃表原理及实现

一、跳表数据结构 跳表是有序表的一种&#xff0c;其底层是通过链表实现的。链表的特点是插入删除效率高&#xff0c;但是查找节点效率很低&#xff0c;最坏的时间复杂度是O(N)&#xff0c;那么跳表就是解决这一痛点而生的。 为了提高查询效率&#xff0c;我们可以给链表加上索…

天翼云云间高速实现租户跨地域内网互通

一、业务需求 用户业务在襄阳、武汉两个云池部署&#xff0c;希望通过云间高速产品将两个资源池云内资源通过云内专网实现内网互通。要求内网双向互通。 二、测试环境配置 云池vpc名称vpc网段子网内网ip/gweip主机名互联网带宽襄阳ceshi192.168.0.0/16192.168.1.0/24192.168.…