6-pandas数据读取
前言
一、分组聚合
1.groupby使用:
groupby() 是 pandas 库中用于对数据进行分组操作的一个非常重要的方法。
import pandas as pddata = {'城市': ['北京', '上海', '广州', '北京', '上海', '广州'],'人口': [2154, 2424, 1303, 2154, 2424, 1303],'年龄': [25, 30, 35, 25, 30, 35],'收入': [5000, 6000, 7000, 5000, 6000, 7000]}df2 = pd.DataFrame(data)# 计算每个城市的平均年龄
df2.groupby('城市')['年龄'].mean()# 每个城市的平均收入
df2.groupby('城市')['收入'].mean()# 计算每个城市的总人口
df2.groupby('城市')['人口'].sum()
2. agg方法:
(1)单个函数聚合----如果你只想对某一列应用一个函数,可以直接传递该函数的名字或函数对象给 agg 方法:
eg:agg({'金额': 'sum'})
(2)多个函数聚合----如果你想对某一列应用多个函数,可以传递一个列表给 agg 方法。
eg:agg({'金额': ['sum', 'mean']})
(3)不同的列不同函数----如果你希望对不同的列应用不同的聚合函数,可以在 agg 方法中传入一个字典,字典的键是列名,值是函数或函数列表。
eg:agg({'金额': 'sum', '订单号': 'count'})
data = {'UserId': [101, 102, 103, 104, 105],'Date': ['2023-10-01', '2023-10-01', '2023-10-02', '2023-10-03', '2023-10-03'],'Product': ['笔记本', '鼠标', '键盘', '笔记本', '显示器'],'Quantity': [2, 5, 3, 1, 2],'Amount': [2000, 50, 150, 1000, 400]
}
df3 = pd.DataFrame(data)# 每个产品的销售总额和销售量
df3.groupby('Product').agg({'Amount':'sum','Quantity':'sum'})# 每个用户下单的最早日期和最晚日期
df3.groupby('UserId')['Date'].agg(['min','max'])
二、透视表pivot_table()
透视表用来进行数据汇总和分析
1.引入库
代码如下(示例):
data = {'订单日期': pd.date_range(start='2023-01-01', periods=12, freq='M'),'产品类别': ['电子产品', '家居用品', '服装', '电子产品', '家居用品', '服装', '电子产品', '家居用品', '服装', '电子产品', '家居用品', '服装'],'销售额': [5000, 3000, 2000, 5500, 3200, 2200, 6000, 3500, 2300, 5200, 3100, 2100]
}
df4 = pd.DataFrame(data)# 统计每个月不同产品的销售额
import numpy as nppd.pivot_table(df4,values='销售额',columns='产品类别',index=df4['订单日期'].dt.strftime('%Y %m'),aggfunc=np.sum,fill_value=0)
2.提取日期dt.strftime()
获取年月
代码如下(示例):
df4['订单日期'].dt.strftime('%Y %m')
3.
三、文件读取
1.read_csv
pd.read_csv(r'C:\Users\B\Desktop\数据源\exa5.csv',encoding='ANSI')
pd.read_csv(r'C:\Users\B\Desktop\数据源\exa5.csv',encoding='gbk') # encoding='gbk'设置编码方式
path = r'C:\Users\B\Desktop\数据源\exa5.csv'
pd.read_csv(path,sep='\t',encoding='gbk')
(1)表头设置header
pd.read_csv(path,header=0,encoding='gbk')
(2)设置索引列index_col
pd.read_csv(path,index_col=0,encoding='gbk') # 设置列名下标为0的列,作为索引列
pd.read_csv(path,index_col='股票2',encoding='gbk')
(3)使用哪些列use_cols
pd.read_csv(path,usecols=[0,4,5],encoding='gbk')
(4)日期转换parse_dates
df6 = pd.read_csv(path,parse_dates=['日期'],encoding='gbk')
2.读取文本内容read_table
df8 = pd.read_table(r'C:\Users\B\Desktop\数据源\exa2.txt',sep='\s+') # sep='\s+' 凡是有空格的地方就分割
3.大文件读取
chunksize=1000设置块的大小
df9 = pd.read_csv(r'C:\Users\B\Desktop\数据源\exa5.csv',chunksize=1000,encoding='gbk') # chunksize=1000设置块的大小
data = pd.DataFrame([])
for chunk in df9:chunk = pd.DataFrame(chunk)data = pd.concat([data,chunk])
4.Excel文件读取read_excel
# excel工作薄里有多张表时,要使用sheet_name读取指定表
df10 = pd.read_excel(r'C:\Users\B\Desktop\数据源\exa10.xlsx',sheet_name='股票')df11 = pd.read_excel(r'C:\Users\B\Desktop\数据源\exa10.xlsx',sheet_name='评论')
5.html数据读取read_html
df11 = pd.read_html('https://www.air-level.com/rank')[0]
df12 = pd.read_html('https://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jgcg/index.phtml')[0]
lst = []
for i in range(1,3):url = f'https://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jgcg/index.phtml?p={i}'df = pd.read_html(url)[0]lst.append(df)
data = pd.concat(lst,ignore_index=True)
四、文件保存
保存为csv格式 to_csv
df7.to_csv('test.csv')
df7.to_excel('test2.xls')
df7.to_excel('test2.xlsx',index=False)
data.to_html('hehe.html')
五、拓展
1.内容提取str.extract()
通过正则提取字母
data = {'info': ['John 25', 'Lucy 30', 'Bob 28']}
df7 = pd.DataFrame(data)df7['name'] = df7['info'].str.extract(r'(\w+)')
2.str属性
data = {'姓名': ['lily Smith', 'lucy Johnson', 'jack Brown', 'tom Lee'],'入职日期': ['2022-05-15', '2020-10-01', '2019-07-20', '2023-03-10']}
df = pd.DataFrame(data)# 提取【姓名】里的名
df['姓名'].str.split(' ')[0]#结果['lily', 'Smith']df['姓名'].str.split(' ').str[0] # 批量定位到单元格内部,通过下标取值'''
结果
0 lily
1 lucy
2 jack
3 tom
Name: 姓名, dtype: object
'''# 提取入职年份
df['入职日期'].str[:4]
总结
相关文章:
6-pandas数据读取
前言 一、分组聚合 1.groupby使用: groupby() 是 pandas 库中用于对数据进行分组操作的一个非常重要的方法。 import pandas as pddata {城市: [北京, 上海, 广州, 北京, 上海, 广州],人口: [2154, 2424, 1303, 2154, 2424, 1303],年龄: [25, 30, 35, 25, 30, 3…...
【Logback详解】
Logback详解 Logback 是一个用于 Java 应用的日志框架,它由 Log4j 的创始人 Ceki Glc 创建。Logback 分为三个模块:logback-core、logback-classic 和 logback-access。logback-classic 模块实现了 SLF4J (Simple Logging Facade for Java) API…...

Flume的概念和原理
一、Flume的概念 1、flume 作为 cloudera 开发的实时日志收集系统 2、flume一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种…...

初始nginx
华子目录 nginx介绍nginx功能介绍基础特性web服务相关功能nginx进程结构web请求处理机制 nginx进程间通信nginx启动与http连接建立http处理过程 nginx模块介绍nginx命令演示 nginx介绍 nginx是免费的、开源的、高性能的HTTP和反向代理服务器、邮件代理服务器、以及TCP/UDP代理服…...

vulnhub靶场 Empire LupinOne
使用命令查看靶机ip,访问ip arp-scan -l 使用御剑扫描一下子域名,但是没有获取到什么有用的信息 这是一个Apache文档,没有什么用 紧接着我们尝试暴力破解,这里推荐使用ffuf工具暴力破解目录,kali自带的ffuf扫描速度贼快 参数解释…...

6-Gin 路由详解 --[Gin 框架入门精讲与实战案例]
Gin 是一个用 Go 语言编写的 HTTP Web 框架,以其高性能和简洁的 API 而闻名。它提供了一套强大的路由功能,使得开发者可以轻松地定义 URL 路由规则,并将这些规则映射到具体的处理函数(handler)。以下是关于 Gin 路由的…...

使用Lodash工具库的orderby和sortby进行排序的区别
简介 _.orderBy 和 _.sortBy 是 Lodash 库中用于排序数组的两个函数。 区别 _.orderBy 允许你指定一个或多个属性来排序,并为每个属性指定排序方向(升序或降序)。默认所有值为升序排,指定为"desc" 降序,…...
CSS面试题|[2024-12-24]
1.说一下CSS的盒模型 在HTML页面中的所有元素都可以看成是一个盒子 盒子的组成:内容content、内边距padding、边框border、外边距margin 盒模型的类型: 标准盒模型 margin border padding content IE盒模型 margin content(包括border p…...
flask-admin 在modelview 视图中重写on_model_change 与after_model_change
背景: 当我们在使用flask-admin进行WEB开发时应该第一时间想到的是竟可能使用框架推荐的modelView模型,其次才是自定义模型 baseview,因为只有modelview模型下开发才能最大限度的提高效率。 制作: 1、在modelview视图下框架会通过默认视图…...

Excel粘贴复制不完整的原因以及解决方法
在数据处理和分析的过程中,Excel无疑是不可或缺的工具。然而,在使用Excel进行复制粘贴操作时,有时会遇到粘贴不完整的情况,这可能会让人感到困惑和烦恼。本文将深入探讨Excel粘贴复制不完整的原因、提供解决方案,并给出…...

【深度学习环境】NVIDIA Driver、Cuda和Pytorch(centos9机器,要用到显示器)
文章目录 一 、Anaconda install二、 NIVIDIA driver install三、 Cuda install四、Pytorch install 一 、Anaconda install Step 1 Go to the official website: https://www.anaconda.com/download Input your email and submit. Step 2 Select your version, and click i…...

Cocos Creator 3.8.5 正式发布,更小更快更多平台!
在 Cocos Creator 3.8.5 版本中,我们做了新一轮的优化。 在加载速度、代码裁剪、平台增强等多方面做了优化,提升了开发者体验和游戏性能。 希望能够助 Cocos 开发者们的产品更上一层楼。 一、加载速度优化 1、WASM 模块延迟加载 在早期版本中,…...

Python中构建终端应用界面利器——Blessed模块
在现代开发中,命令行应用已经不再仅仅是一个简单的文本输入输出工具。随着需求的复杂化和用户体验的重视,终端界面也逐渐成为一个不可忽视的设计环节。 如果你曾经尝试过开发终端UI,可能对传统的 print() 或者 input() 函数感到不满足&#…...
Android 15 状态栏闹钟图标不显示问题修复
Android 15 状态栏闹钟图标不显示问题修复 问题描述 在 Android 15 系统中,发现即使设置了闹钟,状态栏也不会显示闹钟图标。这个问题影响了用户及时查看闹钟状态的体验。 问题分析 通过查看 SystemUI 的配置文件,发现在 frameworks/base/packages/SystemUI/res/values/conf…...

数据采集背后的效率革命:如何优化你的爬虫性能
在爬虫技术日益发展的今天,性能优化成为提升数据采集效率的关键。面对日益复杂的网页结构和庞大的数据量,高效的爬虫能够显著降低运行时间和资源成本。本文将围绕爬虫性能优化的核心方法展开讨论,并通过实例对比多进程、多线程以及普通爬取的…...

【Compose multiplatform教程06】用IDEA编译Compose Multiplatform常见问题
当我们从Kotlin Multiplatform Wizard | JetBrains 下载ComposeMultiplatform项目时 会遇到无法正常编译/运行的情况,一般网页和桌面是可以正常编译的, 我这里着重解决如下问题 1:Gradle版本不兼容或者Gradle连接超时 2:JDK版本不兼容 3:Gradle依赖库连…...

《计算机组成及汇编语言原理》阅读笔记:p128-p132
《计算机组成及汇编语言原理》学习第 10 天,p128-p132 总结,总计 5 页。 一、技术总结 1.8088 organization and architecture 8088处理器是16位电脑,寄存器是16位,数据总线(data bus)是8位,地址总线是20位。 (1)g…...

使用 OpenCV 在图像中添加文字
在图像处理任务中,我们经常需要将文本添加到图像中。OpenCV 提供了 cv2.putText() 函数,可以很方便地在图像上绘制文本,支持多种字体、颜色、大小和位置等参数。 本文将详细介绍如何使用 OpenCV 在图像中添加文字,介绍 cv2.putTe…...

实现某海外大型车企(T)Cabin Wi-Fi 需求的概述 - 4
大家好,我是Q,邮箱:1042484520qq.com。 今天我们在上几讲的基础上再扩展下 Cabin Wi-Fi 的功能需求,讲讲如何使能 5G TCU Wi-Fi STA Bridge 模式。 参考: 实现某海外大型车企(T)Cabin Wi-Fi 需求…...
Linux系统:内核态与用户态的深层思考
背景: 我们学习Linux的系统调用经常会遇到一个概念:“内核态和用户态的切换”,一般人只会告诉你说这个切换代价很大,具体是什么情况?为什么需要切换?一定需要切换吗?怎么就会触发切换࿱…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...